Bladeren bron

代码修改

LAPTOP-KB9HII50\70708 3 jaren geleden
bovenliggende
commit
a189cf7e4a

+ 133 - 4
business/base-service/src/main/java/com/yihu/jw/healthCare/service/HealthCareService.java

@ -1,22 +1,33 @@
package com.yihu.jw.healthCare.service;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.yihu.jw.doctor.dao.BaseDoctorDao;
import com.yihu.jw.doctor.dao.BaseDoctorHospitalDao;
import com.yihu.jw.doctor.service.BaseDoctorHosService;
import com.yihu.jw.entity.base.doctor.BaseDoctorDO;
import com.yihu.jw.entity.base.doctor.BaseDoctorHospitalDO;
import com.yihu.jw.entity.base.patient.BasePatientDO;
import com.yihu.jw.entity.hospital.consult.WlyyHospitalSysDictDO;
import com.yihu.jw.entity.hospital.httplog.YlzHttpLogDO;
import com.yihu.jw.entity.hospital.mapping.DoctorMappingDO;
import com.yihu.jw.entity.hospital.prescription.WlyyOutpatientDO;
import com.yihu.jw.entity.hospital.prescription.WlyyPrescriptionDO;
import com.yihu.jw.healthCare.utils.AES;
import com.yihu.jw.healthCare.utils.MD5;
import com.yihu.jw.healthCare.utils.SafeUtil;
import com.yihu.jw.healthCare.utils.StringUtils;
import com.yihu.jw.hospital.dict.WlyyHospitalSysDictDao;
import com.yihu.jw.hospital.httplog.dao.YlzHttpLogDao;
import com.yihu.jw.hospital.mapping.dao.DoctorMappingDao;
import com.yihu.jw.hospital.prescription.dao.OutpatientDao;
import com.yihu.jw.hospital.prescription.dao.PrescriptionDao;
import com.yihu.jw.patient.dao.BasePatientDao;
import com.yihu.jw.util.common.IdCardUtil;
import com.yihu.jw.util.date.DateUtil;
import com.yihu.jw.util.http.HttpClientUtil;
import com.yihu.jw.utils.StringUtil;
import org.apache.commons.lang3.StringUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
@ -43,6 +54,14 @@ public class HealthCareService {
    @Autowired
    private BaseDoctorDao doctorDao;
    @Autowired
    private BasePatientDao patientDao;
    @Autowired
    private OutpatientDao outpatientDao;
    @Autowired
    private DoctorMappingDao doctorMappingDao;
    @Autowired
    private PrescriptionDao prescriptionDao;
    @Autowired
    private HttpClientUtil httpClientUtil;
    @Autowired
    private YlzHttpLogDao ylzHttpLogDao;
@ -146,7 +165,7 @@ public class HealthCareService {
        data.put("idcard",doctorDO.getIdcard());//医师证件号
        data.put("cert_type","");//医师证件类型
        requestYlz(data.toJSONString(),"N20.17.02.01");
        requestYlz(data,"N20.17.02.01","医师身份验证");
    }
    /**
@ -165,7 +184,7 @@ public class HealthCareService {
        data.put("idcard",doctorDO.getIdcard());//医师证件号
        data.put("cert_type","");//医师证件类型
        data.put("redirect_url",hospitalSysDictDO.getDictValue());//回调地址
        requestYlz(data.toJSONString(),"N20.17.02.02");
        requestYlz(data,"N20.17.02.02","医师人脸签到表单地址");
    }
    /**
@ -177,11 +196,121 @@ public class HealthCareService {
        data.put("name",doctorDO.getName());//医师姓名
        data.put("idcard",doctorDO.getIdcard());//医师证件号
        data.put("cert_type","");//医师证件类型
        requestYlz(data.toJSONString(),"N20.17.02.05");
        requestYlz(data,"N20.17.02.05","获取医师人脸签到数据");
    }
    /**
     * 2.4.1 事前提醒
     */
    public void advanceWarning(String prescriptionId) throws Exception{
        WlyyPrescriptionDO prescriptionDO = prescriptionDao.findOne(prescriptionId);
        WlyyOutpatientDO outpatientDO = outpatientDao.findOne(prescriptionDO.getOutpatientId());
        BasePatientDO patientDO = patientDao.findById(outpatientDO.getPatient());
        JSONObject data = new JSONObject();
        data.put("his_serial",outpatientDO.getRegisterNo());//HIS 门诊挂号号
        data.put("insurance_serial","insurance_serial");//医保门诊挂号流水号
        data.put("medical_mode","");//就诊类型 String	Y
        data.put("region_code","");//参保地区划代码	String	Y
        data.put("name",patientDO.getName());//姓名
        data.put("idcard",patientDO.getIdcard());//证件号码
        data.put("cert_type","");//证件类型
        data.put("sex","");//性别	String	Y
        String birth = IdCardUtil.getBirthdayForIdcardStr(patientDO.getIdcard(),patientDO.getBirthday());
        if(StringUtils.isBlank(birth)){
            throw new Exception("居民生日信息有误");
        }
        data.put("birth",birth);//出生日期 	String	Y
        data.put("medical_type","");//医疗类别	String	Y
        data.put("ticket_no","");//单据流水号	String	Y
        data.put("disease_code","");//特殊门诊病情编码	String	Y
        String doctorId = outpatientDO.getDoctor();
        BaseDoctorDO doctorDO = doctorDao.findOne(doctorId);
        List<BaseDoctorHospitalDO> doctorHospitalDOS = doctorHospitalDao.findByDoctorCode(doctorId);
        if(doctorHospitalDOS.size()<=0){
            throw new Exception("未找到医生科室编码");
        }
        BaseDoctorHospitalDO doctorHospitalDO = doctorHospitalDOS.get(0);
        DoctorMappingDO doctorMappingDO = doctorMappingDao.findByDoctor(doctorId);
        if(doctorMappingDO == null){
            throw new Exception("未找到医生his编码");
        }
        data.put("dept_code",doctorHospitalDO.getDeptCode());//科室代码
        data.put("dept_name",doctorHospitalDO.getDeptName());//科室名称
        data.put("doctor_code",doctorMappingDO.getMappingCode());//医师编号
        data.put("doctor_name",doctorDO.getName());//医生名称
        data.put("doctor_idcard",doctorDO.getIdcard());//医师身份证号
        data.put("prescription_date", DateUtil.dateToStr(outpatientDO.getCreateTime(),DateUtil.YYYY_MM_DD));//处方日期
        data.put("prescription_counts","1");//处方项目数
        data.put("prescription_source","");//处方来源	String	Y
        //诊断
        JSONArray zdlist = new JSONArray();
        String icd10 = outpatientDO.getIcd10();
        String icd10Name = outpatientDO.getIcd10Name();
        String icd10sz[] = icd10.split(",");
        String icd10Namesz[] = icd10Name.split(",");
        for (int i=0;i<icd10sz.length;i++){
            JSONObject zd = new JSONObject();
            zd.put("disease_code_icd10",icd10sz[i].trim());//诊断或症状编码	String	Y	见icd-10或症状表编码
            zd.put("disease_name_icd10",icd10Namesz[i].trim());//诊断或症状名称	String	Y	见icd-10或症状表名称
            zd.put("disease_type","");//诊断或症状类型	String	Y	参见编码附件
            zd.put("disease_order","");//诊断或症状序号	String	Y	参见编码附件
        }
        data.put("zdlist",zdlist);
        //医嘱明细
        JSONArray mxlist = new JSONArray();
        data.put("mxlist",mxlist);
        requestYlz(data,"N20.17.03.03","事前提醒");
    }
    /**
     * 2.4.2	医师开方上传
     */
    public void doctorPrescriptionUpload(String prescriptionId)throws Exception{
        WlyyPrescriptionDO prescriptionDO = prescriptionDao.findOne(prescriptionId);
        JSONObject data = new JSONObject();
        data.put("insurance_serial","insurance_serial");//医保门诊挂号流水号
        //医嘱明细
        JSONArray mxlist = new JSONArray();
        data.put("mxlist",mxlist);
        requestYlz(data,"N20.17.03.01","医师开方上传");
    }
    /**
     * 2.4.3	医师开方上传取消(N20.17.03.06)
     */
    public void doctorPrescriptionUploadCancle(String prescriptionId,String cancelReason)throws Exception{
        WlyyPrescriptionDO prescriptionDO = prescriptionDao.findOne(prescriptionId);
        JSONObject data = new JSONObject();
        data.put("transaction_no","");//处方上传流水号  	String	Y
        data.put("insurance_serial","insurance_serial");//医保流水号
        data.put("cancel_reason",cancelReason);//作废原因
        data.put("region_code","");//参保地区划代码
        data.put("idcard",prescriptionDO.getIdcard());//证件号码
        data.put("name",prescriptionDO.getPatientName());//姓名
        data.put("cert_type","");//证件类型
        data.put("data_source","");//数据来源	String	Y	参见编码附件
        requestYlz(data,"N20.17.03.06","医师开方上传取消");
    }
    public String getYlzToken() throws Exception {
        YlzHttpLogDO ylzHttpLogDO = new YlzHttpLogDO();

+ 18 - 0
common/common-util/src/main/java/com/yihu/jw/util/common/IdCardUtil.java

@ -1,6 +1,7 @@
package com.yihu.jw.util.common;
import com.yihu.jw.util.date.DateUtil;
import org.springframework.util.StringUtils;
import java.text.SimpleDateFormat;
@ -281,6 +282,23 @@ public class IdCardUtil {
        return null;
    }
    /**
     * 身份证提取出身日期
     *
     * @param card
     * @return
     * @throws Exception
     */
    public static String getBirthdayForIdcardStr(String card,Date birthday)
            throws Exception {
        String birth = getBirthdayForIdcardStr(card);
        if(birth == null){
            return DateUtil.dateToStr(birthday,DateUtil.YYYY_MM_DD);
        }
        return birth;
    }
    public static String getIdcardEncode(String idcard) {
        if (idcard != null) {
            if (idcard.length() == 18) {