|
@@ -0,0 +1,125 @@
|
|
|
+package com.lantone.qc.kernel.catalogue.hospital.shengzhouyy.clinicalblood;
|
|
|
+
|
|
|
+import com.lantone.qc.kernel.catalogue.QCCatalogue;
|
|
|
+import com.lantone.qc.pub.Content;
|
|
|
+import com.lantone.qc.pub.model.InputInfo;
|
|
|
+import com.lantone.qc.pub.model.OutputInfo;
|
|
|
+import com.lantone.qc.pub.model.doc.ClinicalBloodDoc;
|
|
|
+import com.lantone.qc.pub.model.doc.DoctorAdviceDoc;
|
|
|
+import com.lantone.qc.pub.model.doc.FirstPageRecordDoc;
|
|
|
+import com.lantone.qc.pub.model.doc.InformedConsentDoc;
|
|
|
+import com.lantone.qc.pub.model.doc.ThreeLevelWardDoc;
|
|
|
+import com.lantone.qc.pub.util.ListUtil;
|
|
|
+import com.lantone.qc.pub.util.StringUtil;
|
|
|
+import org.springframework.stereotype.Component;
|
|
|
+
|
|
|
+import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
+
|
|
|
+/**
|
|
|
+ * @ClassName : CLI0301
|
|
|
+ * @Description : 无输血或使用血液制品知情同意书
|
|
|
+ * @Author : cy
|
|
|
+ * @Date: 2021-04-18 14:49
|
|
|
+ */
|
|
|
+@Component
|
|
|
+public class CLI0301 extends QCCatalogue {
|
|
|
+ public void start(InputInfo inputInfo, OutputInfo outputInfo) {
|
|
|
+ status.set("0");
|
|
|
+ boolean flag=false;
|
|
|
+ List<ClinicalBloodDoc> clinicalBloodDocs = inputInfo.getClinicalBloodDocs();
|
|
|
+ List<DoctorAdviceDoc> doctorAdviceDocs = inputInfo.getDoctorAdviceDocs();
|
|
|
+ List<ThreeLevelWardDoc> threeLevelWardDocs = inputInfo.getThreeLevelWardDocs();
|
|
|
+ /**
|
|
|
+ *是否输血了
|
|
|
+ */
|
|
|
+ //输血记录
|
|
|
+ if(ListUtil.isNotEmpty(clinicalBloodDocs)){
|
|
|
+ flag=true;
|
|
|
+ }
|
|
|
+ //血费
|
|
|
+ FirstPageRecordDoc firstPageRecordDoc = inputInfo.getFirstPageRecordDoc();
|
|
|
+ if(firstPageRecordDoc!=null&&firstPageRecordDoc.getStructureMap()!=null){
|
|
|
+ String bloodFee = firstPageRecordDoc.getStructureMap().get("血费");
|
|
|
+ if(StringUtil.isNotEmpty(bloodFee) && !bloodFee.equals("0")){
|
|
|
+ double blood = Double.parseDouble(bloodFee);
|
|
|
+ if(blood > 0){
|
|
|
+ flag=true;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //医嘱
|
|
|
+ if(ListUtil.isNotEmpty(doctorAdviceDocs)){
|
|
|
+ for (DoctorAdviceDoc doctorAdviceDoc : doctorAdviceDocs) {
|
|
|
+ Map<String, String> doctorAdviceDocStrMap = doctorAdviceDoc.getStructureMap();
|
|
|
+ String daStatus = doctorAdviceDocStrMap.get(Content.doctorAdviceState);
|
|
|
+ if (StringUtil.isNotEmpty(daStatus)) {
|
|
|
+ if (!Content.cancellationOrderList.contains(daStatus)) {
|
|
|
+ //取临时医嘱
|
|
|
+ String doctorAsks = doctorAdviceDocStrMap.get(Content.doctorAdviceType);
|
|
|
+ if (StringUtil.isEmpty(doctorAsks)) {
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ if (Content.statOrder.equals(doctorAsks)) {
|
|
|
+ String daItemName = doctorAdviceDocStrMap.get(Content.medicalOrderName);
|
|
|
+ if(StringUtil.isNotEmpty(daItemName)) {
|
|
|
+ if (dateStr(daItemName)) {
|
|
|
+ flag = true;
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+//判断是否含有知情同意书
|
|
|
+ if(flag) {
|
|
|
+ status.set("-1");
|
|
|
+ List<InformedConsentDoc> informedConsentDocList = inputInfo.getInformedConsentDoc();
|
|
|
+ if (ListUtil.isNotEmpty(informedConsentDocList)) {
|
|
|
+ for (InformedConsentDoc informedConsentDoc : informedConsentDocList) {
|
|
|
+ String str = informedConsentDoc.getStructureMap().get("标题");
|
|
|
+ if(StringUtil.isBlank(str)){
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ String rex="[\\s\\S]*(?=输血)[^,;,;。]{0,10}(?=知情同意书)[\\s\\S]*";
|
|
|
+ if(Content.BLOODRECORDLIST.contains(str)||str.matches(rex)){
|
|
|
+ status.set("0");
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private boolean dateStr(String str){
|
|
|
+ if(StringUtil.isEmpty(str)){
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ str = str.replaceAll("\\*", "\\\\*");
|
|
|
+ str = str.replaceAll("\\)", "\\\\)");
|
|
|
+ str = str.replaceAll("\\.", "\\\\.");
|
|
|
+ str = str.replaceAll("\\?", "\\\\?");
|
|
|
+ str = str.replaceAll("\\+", "\\\\+");
|
|
|
+ str = str.replaceAll("\\$", "\\\\$");
|
|
|
+ str = str.replaceAll("\\^", "\\\\^");
|
|
|
+ str = str.replaceAll("\\[", "\\\\[");
|
|
|
+ str = str.replaceAll("\\]", "\\\\]");
|
|
|
+ str = str.replaceAll("\\(", "\\\\(");
|
|
|
+ str = str.replaceAll("\\{", "\\\\{");
|
|
|
+ str = str.replaceAll("\\}", "\\\\}");
|
|
|
+ str = str.replaceAll("\\|", "\\\\|");
|
|
|
+ str = str.replaceAll("\\/", "\\\\/");
|
|
|
+ String rex1="[\\s\\S]*(?=输)[^,;,;。]{0,6}(?=血)[\\s\\S]*";
|
|
|
+ String rex2="[\\s\\S]*(?=输)[^,;,;。]{0,6}(?=红细胞)[\\s\\S]*";
|
|
|
+ String rex3="[\\s\\S]*(?=输)[^,;,;。]{0,6}(?=血小板)[\\s\\S]*";
|
|
|
+ String rex4="[\\s\\S]*(?=输)[^,;,;。]{0,6}(?=血浆)[\\s\\S]*";
|
|
|
+ String rex5="[\\s\\S]*(?=输)[^,;,;。]{0,6}(?=冷沉淀因子)[\\s\\S]*";
|
|
|
+ String rex6="[\\s\\S]*(?=输血)[^,;,;。]{0,6}((?=前检测)|(?=前检查))[\\s\\S]*";
|
|
|
+ if( !str.matches(rex6) && ( str.matches(rex1)|| str.matches(rex2) || str.matches(rex3)|| str.matches(rex4)|| str.matches(rex5))){
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+}
|