|
@@ -0,0 +1,75 @@
|
|
|
+package com.lantone.qc.kernel.catalogue.hospital.wenfuyi.clinicalblood;
|
|
|
+
|
|
|
+import com.lantone.qc.kernel.catalogue.QCCatalogue;
|
|
|
+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.util.ListUtil;
|
|
|
+import org.apache.commons.lang3.StringUtils;
|
|
|
+import org.springframework.stereotype.Component;
|
|
|
+
|
|
|
+import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
+import java.util.regex.Matcher;
|
|
|
+import java.util.regex.Pattern;
|
|
|
+
|
|
|
+/**
|
|
|
+ * @ClassName : CLI0307
|
|
|
+ * @Description : 输血记录中无血液制品种类及量
|
|
|
+ * @Author : 贺聪聪
|
|
|
+ * @Date: 2022-07-06 16:28
|
|
|
+ */
|
|
|
+@Component
|
|
|
+public class CLI0307 extends QCCatalogue {
|
|
|
+ public void start(InputInfo inputInfo, OutputInfo outputInfo) {
|
|
|
+ status.set("0");
|
|
|
+ List<ClinicalBloodDoc> clinicalBloodDocs = inputInfo.getClinicalBloodDocs();
|
|
|
+ if (ListUtil.isEmpty(clinicalBloodDocs)) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ if (clinicalBloodDocs != null && clinicalBloodDocs.size() > 0) {
|
|
|
+ int matchSum = 0;
|
|
|
+ for (ClinicalBloodDoc cliB : clinicalBloodDocs) {
|
|
|
+ Map<String, String> cliBStructureMap = cliB.getStructureMap();
|
|
|
+ if (StringUtils.isNotEmpty(cliBStructureMap.get("输注种类及量"))) {
|
|
|
+ matchSum++;
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+ if (cliBStructureMap.containsKey("输注种类及量")) {
|
|
|
+ String bloodType = cliBStructureMap.get("输注种类及量");
|
|
|
+ String bloods = cutString(bloodType, "血液成分", "容量");
|
|
|
+ if (StringUtils.isNotEmpty(bloods)&&
|
|
|
+ (!bloods.contains("") || !bloods.contains(" ") || !bloods.contains(" ") ||
|
|
|
+ !bloods.contains(": ") || !bloods.contains(":") | !bloods.contains(": ") ||
|
|
|
+ !bloods.contains(": ") || !bloods.contains(":") | !bloods.contains(": "))) {
|
|
|
+ String bloodNum = cutString(bloodType, "容量", "其他");
|
|
|
+ if (StringUtils.isNotEmpty(bloodNum)&&
|
|
|
+ (!bloodNum.contains("") || !bloodNum.contains(" ") || !bloodNum.contains(" ") ||
|
|
|
+ !bloodNum.contains(": ") || !bloodNum.contains(":") | !bloodNum.contains(": ") ||
|
|
|
+ !bloodNum.contains(": ") || !bloodNum.contains(":") | !bloodNum.contains(": "))) {
|
|
|
+ }
|
|
|
+ matchSum++;
|
|
|
+ continue;
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if (matchSum != clinicalBloodDocs.size()) {
|
|
|
+ status.set("-1");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ public static String cutString(String str, String start, String end) {
|
|
|
+ if (StringUtils.isBlank(str)) {
|
|
|
+ return str;
|
|
|
+ }
|
|
|
+ String reg = start + "(.*)" + end;
|
|
|
+ Pattern pattern = Pattern.compile(reg);
|
|
|
+ Matcher matcher = pattern.matcher(str);
|
|
|
+ while (matcher.find()) {
|
|
|
+ str = matcher.group(1);
|
|
|
+ }
|
|
|
+ return str;
|
|
|
+ }
|
|
|
+}
|