|
|
@@ -0,0 +1,137 @@
|
|
|
+package thyyxxk.webserver.service.crbmanagement;
|
|
|
+
|
|
|
+import cn.hutool.core.bean.BeanUtil;
|
|
|
+import cn.hutool.json.JSONConfig;
|
|
|
+import cn.hutool.json.JSONUtil;
|
|
|
+import lombok.RequiredArgsConstructor;
|
|
|
+import lombok.extern.slf4j.Slf4j;
|
|
|
+import org.springframework.stereotype.Service;
|
|
|
+import thyyxxk.webserver.config.envionment.MedinsurConfig;
|
|
|
+import thyyxxk.webserver.dao.his.crbmanagement.CrbEmrDao;
|
|
|
+import thyyxxk.webserver.dao.his.zhuyuanyisheng.emr.EmrPatientDao;
|
|
|
+import thyyxxk.webserver.entity.crbmanagement.emr.EmrAdmissionInfo;
|
|
|
+import thyyxxk.webserver.entity.crbmanagement.emr.EmrDischargeInfo;
|
|
|
+import thyyxxk.webserver.entity.crbmanagement.emr.EmrFirstCourse;
|
|
|
+import thyyxxk.webserver.entity.zhuyuanyisheng.emr.EmrPatientData;
|
|
|
+import thyyxxk.webserver.utils.DateUtil;
|
|
|
+import thyyxxk.webserver.utils.EmrJsonUtils2;
|
|
|
+
|
|
|
+import javax.annotation.PostConstruct;
|
|
|
+import java.util.Date;
|
|
|
+import java.util.HashMap;
|
|
|
+import java.util.Map;
|
|
|
+
|
|
|
+@RequiredArgsConstructor
|
|
|
+@Service
|
|
|
+@Slf4j
|
|
|
+public class CrbUpdateByEmr {
|
|
|
+ private final EmrPatientDao emrDao;
|
|
|
+ private final CrbEmrDao dao;
|
|
|
+ private final static String EMPTY = "-";
|
|
|
+ private final MedinsurConfig config;
|
|
|
+
|
|
|
+ @PostConstruct
|
|
|
+ public void init() {
|
|
|
+ getData("000362", 14);
|
|
|
+ }
|
|
|
+
|
|
|
+ public Map<String, Object> getData(String patNo, Integer times) {
|
|
|
+ Map<String, Object> map = new HashMap<>();
|
|
|
+ EmrAdmissionInfo admissionInfo = getEmrAdmissionInfo(patNo, times);
|
|
|
+ map.put("EmrAdmissionInfo", admissionInfo);
|
|
|
+ map.put("EmrFirstCourse", getEmrFirstCourse(patNo, times, admissionInfo));
|
|
|
+ map.put("EmrDischargeInfo", getEmrDischargeInfo(patNo, times, admissionInfo));
|
|
|
+ log.info("数据:{}", JSONUtil.toJsonStr(map, new JSONConfig().setDateFormat(DateUtil.DEFAULT_PATTERN)));
|
|
|
+ return map;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 获取患者入院信息
|
|
|
+ *
|
|
|
+ * @param patNo 住院号
|
|
|
+ * @param times 住院次数
|
|
|
+ * @return str
|
|
|
+ */
|
|
|
+ public EmrAdmissionInfo getEmrAdmissionInfo(String patNo, Integer times) {
|
|
|
+ EmrPatientData emrPatientData = emrDao.findEmrDataByCode(patNo, times, "ruyuanjiluzhuanyong");
|
|
|
+ EmrJsonUtils2 json = EmrJsonUtils2.create(emrPatientData.getEmrDataElementStr());
|
|
|
+ EmrAdmissionInfo info = BeanUtil.toBean(dao.selectPatientInfo(patNo, times), EmrAdmissionInfo.class);
|
|
|
+ info.setId(emrPatientData.getEmrDocumentId());
|
|
|
+ boolean isNotNull = !json.isEmpty();
|
|
|
+
|
|
|
+ json.setObjectByEmrBusiness(info);
|
|
|
+
|
|
|
+ if (!isNotNull) {
|
|
|
+ return info;
|
|
|
+ }
|
|
|
+
|
|
|
+ json.getFirstArr("入院诊断", (value) -> {
|
|
|
+ info.setWmInitialDiagnosisCode(value.getCode());
|
|
|
+ info.setWmInitialDiagnosisName(value.getName());
|
|
|
+ info.setInitalDiagnosisDate(emrPatientData.getCreateDate());
|
|
|
+
|
|
|
+
|
|
|
+ info.setWmConfirmedDiagnosisCode(value.getCode());
|
|
|
+ info.setWmConfirmedDiagnosisName(value.getName());
|
|
|
+ info.setConfirmedDiagnosisDate(emrPatientData.getCreateDate());
|
|
|
+ });
|
|
|
+ json.getFirstArr("目前诊断", (val) -> {
|
|
|
+ info.setWmRevisedDiagnosisCode(val.getCode());
|
|
|
+ info.setWmRevisedDiagnosisName(val.getName());
|
|
|
+ info.setRevisedDiagnosisDate(DateUtil.parse(json.getKeyArrStrValue("诊断时间", 0), DateUtil.DATE));
|
|
|
+ });
|
|
|
+
|
|
|
+ json.getKeyArrValue("补充诊断", 0, (val) -> {
|
|
|
+ info.setComplementaryDiagnosisCode(val.get(0).getCode());
|
|
|
+ info.setComplementaryDiagnosisName(val.get(0).getName());
|
|
|
+ info.setComplementaryDiagnosisDate(DateUtil.parse(json.getKeyArrStrValue("诊断时间", 1)));
|
|
|
+ });
|
|
|
+
|
|
|
+
|
|
|
+ info.setOrgCode(config.getHospId());
|
|
|
+ info.setOrgName(config.getHospName());
|
|
|
+ info.setOperatorId(emrPatientData.getCreateId());
|
|
|
+ info.setOperationTime(new Date());
|
|
|
+
|
|
|
+ return info;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ public EmrFirstCourse getEmrFirstCourse(String patNo, Integer times, EmrAdmissionInfo admissionInfo) {
|
|
|
+ EmrFirstCourse info = BeanUtil.toBean(admissionInfo, EmrFirstCourse.class);
|
|
|
+ EmrPatientData emrData = emrDao.findEmrDataByCode(patNo, times, "shoucibingchengjilu");
|
|
|
+
|
|
|
+ EmrJsonUtils2 emrJsonUtils2 = EmrJsonUtils2.create(emrData.getEmrDataElementStr());
|
|
|
+
|
|
|
+ info.setCreateTime(emrData.getCreateDate());
|
|
|
+
|
|
|
+ info.setOrgCode(config.getHospId());
|
|
|
+ info.setOrgName(config.getHospName());
|
|
|
+ info.setOperatorId(emrData.getCreateId());
|
|
|
+ info.setOperationTime(new Date());
|
|
|
+
|
|
|
+ emrJsonUtils2.setObjectByEmrBusiness(info);
|
|
|
+ return info;
|
|
|
+ }
|
|
|
+
|
|
|
+ public EmrDischargeInfo getEmrDischargeInfo(String patNo, Integer times, EmrAdmissionInfo admissionInfo) {
|
|
|
+ EmrDischargeInfo info = BeanUtil.toBean(admissionInfo, EmrDischargeInfo.class);
|
|
|
+ EmrPatientData emrData = emrDao.findEmrDataByCode(patNo, times, "chuyuanjilu");
|
|
|
+ EmrJsonUtils2 emrJsonUtils2 = EmrJsonUtils2.create(emrData.getEmrDataElementStr());
|
|
|
+ emrJsonUtils2.setObjectByEmrBusiness(info);
|
|
|
+
|
|
|
+ info.setDischargeDate(DateUtil.parse(emrJsonUtils2.getStr("出院时间")));
|
|
|
+
|
|
|
+ emrJsonUtils2.getFirstArr("出院诊断", (val) -> {
|
|
|
+ info.setDischargeDiagnosisCode(val.getCode());
|
|
|
+ info.setDischargeDiagnosisName(val.getName());
|
|
|
+ });
|
|
|
+ info.setOrgCode(config.getHospId());
|
|
|
+ info.setOrgName(config.getHospName());
|
|
|
+ info.setOperatorId(emrData.getCreateId());
|
|
|
+ info.setOperationTime(new Date());
|
|
|
+ return info;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+}
|