|
@@ -1,102 +1,85 @@
|
|
|
package com.lantone.qc.kernel.catalogue.operationdiscussion;
|
|
|
|
|
|
import com.lantone.qc.kernel.catalogue.QCCatalogue;
|
|
|
+import com.lantone.qc.kernel.util.CatalogueUtil;
|
|
|
import com.lantone.qc.pub.model.InputInfo;
|
|
|
import com.lantone.qc.pub.model.OutputInfo;
|
|
|
import com.lantone.qc.pub.model.doc.ThreeLevelWardDoc;
|
|
|
import com.lantone.qc.pub.model.doc.operation.OperationDoc;
|
|
|
import com.lantone.qc.pub.model.doc.operation.OperationRecordDoc;
|
|
|
+import com.lantone.qc.pub.model.doc.transferrecord.TransferOutDoc;
|
|
|
+import com.lantone.qc.pub.model.doc.transferrecord.TransferRecordDoc;
|
|
|
import com.lantone.qc.pub.util.DateUtil;
|
|
|
import com.lantone.qc.pub.util.ListUtil;
|
|
|
import com.lantone.qc.pub.util.StringUtil;
|
|
|
import org.springframework.stereotype.Component;
|
|
|
|
|
|
-import java.text.SimpleDateFormat;
|
|
|
import java.util.ArrayList;
|
|
|
import java.util.Date;
|
|
|
import java.util.List;
|
|
|
import java.util.Map;
|
|
|
|
|
|
/**
|
|
|
- * @author wangfeng
|
|
|
- * @Description: 术后没有连续记录3天
|
|
|
- * @date 2020-07-01 10:31
|
|
|
+ * @ClassName : THR0587
|
|
|
+ * @Description : 术后病程录没有连续记录3天
|
|
|
+ * @Author : 胡敬
|
|
|
+ * @Date: 2020-03-30 16:17
|
|
|
*/
|
|
|
@Component
|
|
|
public class OPE0587 extends QCCatalogue {
|
|
|
public void start(InputInfo inputInfo, OutputInfo outputInfo) {
|
|
|
status.set("0");
|
|
|
List<OperationDoc> operationDocs = inputInfo.getOperationDocs();
|
|
|
- List<ThreeLevelWardDoc> threeLevelWardDocs = inputInfo.getThreeLevelWardDocs().get(0).getAllDoctorWradDocs();
|
|
|
+ List<ThreeLevelWardDoc> threeLevelWardDocs = inputInfo.getThreeLevelWardDocs();
|
|
|
if (ListUtil.isEmpty(operationDocs) || ListUtil.isEmpty(threeLevelWardDocs)) {
|
|
|
return;
|
|
|
}
|
|
|
- if (inputInfo.getMedicalRecordInfoDoc() == null || inputInfo.getMedicalRecordInfoDoc().getStructureMap().size() == 0) {
|
|
|
- return;
|
|
|
- }
|
|
|
- SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
|
|
|
- //取出所有查房时间
|
|
|
- List<String> roundsDate = new ArrayList<>();
|
|
|
- for (ThreeLevelWardDoc t : threeLevelWardDocs) {
|
|
|
- Date threeLevelDate = StringUtil.parseDateTime(t.getStructureMap().get("查房日期"));
|
|
|
- roundsDate.add(formatter.format(threeLevelDate));
|
|
|
- }
|
|
|
-
|
|
|
- //取出出院时间
|
|
|
- Map<String, String> structureMaps = inputInfo.getFirstPageRecordDoc().getStructureMap();
|
|
|
- String leaveHospitalDate = structureMaps.get("出院时间") == null ? null : structureMaps.get("出院时间");
|
|
|
- Date leaveDate = StringUtil.parseDateTime(leaveHospitalDate);
|
|
|
- //没有出院时间, 直接退出
|
|
|
- if (leaveHospitalDate != null) {
|
|
|
- //取出病程信息里的手术信息的所有 手术日期
|
|
|
- List<String> operDateList = new ArrayList<>();
|
|
|
- for (OperationDoc opera : operationDocs) {
|
|
|
- OperationRecordDoc operationRecordDoc = opera.getOperationRecordDoc();
|
|
|
- String operDate = operationRecordDoc.getStructureMap().get("手术日期");
|
|
|
- if (StringUtil.isNotBlank(operDate)) {
|
|
|
- operDateList.add(operDate);
|
|
|
+ //所有查房记录的日期天
|
|
|
+ List<ThreeLevelWardDoc> allDoctorWradDocs = threeLevelWardDocs.get(0).getAllDoctorWradDocs();
|
|
|
+ List<Date> wardRecordDayList = getWardRecordDay(allDoctorWradDocs);
|
|
|
+ String OperationEndDateStr = "";
|
|
|
+ //转入日期后应该有的查房记录的日期天
|
|
|
+ List<Date> rollInDay = null;
|
|
|
+ for (OperationDoc operationDoc : operationDocs) {
|
|
|
+ OperationRecordDoc operationRecordDoc = operationDoc.getOperationRecordDoc();
|
|
|
+ if (operationRecordDoc == null) {
|
|
|
+ continue;
|
|
|
}
|
|
|
- }
|
|
|
- if (operDateList.size() > 0) {
|
|
|
- for (String operDates : operDateList) {
|
|
|
- Date oper = StringUtil.parseDateTime(operDates);
|
|
|
- //手术时间 减去 出院时间
|
|
|
- long day = (leaveDate.getTime() - oper.getTime()) / (24 * 60 * 60 * 1000);
|
|
|
- //时间大于三天才能判断有没有连续三天查房
|
|
|
- if (day > 3) {
|
|
|
- List<String> operDatesNew = new ArrayList<>();
|
|
|
- //用手术时间加三天
|
|
|
- for (int i = 1; i < 4; i++) {
|
|
|
- Date firstTimeOfDay = DateUtil.getFirstTimeOfDay(DateUtil.addDay(oper, i));
|
|
|
- operDatesNew.add(formatter.format(firstTimeOfDay));
|
|
|
- }
|
|
|
- if (roundsDate.size() > 2) {//查房日期取出没有3天时间, 直接报错
|
|
|
- //去重
|
|
|
- List<String> listTemp = new ArrayList<String>();
|
|
|
- for (int i = 0; i < roundsDate.size(); i++) {
|
|
|
- if (!listTemp.contains(roundsDate.get(i))) {
|
|
|
- listTemp.add(roundsDate.get(i));
|
|
|
- }
|
|
|
- }
|
|
|
- int i = 0;
|
|
|
- //循环两个时间List,
|
|
|
- for (String str : operDatesNew) {
|
|
|
- for (String s : listTemp) {
|
|
|
- if (str.equals(s)) {
|
|
|
- i++;
|
|
|
- }
|
|
|
- }
|
|
|
- }
|
|
|
- if (i < 3) {
|
|
|
- status.set("-1");
|
|
|
- }
|
|
|
- } else {
|
|
|
- status.set("-1");
|
|
|
- return;
|
|
|
- }
|
|
|
- }
|
|
|
+ Map<String, String> operationRecordStructureMap = operationRecordDoc.getStructureMap();
|
|
|
+ OperationEndDateStr = operationRecordStructureMap.get("手术结束时间");
|
|
|
+ if (CatalogueUtil.isEmpty(OperationEndDateStr)) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ Date OperationEndDate = StringUtil.parseDateTime(OperationEndDateStr);
|
|
|
+ rollInDay = new ArrayList<>();
|
|
|
+ for (int i = 1; i <= 3; i++) {
|
|
|
+ Date wardRecordDay = DateUtil.dateZeroClear(DateUtil.addDate(OperationEndDate, i));
|
|
|
+ rollInDay.add(wardRecordDay);
|
|
|
+ }
|
|
|
+ if (!wardRecordDayList.containsAll(rollInDay)) {
|
|
|
+ status.set("-1");
|
|
|
+ return;
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 所有查房记录的日期天
|
|
|
+ *
|
|
|
+ * @param threeLevelWardDocs
|
|
|
+ */
|
|
|
+ private List<Date> getWardRecordDay(List<ThreeLevelWardDoc> threeLevelWardDocs) {
|
|
|
+ List<Date> dateRecordDay = new ArrayList<>();
|
|
|
+ String recordTime = "";
|
|
|
+ for (ThreeLevelWardDoc threeLevelWardDoc : threeLevelWardDocs) {
|
|
|
+ Map<String, String> rescueStructureMap = threeLevelWardDoc.getStructureMap();
|
|
|
+ recordTime = rescueStructureMap.get("查房日期");
|
|
|
+ Date recordDate = StringUtil.parseDateTime(recordTime);
|
|
|
+ if (recordDate == null) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ dateRecordDay.add(DateUtil.dateZeroClear(recordDate));
|
|
|
+ }
|
|
|
+ return dateRecordDay;
|
|
|
}
|
|
|
-}
|
|
|
+}
|