|
@ -0,0 +1,772 @@
|
|
|
package com.yihu.jw.hospital.prescription.service;
|
|
|
|
|
|
|
|
|
import com.alibaba.fastjson.JSONArray;
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
|
import com.fasterxml.jackson.databind.ObjectMapper;
|
|
|
import com.yihu.jw.dict.dao.DictHospitalDeptDao;
|
|
|
import com.yihu.jw.doctor.dao.BaseDoctorDao;
|
|
|
import com.yihu.jw.doctor.dao.BaseDoctorHospitalDao;
|
|
|
import com.yihu.jw.doctor.dao.BaseDoctorRoleDao;
|
|
|
import com.yihu.jw.entity.base.patient.BasePatientDO;
|
|
|
import com.yihu.jw.entity.base.wx.BasePatientWechatDo;
|
|
|
import com.yihu.jw.entity.base.wx.WxWechatDO;
|
|
|
import com.yihu.jw.entity.hospital.mapping.PatientMappingDO;
|
|
|
import com.yihu.jw.entity.hospital.prescription.WlyyPrescriptionDO;
|
|
|
import com.yihu.jw.entity.hospital.prescription.WlyyPrescriptionExpressageDO;
|
|
|
import com.yihu.jw.entity.order.BusinessOrderDO;
|
|
|
import com.yihu.jw.hospital.consult.dao.HospitalWaitingRoomDao;
|
|
|
import com.yihu.jw.hospital.dict.WlyyChargeDictDao;
|
|
|
import com.yihu.jw.hospital.dict.WlyyHospitalSysDictDao;
|
|
|
import com.yihu.jw.hospital.doctor.dao.PatientRegisterTimeDao;
|
|
|
import com.yihu.jw.hospital.drugstore.dao.BaseDrugStoreDao;
|
|
|
import com.yihu.jw.hospital.mapping.dao.DoctorMappingDao;
|
|
|
import com.yihu.jw.hospital.mapping.dao.PatientMappingDao;
|
|
|
import com.yihu.jw.hospital.mapping.service.PatientMappingService;
|
|
|
import com.yihu.jw.hospital.prescription.dao.OutpatientDao;
|
|
|
import com.yihu.jw.hospital.prescription.dao.PrescriptionDao;
|
|
|
import com.yihu.jw.hospital.prescription.dao.PrescriptionExpressageDao;
|
|
|
import com.yihu.jw.hospital.prescription.service.entrance.TnyyEntranceService;
|
|
|
import com.yihu.jw.hospital.ykyy.service.YkyyService;
|
|
|
import com.yihu.jw.order.BusinessOrderService;
|
|
|
import com.yihu.jw.order.dao.BusinessOrderDao;
|
|
|
import com.yihu.jw.patient.dao.BasePatientDao;
|
|
|
import com.yihu.jw.patient.dao.BasePatientMedicareCardDao;
|
|
|
import com.yihu.jw.restmodel.hospital.prescription.WlyyOutpatientVO;
|
|
|
import com.yihu.jw.restmodel.hospital.prescription.WlyyPrescriptionVO;
|
|
|
import com.yihu.jw.wechat.dao.BasePatientWechatDao;
|
|
|
import com.yihu.jw.wechat.dao.WechatDao;
|
|
|
import com.yihu.mysql.query.BaseJpaService;
|
|
|
import com.yihu.utils.network.HttpResponse;
|
|
|
import com.yihu.utils.network.HttpUtils;
|
|
|
import org.apache.commons.collections.map.HashedMap;
|
|
|
import org.apache.commons.lang3.StringUtils;
|
|
|
import org.slf4j.Logger;
|
|
|
import org.slf4j.LoggerFactory;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.beans.factory.annotation.Value;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
import java.util.Date;
|
|
|
import java.util.List;
|
|
|
import java.util.Map;
|
|
|
|
|
|
/**
|
|
|
* Created by Trick on 2019/5/17.
|
|
|
*/
|
|
|
@Service
|
|
|
@Transactional
|
|
|
public class TnPrescriptionService extends BaseJpaService<WlyyPrescriptionDO, PrescriptionDao> {
|
|
|
|
|
|
private static final Logger logger = LoggerFactory.getLogger(TnPrescriptionService.class);
|
|
|
|
|
|
|
|
|
@Autowired
|
|
|
private BasePatientDao basePatientDao;
|
|
|
@Autowired
|
|
|
private PrescriptionExpressageDao prescriptionExpressageDao;
|
|
|
@Autowired
|
|
|
private HospitalWaitingRoomDao hospitalWaitingRoomDao;
|
|
|
@Autowired
|
|
|
private PatientMappingService patientMappingService;
|
|
|
@Autowired
|
|
|
private OutpatientDao outpatientDao;
|
|
|
@Autowired
|
|
|
private ObjectMapper objectMapper;
|
|
|
@Autowired
|
|
|
private PatientRegisterTimeDao patientRegisterTimeDao;
|
|
|
@Autowired
|
|
|
private TnyyEntranceService tnyyEntranceService;
|
|
|
@Autowired
|
|
|
private BusinessOrderDao businessOrderDao;
|
|
|
@Autowired
|
|
|
private WechatDao wechatDao;
|
|
|
@Autowired
|
|
|
private BasePatientWechatDao patientWechatDao;
|
|
|
@Autowired
|
|
|
private BusinessOrderService businessOrderService;
|
|
|
@Autowired
|
|
|
private BaseDrugStoreDao baseDrugStoreDao;
|
|
|
@Autowired
|
|
|
private BasePatientMedicareCardDao basePatientMedicareCardDao;
|
|
|
@Autowired
|
|
|
private PatientMappingDao patientMappingDao;
|
|
|
@Autowired
|
|
|
private DictHospitalDeptDao dictHospitalDeptDao;
|
|
|
@Autowired
|
|
|
private BaseDoctorHospitalDao doctorHospitalDao;
|
|
|
@Autowired
|
|
|
private BaseDoctorRoleDao doctorRoleDao;
|
|
|
@Autowired
|
|
|
private DoctorMappingDao doctorMappingDao;
|
|
|
@Autowired
|
|
|
private WlyyChargeDictDao wlyyChargeDictDao;
|
|
|
@Autowired
|
|
|
private WlyyHospitalSysDictDao hospitalSysDictDao;
|
|
|
@Autowired
|
|
|
private BaseDoctorDao doctorDao;
|
|
|
|
|
|
|
|
|
|
|
|
@Value("${demo.flag}")
|
|
|
private boolean demoFlag;
|
|
|
|
|
|
@Value("${wechat.flag}")
|
|
|
private boolean flag;
|
|
|
|
|
|
@Value("${pay.flag}")
|
|
|
private boolean payFlag;
|
|
|
@Value("${wechat.id}")
|
|
|
private String wechatId;
|
|
|
@Autowired
|
|
|
private YkyyService ykyyService;
|
|
|
|
|
|
/**
|
|
|
* 获取居民就诊记录接口
|
|
|
* @param patient
|
|
|
* @param startTime
|
|
|
* @param endTime
|
|
|
* @param demoFlag
|
|
|
* @return
|
|
|
* @throws Exception
|
|
|
*/
|
|
|
public List<WlyyOutpatientVO> findOutpatientList(String patient, String cardNo, String startTime, String endTime, boolean demoFlag, String ksdm)throws Exception{
|
|
|
logger.info("findOutpatientList patient:"+patient);
|
|
|
String patNo ="";
|
|
|
PatientMappingDO patientMappingDO = patientMappingDao.findByPatient(patient);
|
|
|
if(StringUtils.isNotBlank(cardNo)){
|
|
|
BasePatientDO patientDO = basePatientDao.findByIdAndDel(patient,"1");
|
|
|
/*JSONArray res = ykyyEntranceService.findPatientCodeByCardNo(cardNo,false);
|
|
|
if(res !=null&&res.size()>0){
|
|
|
JSONObject object = (JSONObject) res.get(0);
|
|
|
if (object.get("brid")!=null){
|
|
|
patNo = object.get("brid").toString();
|
|
|
}
|
|
|
}*/
|
|
|
if(!StringUtils.isBlank(patNo)){
|
|
|
if (patientMappingDO!=null){
|
|
|
patientMappingDO.setMappingCode(patNo);
|
|
|
}else {
|
|
|
patientMappingDO = new PatientMappingDO();
|
|
|
patientMappingDO.setMappingCode(patNo);
|
|
|
patientMappingDO.setCreateTime(new Date());
|
|
|
patientMappingDO.setSource("1");
|
|
|
patientMappingDO.setPatient(patient);
|
|
|
patientMappingDO.setIdcard(patientDO.getIdcard());
|
|
|
patientMappingDO.setPatientName(patientDO.getName());
|
|
|
}
|
|
|
patientMappingDao.save(patientMappingDO);
|
|
|
}
|
|
|
|
|
|
}else {
|
|
|
if (patientMappingDO!=null){
|
|
|
patNo = patientMappingDO.getMappingCode();
|
|
|
}
|
|
|
}
|
|
|
if(StringUtils.isBlank(patNo)){
|
|
|
return null;
|
|
|
}
|
|
|
logger.info("findOutpatientList patNo "+patNo);
|
|
|
return tnyyEntranceService.BS30025(patNo,null,startTime,endTime,demoFlag,ksdm);
|
|
|
}
|
|
|
|
|
|
|
|
|
/**
|
|
|
*
|
|
|
*/
|
|
|
public List<WlyyPrescriptionVO> findOriginPrescriptionList(String registerSn, String patient, String realOrder, String admNo, boolean demoFlag)throws Exception{
|
|
|
String patNo =patientMappingService.findHisPatNoByPatient(patient,null);
|
|
|
if(StringUtils.isBlank(patNo)){
|
|
|
return null;
|
|
|
}
|
|
|
//BS16017(String REGISTER_SN,String realOrder,String PAT_NO,String ADM_NO,boolean demoFlag) throws Exception {
|
|
|
logger.info("findOriginPrescriptionList: registerSn:"+registerSn+" patient"+patient+" patNo:"+patNo+" realOrder:"+realOrder+" admNo:"+admNo);
|
|
|
return tnyyEntranceService.findMS_CF01And02(admNo,demoFlag);
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 获取居民就诊记录接口
|
|
|
* @param patient
|
|
|
* @return
|
|
|
* @throws Exception
|
|
|
*/
|
|
|
public WlyyOutpatientVO findOutpatientInfo(String patient,String conNo, boolean demoFlag,String ksdm)throws Exception{
|
|
|
logger.info("findOutpatientList patient:"+patient);
|
|
|
String patNo =patientMappingService.findYkyyPatNoByPatient(patient,demoFlag);
|
|
|
if(StringUtils.isBlank(patNo)){
|
|
|
return null;
|
|
|
}
|
|
|
logger.info("findOutpatientList patNo "+patNo);
|
|
|
List<WlyyOutpatientVO> wlyyOutpatientVOS = tnyyEntranceService.BS30025(patNo,conNo,null,null,demoFlag,ksdm);
|
|
|
if (wlyyOutpatientVOS!=null&&wlyyOutpatientVOS.size()!=0){
|
|
|
WlyyOutpatientVO outpatientVO = wlyyOutpatientVOS.get(0);
|
|
|
BasePatientDO patientDO = basePatientDao.findById(patient);
|
|
|
outpatientVO.setSex(patientDO.getSex()+"");
|
|
|
outpatientVO.setBirthday(patientDO.getBirthday());
|
|
|
outpatientVO.setIdcard(patientDO.getIdcard());
|
|
|
return outpatientVO;
|
|
|
}
|
|
|
return null;
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
* 发起图文和视频复诊
|
|
|
*
|
|
|
* @param outpatientJson
|
|
|
* @param expressageJson
|
|
|
* @return
|
|
|
* @throws Exception
|
|
|
*//*
|
|
|
public WlyyOutpatientDO appointmentRevisit(String outpatientJson, String expressageJson, String registerJson, String chargeType) throws Exception {
|
|
|
|
|
|
//1.保存就诊实体
|
|
|
WlyyOutpatientDO outpatientDO = objectMapper.readValue(outpatientJson, WlyyOutpatientDO.class);
|
|
|
BasePatientDO patientDO = basePatientDao.findById(outpatientDO.getPatient());
|
|
|
BaseDoctorDO doctorDO = doctorDao.findById(outpatientDO.getDoctor());
|
|
|
outpatientDO.setMjz("mz");
|
|
|
outpatientDO.setStatus("0");
|
|
|
outpatientDO.setCreateTime(new Date());
|
|
|
outpatientDO.setIdcard(patientDO.getIdcard());
|
|
|
outpatientDO.setCreateTime(new Date());
|
|
|
if (!payFlag){
|
|
|
outpatientDO.setPayStatus(1);
|
|
|
}else {
|
|
|
outpatientDO.setPayStatus(0);
|
|
|
}
|
|
|
if (outpatientDO.getRegisterDate() == null) {
|
|
|
outpatientDO.setRegisterDate(new Date());
|
|
|
}
|
|
|
|
|
|
WlyyOutpatientDO outpatient = outpatientDao.save(outpatientDO);
|
|
|
BusinessOrderDO businessOrderDO = new BusinessOrderDO();
|
|
|
if("3".equalsIgnoreCase(outpatient.getOutpatientType())){
|
|
|
businessOrderDO.setRelationCode(outpatient.getId());
|
|
|
businessOrderDO.setRelationName("专家咨询费");
|
|
|
businessOrderDO.setDescription("专家咨询费");
|
|
|
businessOrderDO.setRematk(outpatient.getDescription());
|
|
|
businessOrderDO.setPatient(outpatient.getConsumer());
|
|
|
businessOrderDO.setPatientName(outpatient.getConsumerName());
|
|
|
businessOrderDO.setDoctor(outpatient.getDoctor());
|
|
|
if (outpatientDO.getType().equalsIgnoreCase("1")) {
|
|
|
businessOrderDO.setOrderType(1);
|
|
|
businessOrderDO.setOrderCategory("1");
|
|
|
} else if (outpatientDO.getType().equalsIgnoreCase("2")) {
|
|
|
businessOrderDO.setOrderType(17);
|
|
|
businessOrderDO.setOrderCategory("1");
|
|
|
}
|
|
|
}else {
|
|
|
businessOrderDO.setRelationCode(outpatient.getId());
|
|
|
businessOrderDO.setRelationName("复诊-诊查费");
|
|
|
businessOrderDO.setDescription("复诊-诊查费");
|
|
|
businessOrderDO.setRematk(outpatient.getDescription());
|
|
|
businessOrderDO.setPatient(outpatient.getConsumer());
|
|
|
businessOrderDO.setPatientName(outpatient.getConsumerName());
|
|
|
businessOrderDO.setDoctor(outpatient.getDoctor());
|
|
|
if (outpatientDO.getType().equalsIgnoreCase("1")) {
|
|
|
businessOrderDO.setOrderType(1);
|
|
|
businessOrderDO.setOrderCategory("2");
|
|
|
} else if (outpatientDO.getType().equalsIgnoreCase("2")) {
|
|
|
businessOrderDO.setOrderType(3);
|
|
|
businessOrderDO.setOrderCategory("3");
|
|
|
}
|
|
|
}
|
|
|
WlyyHospitalSysDictDO hospitalSysDictDO = hospitalSysDictDao.findById("WX_MONEY");
|
|
|
Double price = 0.0;
|
|
|
String chargeType1 = null;
|
|
|
if (doctorDO!=null){
|
|
|
if (outpatient.getOutpatientType().equalsIgnoreCase("1")){
|
|
|
if(outpatientDO.getType().equalsIgnoreCase("1")){
|
|
|
chargeType1 = doctorDO.getTwfzChargeType();
|
|
|
}else if(outpatientDO.getType().equalsIgnoreCase("2")){
|
|
|
chargeType1 = doctorDO.getSpfzChargeType();
|
|
|
}
|
|
|
}else if (outpatient.getOutpatientType().equalsIgnoreCase("3")){
|
|
|
if(outpatientDO.getType().equalsIgnoreCase("1")){
|
|
|
chargeType1 = doctorDO.getTwzxChargeType();
|
|
|
}else if(outpatientDO.getType().equalsIgnoreCase("2")){
|
|
|
chargeType1 = doctorDO.getSpzxChargeType();
|
|
|
}
|
|
|
}else if (outpatient.getOutpatientType().equalsIgnoreCase("2")){
|
|
|
chargeType1 = doctorDO.getXtfzChargeType();
|
|
|
}
|
|
|
if(doctorDO!=null){
|
|
|
if (StringUtils.isNoneBlank(chargeType1)){
|
|
|
WlyyChargeDictDO chargeDictDO = wlyyChargeDictDao.findByChargeType(chargeType1);
|
|
|
if (chargeDictDO!=null){
|
|
|
price = chargeDictDO.getReqFee();
|
|
|
}else {
|
|
|
price = Double.parseDouble(hospitalSysDictDO.getDictValue());
|
|
|
}
|
|
|
}
|
|
|
}else {
|
|
|
price = Double.parseDouble(hospitalSysDictDO.getDictValue());
|
|
|
}
|
|
|
}else {
|
|
|
if (StringUtils.isNoneBlank(chargeType)){
|
|
|
WlyyChargeDictDO chargeDictDO = wlyyChargeDictDao.findByChargeType(chargeType);
|
|
|
if (chargeDictDO!=null){
|
|
|
price = chargeDictDO.getReqFee();
|
|
|
}else {
|
|
|
price = Double.parseDouble(hospitalSysDictDO.getDictValue());
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
*//*if (doctorDO != null && StringUtils.isNoneBlank(doctorDO.getFee())) {
|
|
|
price = Double.parseDouble(doctorDO.getFee());
|
|
|
}else {
|
|
|
price = Double.parseDouble(hospitalSysDictDO.getDictValue());
|
|
|
}*//*
|
|
|
if (price == 0.0) {
|
|
|
outpatientDO.setPayStatus(1);
|
|
|
} else {
|
|
|
outpatientDO.setPayStatus(0);
|
|
|
}
|
|
|
|
|
|
businessOrderDO.setPayPrice(price*100);
|
|
|
|
|
|
|
|
|
if (!flag){
|
|
|
businessOrderDO = businessOrderService.saveOrder(businessOrderDO);
|
|
|
}
|
|
|
|
|
|
WlyyPatientRegisterTimeDO registerTimeDO = null;
|
|
|
|
|
|
try {
|
|
|
//如果是视频预约咨询
|
|
|
if (StringUtils.isNotBlank(registerJson)) {
|
|
|
registerTimeDO = objectMapper.readValue(registerJson, WlyyPatientRegisterTimeDO.class);
|
|
|
registerTimeDO.setOutpatientId(outpatient.getId());
|
|
|
registerTimeDO.setCreateTime(new Date());
|
|
|
patientRegisterTimeDao.save(registerTimeDO);
|
|
|
}
|
|
|
} catch (Exception e) {
|
|
|
throw new RuntimeException("号源已经被预约,请选择其他号源");
|
|
|
}
|
|
|
if ("3".equalsIgnoreCase(outpatient.getOutpatientType())){
|
|
|
|
|
|
}else {
|
|
|
//2.物流信息
|
|
|
WlyyPrescriptionExpressageDO expressageDO = objectMapper.readValue(expressageJson, WlyyPrescriptionExpressageDO.class);
|
|
|
expressageDO.setDel(1);
|
|
|
expressageDO.setCreateTime(new Date());
|
|
|
expressageDO.setOutpatientId(outpatient.getId());
|
|
|
prescriptionExpressageDao.save(expressageDO);
|
|
|
|
|
|
if (0==expressageDO.getOneselfPickupFlg()){
|
|
|
if("xm_ykyy_wx".equalsIgnoreCase(wechatId)){
|
|
|
String drugCode= expressageDO.getHospitalCode()==null?"5550":expressageDO.getHospitalCode();
|
|
|
expressageDO.setHospitalCode(drugCode);
|
|
|
}
|
|
|
System.out.println("进入物流信息");
|
|
|
expressageDO.setDel(1);
|
|
|
expressageDO.setCreateTime(new Date());
|
|
|
expressageDO.setOutpatientId(outpatient.getId());
|
|
|
prescriptionExpressageDao.save(expressageDO);
|
|
|
}else {
|
|
|
System.out.println("写入自取信息");
|
|
|
String drugStoreCode = expressageDO.getHospitalCode();
|
|
|
BaseDrugStoreDO baseDrugStoreDO = baseDrugStoreDao.findDrugByid(drugStoreCode);
|
|
|
if (null!=baseDrugStoreDO){
|
|
|
expressageDO.setCityCode(baseDrugStoreDO.getCityCode());
|
|
|
expressageDO.setCityName(baseDrugStoreDO.getCityName());
|
|
|
expressageDO.setProvinceCode(baseDrugStoreDO.getProvinceCode());
|
|
|
expressageDO.setProvinceName(baseDrugStoreDO.getProvinceName());
|
|
|
expressageDO.setTownCode(baseDrugStoreDO.getTownCode());
|
|
|
expressageDO.setTownName(baseDrugStoreDO.getTownName());
|
|
|
expressageDO.setHospitalCode(baseDrugStoreDO.getDrugStoreCode());
|
|
|
expressageDO.setHospitalName(baseDrugStoreDO.getHospitalName());
|
|
|
expressageDO.setHospitalAddress(baseDrugStoreDO.getAddress());
|
|
|
}
|
|
|
expressageDO.setDel(1);
|
|
|
expressageDO.setCreateTime(new Date());
|
|
|
expressageDO.setOutpatientId(outpatient.getId());
|
|
|
prescriptionExpressageDao.save(expressageDO);
|
|
|
}
|
|
|
}
|
|
|
//3.创建候诊室
|
|
|
createRoom(outpatient, chargeType);
|
|
|
return outpatient;
|
|
|
}
|
|
|
|
|
|
|
|
|
*//**
|
|
|
* 创建候诊室
|
|
|
*
|
|
|
* @param outpatientDO
|
|
|
* @return
|
|
|
*//*
|
|
|
public Boolean createRoom(WlyyOutpatientDO outpatientDO, String chargeType) {
|
|
|
|
|
|
WlyyHospitalWaitingRoomDO waitingRoom = new WlyyHospitalWaitingRoomDO();
|
|
|
|
|
|
waitingRoom.setDept(outpatientDO.getDept());
|
|
|
waitingRoom.setDeptName(outpatientDO.getDeptName());
|
|
|
waitingRoom.setHospital(outpatientDO.getHospital());
|
|
|
waitingRoom.setHospitalName(outpatientDO.getHospitalName());
|
|
|
|
|
|
//是否是有协同门诊医生
|
|
|
if (StringUtils.isNotBlank(outpatientDO.getGeneralDoctor())) {
|
|
|
waitingRoom.setGeneralDoctor(outpatientDO.getGeneralDoctor());
|
|
|
waitingRoom.setGeneralDoctorName(outpatientDO.getGeneralDoctorName());
|
|
|
}
|
|
|
|
|
|
waitingRoom.setPatientId(outpatientDO.getConsumer());
|
|
|
waitingRoom.setPatientName(outpatientDO.getConsumerName());
|
|
|
waitingRoom.setReservationTime(outpatientDO.getRegisterDate());
|
|
|
waitingRoom.setVisitStatus(0);
|
|
|
//设置复诊类型
|
|
|
waitingRoom.setReservationType(StringUtils.isNotBlank(outpatientDO.getOutpatientType()) ? Integer.parseInt(outpatientDO.getOutpatientType()) : 1);
|
|
|
|
|
|
waitingRoom.setSort(0);
|
|
|
waitingRoom.setConsultType(Integer.parseInt(outpatientDO.getType()));
|
|
|
if (StringUtils.isNotBlank(outpatientDO.getDoctor())) {
|
|
|
waitingRoom.setDoctor(outpatientDO.getDoctor());
|
|
|
waitingRoom.setDoctorName(outpatientDO.getDoctorName());
|
|
|
}
|
|
|
waitingRoom.setOutpatientId(outpatientDO.getId());
|
|
|
waitingRoom.setCreateTime(new Date());
|
|
|
|
|
|
if (StringUtils.isNotBlank(chargeType)) {
|
|
|
waitingRoom.setChargeType(chargeType);
|
|
|
}
|
|
|
|
|
|
hospitalWaitingRoomDao.save(waitingRoom);
|
|
|
|
|
|
return true;
|
|
|
}*/
|
|
|
|
|
|
|
|
|
/**
|
|
|
* 获取药品
|
|
|
*
|
|
|
`prescription_id` varchar(50) DEFAULT NULL COMMENT '处方code 关联表wlyy_prescription code',
|
|
|
`drug_no` varchar(50) DEFAULT NULL COMMENT '药品编号',
|
|
|
`drug_name` varchar(50) DEFAULT NULL COMMENT '药品名称',
|
|
|
`disp_deposite` varchar(50) DEFAULT NULL COMMENT '库房号',
|
|
|
`dosage` varchar(50) DEFAULT NULL COMMENT '药量',
|
|
|
`quantity` varchar(50) DEFAULT NULL COMMENT '数量',
|
|
|
`unit` varchar(50) DEFAULT NULL COMMENT '用量单位',
|
|
|
`unit_name` varchar(50) DEFAULT NULL COMMENT '用量单位中文',
|
|
|
`pack_unit` varchar(50) DEFAULT NULL COMMENT '包装单位',
|
|
|
`pack_unit_name` varchar(50) DEFAULT NULL COMMENT '包装单位名称',
|
|
|
`usage_code` varchar(50) DEFAULT NULL COMMENT '频率code',
|
|
|
`usage_name` varchar(50) DEFAULT NULL COMMENT '频次名称',
|
|
|
`supply_code` varchar(50) DEFAULT NULL COMMENT '用法',
|
|
|
`supply_name` varchar(50) DEFAULT NULL COMMENT '用法名称',
|
|
|
`days` varchar(50) DEFAULT NULL COMMENT '天数',
|
|
|
`frequency` varchar(50) DEFAULT NULL COMMENT '组号',
|
|
|
`serial` varchar(50) DEFAULT NULL COMMENT '药品序列号',
|
|
|
`group_no` varchar(50) DEFAULT NULL COMMENT '库房号',
|
|
|
`specification` varchar(50) DEFAULT NULL COMMENT '规格(10mgx10片/盒)',
|
|
|
`pack_retprice` double(10,4) DEFAULT NULL COMMENT '包装价格',
|
|
|
`herbal_count` varchar(10) DEFAULT NULL COMMENT '草药数量',
|
|
|
`post_count` varchar(10) DEFAULT NULL COMMENT '贴数',
|
|
|
`comm` varchar(50) DEFAULT NULL COMMENT '中药用法',
|
|
|
`del` int(2) DEFAULT '1' COMMENT '1可用 0删除',
|
|
|
`drug_place` varchar(100) DEFAULT NULL COMMENT '药品产地',
|
|
|
`pack_quantity` int(11) DEFAULT NULL COMMENT '包装数量',
|
|
|
PRIMARY KEY (`id`),
|
|
|
*/
|
|
|
public JSONArray getDrugDictionary(String chargeCode, String pyKey, String winNo, String groupNo,String oupatientId) throws Exception {
|
|
|
String hisCode = "";
|
|
|
if (StringUtils.isNotEmpty(oupatientId)){
|
|
|
List<WlyyPrescriptionExpressageDO> wlyyPrescriptionExpressageDOS = prescriptionExpressageDao.findByOutpatientIdAndOneSelfPick(oupatientId);
|
|
|
if (wlyyPrescriptionExpressageDOS.size()>0){
|
|
|
hisCode = wlyyPrescriptionExpressageDOS.get(0).getHospitalCode();
|
|
|
}
|
|
|
}
|
|
|
JSONArray mapList = new JSONArray();
|
|
|
mapList = tnyyEntranceService.findTnYpxx(chargeCode, null, null, pyKey,hisCode);
|
|
|
JSONArray array = new JSONArray();
|
|
|
for (int i=0;i<mapList.size();i++){
|
|
|
JSONObject map = mapList.getJSONObject(i);
|
|
|
JSONObject object = new JSONObject();
|
|
|
object.put("charge_code",map.get("YPXH"));
|
|
|
object.put("drugname",map.get("YPMC"));
|
|
|
object.put("specification",map.get("YPGG"));
|
|
|
object.put("pack_unit_name",map.get("JLDW"));
|
|
|
object.put("yfdw",map.get("YFDW"));
|
|
|
object.put("pack_size",map.get("YFBZ"));
|
|
|
/* object.put("yfsx",map.get("yfsx"));//药房属性*/
|
|
|
object.put("ypjl",map.get("YPJL"));//药剂量
|
|
|
object.put("jldw",map.get("JLDW"));//剂量单位
|
|
|
object.put("py_code",map.get("PYDM"));//拼音代码
|
|
|
object.put("fyfs",map.get("FYFS"));//发药方式
|
|
|
object.put("supply_code",map.get("GYFF"));//给药方式
|
|
|
object.put("yfzf",map.get("YFZF"));//药房作废
|
|
|
object.put("supply_name",map.get("GYFF"));//给药方式名称
|
|
|
/* object.put("ybfl",map.get("ybfl"));//医保分类*/
|
|
|
object.put("retprice",map.get("LSJG"));//零售价格
|
|
|
object.put("kcsl",map.get("KCSL"));//库存
|
|
|
object.put("ypcd",map.get("YPCD"));//产地
|
|
|
object.put("zfpb",map.get("ZFPB"));//作废判别
|
|
|
object.put("jbywbz",map.get("jbywbz"));//基本药物标志
|
|
|
/* object.put("ydyp",map.get("ydyp"));//药店药品
|
|
|
object.put("ypmc2",map.get("ypmc2"));//药品名称2
|
|
|
object.put("t",map.get("pzwh"));//药品批文*/
|
|
|
array.add(object);
|
|
|
}
|
|
|
return array;
|
|
|
}
|
|
|
|
|
|
|
|
|
/**
|
|
|
* 获取药品用法
|
|
|
*/
|
|
|
public JSONArray getDrugUse(String drugNo, String pyKey,boolean demoFlag) throws Exception {
|
|
|
|
|
|
JSONArray mapList = new JSONArray();
|
|
|
mapList = tnyyEntranceService.findYpyf(pyKey);
|
|
|
JSONArray array = new JSONArray();
|
|
|
for (int i=0;i<mapList.size();i++){
|
|
|
JSONObject map = mapList.getJSONObject(i);
|
|
|
JSONObject object = new JSONObject();
|
|
|
object.put("supply_code",map.get("YPYF"));
|
|
|
object.put("supply_name",map.get("XMMC"));
|
|
|
object.put("ypyf",map.get("YPYF"));
|
|
|
array.add(object);
|
|
|
}
|
|
|
return array;
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 医院频次
|
|
|
*
|
|
|
* @return
|
|
|
*/
|
|
|
public JSONArray getDrugFrequency(boolean demoFlag) throws Exception {
|
|
|
JSONArray mapList = new JSONArray();
|
|
|
mapList= tnyyEntranceService.findSypc(null);
|
|
|
JSONArray array = new JSONArray();
|
|
|
for (int i=0;i<mapList.size();i++){
|
|
|
JSONObject map = mapList.getJSONObject(i);
|
|
|
JSONObject object = new JSONObject();
|
|
|
object.put("FREQ_CODE",map.get("PCBM"));
|
|
|
object.put("FREQ_NAME",map.get("PCMC"));
|
|
|
object.put("MRSC",map.get("MRCS"));
|
|
|
array.add(object);
|
|
|
}
|
|
|
return array;
|
|
|
}
|
|
|
|
|
|
/* *//**
|
|
|
* 获取检查检验
|
|
|
* "action": "select",
|
|
|
"name": "丙型肝炎RNA测定(全自动荧光定量分析)",
|
|
|
"charge_unit": "项",
|
|
|
"charge_amount": "150",
|
|
|
"py_code": "BXGYRNAC",
|
|
|
"d_code": "GGEORNAI",
|
|
|
"code": "393333",
|
|
|
"exec_unit": "2160000",
|
|
|
"win_no": "0",
|
|
|
"exec_unit_name": "检验科"
|
|
|
*
|
|
|
* @return
|
|
|
*//*
|
|
|
public JSONArray getInspectionDictionary(String pyKey, String codes, String winNo) throws Exception {
|
|
|
JSONArray mapList = ykyyEntranceService.findYkJcxm(pyKey);
|
|
|
JSONArray array = new JSONArray();
|
|
|
for (int i=0;i<mapList.size();i++){
|
|
|
JSONObject map = mapList.getJSONObject(i);
|
|
|
JSONObject object = new JSONObject();
|
|
|
object.put("name",map.get("xmmc"));
|
|
|
object.put("code",map.get("zlxmid"));
|
|
|
object.put("py_code",map.get("pydm"));
|
|
|
object.put("wbdm",map.get("wbdm"));
|
|
|
object.put("jxdm",map.get("jxdm"));
|
|
|
object.put("qtdm",map.get("qtdm"));
|
|
|
object.put("ydyzlb",map.get("ydyzlb"));
|
|
|
object.put("mlbh",map.get("mlbh"));
|
|
|
object.put("zxpc",map.get("zxpc"));
|
|
|
object.put("jfpc",map.get("jfpc"));
|
|
|
object.put("jsfs",map.get("jsfs"));
|
|
|
object.put("jszq",map.get("jszq"));
|
|
|
object.put("charge_unit",map.get("jsdw"));
|
|
|
object.put("syxb",map.get("syxb"));
|
|
|
object.put("mxsy",map.get("mxsy"));
|
|
|
object.put("zysy",map.get("zysy"));//住院使用
|
|
|
object.put("tjsy",map.get("tjsy"));
|
|
|
object.put("zxlb",map.get("zxlb"));//执行类别
|
|
|
object.put("exec_unit",map.get("zxks"));//执行科室
|
|
|
object.put("zxgzid",map.get("zxgzid"));//执行规则
|
|
|
object.put("ywzx",map.get("ywzx"));
|
|
|
object.put("zxap",map.get("zxap"));
|
|
|
object.put("cpzx",map.get("cpzx"));
|
|
|
object.put("szzx",map.get("szzx"));
|
|
|
object.put("jjlx",map.get("jjlx"));
|
|
|
object.put("ycxzsl",map.get("ycxzsl"));
|
|
|
object.put("yblx",map.get("yblx"));
|
|
|
object.put("zxbz",map.get("zxbz"));
|
|
|
object.put("txid",map.get("txid"));
|
|
|
object.put("bgbh",map.get("bgbh"));
|
|
|
object.put("czsy",map.get("czsy"));
|
|
|
object.put("lzsy",map.get("lzsy"));
|
|
|
object.put("lccs",map.get("lccs"));
|
|
|
object.put("bwbz",map.get("bwbz"));
|
|
|
object.put("yblb",map.get("yblb"));
|
|
|
array.add(object);
|
|
|
}
|
|
|
return array;
|
|
|
}*/
|
|
|
|
|
|
|
|
|
/**
|
|
|
* 获取卡记录
|
|
|
* "PAT_NO": "P5616242-0 ",
|
|
|
"CARD_NO": "D40136791",
|
|
|
"CARD_STAT": "旧卡停用",
|
|
|
"OP_DATE": "2011-09-27 15:35:57",
|
|
|
"CARD_TYPE": "2",
|
|
|
"CARD_TYPE_NAME": "社保卡",
|
|
|
"social_no": "350211198411053024"
|
|
|
* @param
|
|
|
* @return
|
|
|
* @throws Exception
|
|
|
*//*
|
|
|
public JSONArray findPatientCard(String patient)throws Exception{
|
|
|
BasePatientDO patientDO = basePatientDao.findById(patient);
|
|
|
if (patientDO!=null){
|
|
|
//JSONArray res = ykyyEntranceService.findHisCard(patientDO.getIdcard(),demoFlag);
|
|
|
JSONArray rs = new JSONArray();
|
|
|
*//*if(res !=null){
|
|
|
for (int i =0;i<res.size();i++){
|
|
|
JSONObject object = (JSONObject) res.get(i);
|
|
|
JSONObject jsonObject = new JSONObject();
|
|
|
jsonObject.put("PAT_NO",object.get("pat_no"));
|
|
|
jsonObject.put("CARD_NO",object.get("card_no"));
|
|
|
jsonObject.put("OP_DATE",object.get("op_date"));
|
|
|
jsonObject.put("CARD_STAT",object.get("card_stat"));
|
|
|
jsonObject.put("CARD_TYPE",object.get("card_type"));
|
|
|
jsonObject.put("CARD_TYPE_NAME",object.get("card_type_name"));
|
|
|
rs.add(jsonObject);
|
|
|
}
|
|
|
}*//*
|
|
|
List<PatientMedicareCardDO> list = basePatientMedicareCardDao.findByPatientCode(patientDO.getId());
|
|
|
PatientMappingDO patientMappingDO = patientMappingDao.findByPatient(patientDO.getId());
|
|
|
if (list!=null&&list.size()>0){
|
|
|
for (PatientMedicareCardDO patientMedicareCardDO :list){
|
|
|
JSONObject jsonObject = new JSONObject();
|
|
|
if (null!=patientMappingDO){
|
|
|
jsonObject.put("PAT_NO",patientMappingDO.getMappingCode());
|
|
|
}else {
|
|
|
JSONArray res = ykyyEntranceService.findPatientCodeByCardNo(patientMedicareCardDO.getCode(),false);
|
|
|
patientMappingDO = new PatientMappingDO();
|
|
|
if(res !=null&&res.size()>0){
|
|
|
JSONObject object = (JSONObject) res.get(0);
|
|
|
if (object.get("pat_no")!=null){
|
|
|
jsonObject.put("PAT_NO",object.get("pat_no").toString());
|
|
|
}
|
|
|
if (object.get("brid")!=null){
|
|
|
jsonObject.put("BRID",object.get("brid").toString());
|
|
|
patientMappingDO.setMappingCode(object.get("brid").toString());
|
|
|
patientMappingDO.setPatient(patient);
|
|
|
patientMappingDO.setPatientName(patientDO.getName());
|
|
|
patientMappingDO.setIdcard(patientDO.getIdcard());
|
|
|
patientMappingDO.setSource("1");
|
|
|
patientMappingDO.setCreateTime(new Date());
|
|
|
patientMappingDao.save(patientMappingDO);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
jsonObject.put("CARD_NO",patientMedicareCardDO.getCode());
|
|
|
jsonObject.put("OP_DATE","");
|
|
|
jsonObject.put("CARD_STAT","正常");
|
|
|
jsonObject.put("CARD_TYPE","2");
|
|
|
jsonObject.put("CARD_TYPE_NAME","社保卡");
|
|
|
rs.add(jsonObject);
|
|
|
}
|
|
|
return rs;
|
|
|
}
|
|
|
}
|
|
|
return null;
|
|
|
|
|
|
}*/
|
|
|
|
|
|
|
|
|
public JSONArray synYkICD10() throws Exception {
|
|
|
JSONArray jsonArray = tnyyEntranceService.synYkICD10();
|
|
|
return jsonArray;
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
*
|
|
|
* 处方下单
|
|
|
*
|
|
|
* @return
|
|
|
* @throws Exception
|
|
|
*/
|
|
|
public Map<String,Object> savePrescriptionOrder(String code,Double price,String tradeType,String wechatId,String appletCode) throws Exception {
|
|
|
WxWechatDO wxWechatDO = wechatDao.findById(wechatId);
|
|
|
Map<String,Object> map = new HashedMap();
|
|
|
if(wxWechatDO==null){
|
|
|
throw new Exception("can't find wechat:the wxId is "+wechatId);
|
|
|
}
|
|
|
BusinessOrderDO businessOrderDO = businessOrderDao.selectByRelationCode(code);
|
|
|
if (businessOrderDO!=null){
|
|
|
List<BasePatientWechatDo> patientWechatDos = patientWechatDao.findByWechatIdAndPatientId(wechatId,businessOrderDO.getPatient());
|
|
|
String openId = "";
|
|
|
if (StringUtils.isNotBlank(appletCode)){
|
|
|
logger.info("appletCode不为空"+appletCode);
|
|
|
Map<String,Object> objectMap = checkApplets(appletCode,wxWechatDO.getApplets(),wxWechatDO.getAppletsSecret());
|
|
|
if (objectMap!=null){
|
|
|
openId = objectMap.get("openid").toString();
|
|
|
logger.info("appletCode"+appletCode);
|
|
|
logger.info("openid"+openId);
|
|
|
}
|
|
|
}else {
|
|
|
logger.info("appletCode为空"+appletCode);
|
|
|
List<BasePatientWechatDo> patientWechatDo = patientWechatDao.findByWechatIdAndPatientId(wechatId,businessOrderDO.getPatient());
|
|
|
if (patientWechatDo!=null&&patientWechatDo.size()!=0){
|
|
|
openId = patientWechatDo.get(0).getOpenid();
|
|
|
}
|
|
|
}
|
|
|
|
|
|
String url = wxWechatDO.getBaseUrl();
|
|
|
String notifyUrl =url;
|
|
|
String totalFee =businessOrderDO.getPayPrice().intValue()+"";
|
|
|
map = businessOrderService.unifiedorder(wechatId,businessOrderDO.getDescription(),totalFee, tradeType,openId,businessOrderDO.getOrderNo(),notifyUrl,businessOrderDO.getPatient());
|
|
|
}
|
|
|
return map;
|
|
|
}
|
|
|
|
|
|
public Map<String, Object> checkApplets(String code,String appid,String appSecret) throws Exception {
|
|
|
HttpUtils httpUtils = new HttpUtils();
|
|
|
Map<String, Object> param = new HashedMap();
|
|
|
param.put("appid", appid);
|
|
|
param.put("secret", appSecret);
|
|
|
param.put("js_code", code);
|
|
|
param.put("grant_type", "authorization_code");
|
|
|
|
|
|
HttpResponse response = httpUtils.doGet("https://api.weixin.qq.com/sns/jscode2session", param);
|
|
|
org.json.JSONObject rs = new org.json.JSONObject(response.getContent());
|
|
|
Map<String, Object> res = new HashedMap();
|
|
|
logger.info("checkApplets:"+response.getContent());
|
|
|
if (rs.has("openid")){
|
|
|
res.put("openid", rs.getString("openid"));
|
|
|
res.put("sessionKey", rs.getString("session_key"));
|
|
|
}
|
|
|
return res;
|
|
|
}
|
|
|
|
|
|
|
|
|
/**
|
|
|
* 获取诊断
|
|
|
*
|
|
|
* @param pyKey
|
|
|
* @return
|
|
|
* @throws Exception
|
|
|
*/
|
|
|
public JSONArray getICD10(String pyKey,boolean demoFlag) throws Exception {
|
|
|
JSONArray array = tnyyEntranceService.findIcd10(pyKey,demoFlag);
|
|
|
return array;
|
|
|
}
|
|
|
|
|
|
|
|
|
}
|