|
@@ -11,6 +11,8 @@ import com.google.common.collect.Lists;
|
|
|
import org.apache.commons.lang3.StringUtils;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Component;
|
|
|
+import org.springframework.transaction.annotation.Transactional;
|
|
|
+
|
|
|
import java.util.List;
|
|
|
|
|
|
@Component
|
|
@@ -23,8 +25,12 @@ public class YWAnalysis {
|
|
|
@Autowired
|
|
|
private ADoctorAdviceFacade aDoctorAdviceFacade;
|
|
|
@Autowired
|
|
|
+ private AMedPacsInfoFacade aMedPacsInfoFacade;
|
|
|
+ @Autowired
|
|
|
private AMedPacsResultFacade aMedPacsResultFacade;
|
|
|
@Autowired
|
|
|
+ private AMedLisInfoFacade aMedLisInfoFacade;
|
|
|
+ @Autowired
|
|
|
private AMedLisResultFacade aMedLisResultFacade;
|
|
|
@Autowired
|
|
|
private AMedCrisisFacade aMedCrisisFacade;
|
|
@@ -39,11 +45,12 @@ public class YWAnalysis {
|
|
|
|
|
|
public static final Long HOSPITAL_ID = Long.valueOf("5");//1:长兴,2:邵逸夫,3:台州市立医院,5义乌妇幼医院
|
|
|
|
|
|
+ @Transactional
|
|
|
public void executeAnalysis(String hisMessage) {
|
|
|
try {
|
|
|
Message message = pipeParser.parse(hisMessage);
|
|
|
Terser terser = new Terser(message);
|
|
|
- //住院登记
|
|
|
+ //入院登记
|
|
|
if (message.getName().equals("ADT_A01")) {
|
|
|
aBehospitalInfoFacade.execute(getBehospitalInfoToView(terser.get("/.PV1-19-1")));
|
|
|
}
|
|
@@ -53,10 +60,12 @@ public class YWAnalysis {
|
|
|
}
|
|
|
//检查结果
|
|
|
if (message.getName().equals("ORU_R01")) {
|
|
|
+ aMedPacsInfoFacade.execute(getPacsInfoToMsg(hisMessage));
|
|
|
aMedPacsResultFacade.execute(getPacsResultToView(terser.get("/.ORC-2-1")));
|
|
|
}
|
|
|
//化验
|
|
|
if (message.getName().equals("OUL_R21")) {
|
|
|
+ aMedLisInfoFacade.execute(getLisInfoToMsg(hisMessage));
|
|
|
aMedLisResultFacade.execute(getLisResultToView(terser.get("/.OBR-2-3")));
|
|
|
}
|
|
|
} catch (Exception e) {
|
|
@@ -174,6 +183,40 @@ public class YWAnalysis {
|
|
|
return doctorAdviceList;
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 解析检查信息消息pacsInfo
|
|
|
+ * @param hisMessage
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public List<MedPacsInfo> getPacsInfoToMsg(String hisMessage){
|
|
|
+ List<MedPacsInfo> medPacsInfoList = Lists.newLinkedList();
|
|
|
+ MedPacsInfo medPacsInfo = new MedPacsInfo();
|
|
|
+ try {
|
|
|
+ Message message = pipeParser.parse(hisMessage);
|
|
|
+ Terser terser = new Terser(message);
|
|
|
+ medPacsInfo.setRepNo(terser.get("/.ORC-2-1"));//报告单号
|
|
|
+ medPacsInfo.setHospitalId(HOSPITAL_ID);
|
|
|
+ medPacsInfo.setBehospitalCode(terser.get("/.PV1-19-1"));//住院病人ID
|
|
|
+ medPacsInfo.setRepName(terser.get("/.OBR-15-1-2"));//报告名称
|
|
|
+ medPacsInfo.setRepType(null);//报告类型代码
|
|
|
+ medPacsInfo.setRepName(terser.get("/.OBR-4-5"));//检查类型名称
|
|
|
+ medPacsInfo.setPart(terser.get("/.OBR-4-2"));//检查部位
|
|
|
+ medPacsInfo.setRepDate(terser.get("/.OBR-22-1"));//发布时间
|
|
|
+ medPacsInfo.setCheckDate(terser.get("/.ORC-9-1"));//报告检查时间
|
|
|
+ medPacsInfo.setApplyDoctor(terser.get("/.ORC-12-3"));//申请医生
|
|
|
+ medPacsInfo.setDeptId(terser.get("/.ORC-17-1"));//开单科室代码
|
|
|
+ medPacsInfo.setDeptName(terser.get("/.ORC-17-2"));//开单科室名称
|
|
|
+ medPacsInfo.setRegisterFlag(terser.get("/.OBR-25"));//报告单状态
|
|
|
+ medPacsInfo.setReportDoctor(terser.get("/.ORC-12-3"));//报告医生
|
|
|
+ medPacsInfo.setChecker(terser.get("/.ORC-11-3"));//报告审核医生
|
|
|
+ medPacsInfo.setYjpdz(null);//云胶片地址
|
|
|
+ }catch (Exception e){
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ medPacsInfoList.add(medPacsInfo);
|
|
|
+ return medPacsInfoList;
|
|
|
+ }
|
|
|
/**
|
|
|
* 解析检查结果消息(视图获取/消息解析)
|
|
|
* @param queryParam
|
|
@@ -192,13 +235,17 @@ public class YWAnalysis {
|
|
|
Terser terser = new Terser(message);
|
|
|
medPacsResult.setRepNo(terser.get("/.ORC-2-1"));
|
|
|
medPacsResult.setHospitalId(HOSPITAL_ID);
|
|
|
- medPacsResult.setBehospitalCode("");
|
|
|
+ medPacsResult.setBehospitalCode(terser.get("/.PV1-19-1"));
|
|
|
medPacsResult.setReptName(terser.get("/.OBR-4-5"));
|
|
|
medPacsResult.setPart(terser.get("/.OBR-4-2"));
|
|
|
- medPacsResult.setClinicSight("");
|
|
|
- medPacsResult.setReptDiag("");
|
|
|
- medPacsResult.setRemark("");
|
|
|
- medPacsResult.setClinicDiag("");
|
|
|
+ if(terser.get("/.OBR-3-1").equals("IMP") && terser.get("/.OBR-2").equals("CE")){
|
|
|
+ medPacsResult.setClinicSight(terser.get("/.OBX-5"));
|
|
|
+ }
|
|
|
+ if(terser.get("/.OBR-3-1").equals("GDT") && terser.get("/.OBR-2").equals("TX")){
|
|
|
+ medPacsResult.setReptDiag(terser.get("/.OBX-5"));
|
|
|
+ }
|
|
|
+ medPacsResult.setRemark(null);
|
|
|
+ medPacsResult.setClinicDiag(terser.get("/.DG1-4"));
|
|
|
medPacsResult.setApplyDoctor(terser.get("/.ORC-12-1"));
|
|
|
medPacsResult.setCheckerDoctor(terser.get("/.OBR-34-1-1"));
|
|
|
medPacsResult.setReportDoctor(terser.get("/.ORC-10-1"));
|
|
@@ -210,6 +257,38 @@ public class YWAnalysis {
|
|
|
return medPacsResultList;
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 解析化验信息消息lisInfo
|
|
|
+ * @param hisMessage
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public List<MedLisInfo> getLisInfoToMsg(String hisMessage){
|
|
|
+ List<MedLisInfo> medLisInfoList = Lists.newLinkedList();
|
|
|
+ MedLisInfo medLisInfo = new MedLisInfo();
|
|
|
+ try {
|
|
|
+ Message message = pipeParser.parse(hisMessage);
|
|
|
+ Terser terser = new Terser(message);
|
|
|
+ medLisInfo.setRepNo(terser.get("/.OBR-2-3"));//报告单号
|
|
|
+ medLisInfo.setHospitalId(HOSPITAL_ID);
|
|
|
+ medLisInfo.setBehospitalCode(terser.get("/.PV1-19-1"));//住院病人ID
|
|
|
+ medLisInfo.setRepType(terser.get("/.OBR-4-4"));//报告类型代码
|
|
|
+ medLisInfo.setRepName(terser.get("/.OBR-4-2"));//报告名称
|
|
|
+ medLisInfo.setRepTypeName(null);//检查类型名称
|
|
|
+ medLisInfo.setSlideType(null);//标本名称
|
|
|
+ if(StringUtils.isNotEmpty(terser.get("/.OBR-22-1"))){
|
|
|
+ //发布时间
|
|
|
+ medLisInfo.setRepDate(DateUtil.formatDate(DateUtil.parseDate(YWDateUtils.convJsonDateToString(terser.get("/.OBR-22-1"), DateUtil.DATE_TIME_FORMAT), DateUtil.DATE_TIME_FORMAT)));
|
|
|
+ }
|
|
|
+ medLisInfo.setCheckDate(null);//报告检查时间
|
|
|
+ medLisInfo.setApplyDoctor(terser.get("/.ORC-12-3"));//申请医生
|
|
|
+ medLisInfo.setDeptId(terser.get("/.ORC-17-1"));//开单科室代码
|
|
|
+ medLisInfo.setRegisterFlag(terser.get("/.OBR-25"));//报告单状态
|
|
|
+ }catch (Exception e){
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ medLisInfoList.add(medLisInfo);
|
|
|
+ return medLisInfoList;
|
|
|
+ }
|
|
|
/**
|
|
|
* 化验结果消息(视图获取/消息解析)
|
|
|
* @param queryParam
|
|
@@ -220,19 +299,17 @@ public class YWAnalysis {
|
|
|
List<MedLisResult> medLisResultList = tzDBConn.getLisResult(queryLisResultSql);
|
|
|
return medLisResultList;
|
|
|
}
|
|
|
-
|
|
|
public List<MedLisResult> getLisResultToMsg(String hisMessage) {
|
|
|
List<MedLisResult> medLisResultList = Lists.newLinkedList();
|
|
|
try {
|
|
|
Message message = pipeParser.parse(hisMessage);
|
|
|
Terser terser = new Terser(message);
|
|
|
int OBXCounts = hisMsgHeaderCounts(hisMessage, "OBX|");
|
|
|
- System.out.println(terser);
|
|
|
for (int i = 0; i < OBXCounts; i++) {
|
|
|
MedLisResult medLisResult = new MedLisResult();
|
|
|
medLisResult.setRepNo(terser.get("/.OBR-2-3"));
|
|
|
medLisResult.setHospitalId(HOSPITAL_ID);
|
|
|
- //medLisResult.setBehospitalCode("");
|
|
|
+ medLisResult.setBehospitalCode(terser.get("/.PV1-19-1"));
|
|
|
medLisResult.setItemCode(terser.get("/.OBSERVATION(" + i + ")/OBX-3-1"));
|
|
|
medLisResult.setItemName(terser.get("/.OBSERVATION(" + i + ")/OBX-3-2"));
|
|
|
medLisResult.setResult(terser.get("/.OBSERVATION(" + i + ")/OBX-5"));
|