|
@@ -9,6 +9,7 @@ import com.lantone.qc.pub.model.doc.ClinicalBloodDoc;
|
|
|
import com.lantone.qc.pub.model.doc.LisDoc;
|
|
|
import org.springframework.stereotype.Component;
|
|
|
|
|
|
+import java.util.Arrays;
|
|
|
import java.util.List;
|
|
|
import java.util.Map;
|
|
|
|
|
@@ -21,34 +22,30 @@ import java.util.Map;
|
|
|
@Component
|
|
|
public class FIRC03237 extends QCCatalogue {
|
|
|
public void start(InputInfo inputInfo, OutputInfo outputInfo) {
|
|
|
+ status.set("0");
|
|
|
+ List<String> type = Arrays.asList("A型","B型","O型","o型","AB型","不详","未查","A","B","O","o","AB","1","2","3","4","5","6");
|
|
|
if (inputInfo.getFirstPageRecordDoc() == null){
|
|
|
- status.set("0");
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
- List<LisDoc> lisDocs = inputInfo.getLisDocs();
|
|
|
//1.获取【首页>>血型】填写内容,保存为T_A。若文书不在或字段未填写,直接返回。
|
|
|
if (inputInfo.getFirstPageRecordDoc().getStructureMap() != null) {
|
|
|
Map<String, String> firstpageStructureMap = inputInfo.getFirstPageRecordDoc().getStructureMap();
|
|
|
String bloodType = firstpageStructureMap.get(Content.bloodType);
|
|
|
if (bloodType == null){
|
|
|
- status.set("0");
|
|
|
return;
|
|
|
}
|
|
|
|
|
|
//2.判断:若T_A不属于【A型/B型/O型/AB型/不详/未查/A/B/O/AB/1/2/3/4/5/6】任一,则报规则。
|
|
|
- if (!CatalogueUtil.isEmpty(bloodType) &&
|
|
|
- (!bloodType.contains("A型") || !bloodType.contains("B型") || !bloodType.contains("O型") || !bloodType.contains("AB型")
|
|
|
- || !bloodType.contains("不详") || !bloodType.contains("未查") || !bloodType.contains("A") || !bloodType.contains("B")
|
|
|
- || !bloodType.contains("O") || !bloodType.contains("AB") || !bloodType.contains("1") || !bloodType.contains("2")
|
|
|
- || !bloodType.contains("3") || !bloodType.contains("4") || !bloodType.contains("5") || !bloodType.contains("6"))){
|
|
|
- status.set("-1");
|
|
|
- }
|
|
|
+ if (!CatalogueUtil.isEmpty(bloodType) && (!type.contains(bloodType))) {
|
|
|
+ status.set("-1");
|
|
|
+ return;
|
|
|
+ }
|
|
|
|
|
|
//3.判断:病历内存在【输血*记录】文书,或【病案首页>>血费】>0,若血型填写为(不详/未查/5/6/-),则报规则。
|
|
|
List<ClinicalBloodDoc> clinicalBloodDocs = inputInfo.getClinicalBloodDocs();
|
|
|
if (clinicalBloodDocs !=null && clinicalBloodDocs.size()>0) {
|
|
|
- if (!CatalogueUtil.isEmpty(bloodType) &&
|
|
|
+ if ((!CatalogueUtil.isEmpty(bloodType)) &&
|
|
|
(bloodType.contains("不详") || bloodType.contains("未查") || bloodType.contains("5") || bloodType.contains("6") || bloodType.contains("-"))){
|
|
|
status.set("-1");
|
|
|
return;
|
|
@@ -56,50 +53,55 @@ public class FIRC03237 extends QCCatalogue {
|
|
|
}
|
|
|
|
|
|
if (Integer.valueOf(firstpageStructureMap.get("血费")) >0){
|
|
|
- if (!CatalogueUtil.isEmpty(bloodType) &&
|
|
|
+ if ((!CatalogueUtil.isEmpty(bloodType)) &&
|
|
|
(bloodType.contains("不详") || bloodType.contains("未查") || bloodType.contains("5") || bloodType.contains("6") || bloodType.contains("-"))){
|
|
|
status.set("-1");
|
|
|
return;
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ List<LisDoc> lisDocs = inputInfo.getLisDocs();
|
|
|
//4.获取检验报告单存在【血型鉴定】>>【ABO血型】结果值,保存为T_B。若未获得血型化验结果,则直接返回(或内测时能提示未成功获取血型化验结果)
|
|
|
if (inputInfo.getLisDocs() == null){
|
|
|
- status.set("0");
|
|
|
return;
|
|
|
}
|
|
|
+
|
|
|
+ //5.判断:
|
|
|
for (LisDoc lisDoc : lisDocs) {
|
|
|
- //5.判断:
|
|
|
Map<String, String> structureMap = lisDoc.getStructureMap();
|
|
|
- String result = structureMap.get("AOB血型").replace(" ",null);
|
|
|
- //5.1若T_B为【A型、A】任一(可自己定义更多同义写法或改用正则p11匹配),则T_A必须为【1、A、A型】任一,否则报规则;
|
|
|
- if (result.contains("A型") || result.contains("A")){
|
|
|
- if (!bloodType.contains("1") || !bloodType.contains("A") || !bloodType.contains("A型")){
|
|
|
- status.set("-1");
|
|
|
- return;
|
|
|
+ String check = structureMap.get("报告名称");
|
|
|
+ if (check.contains("输血血样检测") || check.contains("血型鉴定")){
|
|
|
+ String result = structureMap.get("检验结果");
|
|
|
+ //5.1若T_B为【A型、A】任一(可自己定义更多同义写法或改用正则p11匹配),则T_A必须为【1、A、A型】任一,否则报规则;
|
|
|
+ if (result.contains("A型") || result.contains("A")){
|
|
|
+ if (!(bloodType.contains("1") || bloodType.contains("A") || bloodType.contains("A型"))){
|
|
|
+ status.set("-1");
|
|
|
+ return;
|
|
|
+ }
|
|
|
}
|
|
|
- }
|
|
|
- //5.2若T_B为【B型、B 型、B】任一(可自己定义更多同义写法或改用正则p12匹配),则T_A必须为【2、B、B型】任一,否则报规则;
|
|
|
- if (result.contains("B型") || result.contains("B")){
|
|
|
- if (!bloodType.contains("2") || !bloodType.contains("B") || !bloodType.contains("B型")){
|
|
|
- status.set("-1");
|
|
|
- return;
|
|
|
+ //5.2若T_B为【B型、B 型、B】任一(可自己定义更多同义写法或改用正则p12匹配),则T_A必须为【2、B、B型】任一,否则报规则;
|
|
|
+ if (result.contains("B型") || result.contains("B")){
|
|
|
+ if (!(bloodType.contains("2") || bloodType.contains("B") || bloodType.contains("B型"))){
|
|
|
+ status.set("-1");
|
|
|
+ return;
|
|
|
+ }
|
|
|
}
|
|
|
- }
|
|
|
- //5.4若T_B为【O型、O 型、O】任一(可自己定义更多同义写法或改用正则p14匹配),则T_A必须为【3、O、O型】任一,否则报规则;
|
|
|
- if (result.contains("O型") || result.contains("O")){
|
|
|
- if (!bloodType.contains("3") || !bloodType.contains("O") || !bloodType.contains("O型")){
|
|
|
- status.set("-1");
|
|
|
- return;
|
|
|
+ //5.4若T_B为【O型、O 型、O】任一(可自己定义更多同义写法或改用正则p14匹配),则T_A必须为【3、O、O型】任一,否则报规则;
|
|
|
+ if (result.contains("O型") || result.contains("O")){
|
|
|
+ if (!(bloodType.contains("3") || bloodType.contains("O") || bloodType.contains("O型") || bloodType.contains("o") || bloodType.contains("o型"))){
|
|
|
+ status.set("-1");
|
|
|
+ return;
|
|
|
+ }
|
|
|
}
|
|
|
- }
|
|
|
- //5.3若T_B为【AB型、AB 型、AB】任一(可自己定义更多同义写法或改用正则p13匹配),则T_A必须为【4、AB、AB型】任一,否则报规则;
|
|
|
- if (result.contains("AB型") || result.contains("AB")){
|
|
|
- if (!bloodType.contains("4") || !bloodType.contains("AB") || !bloodType.contains("AB型")){
|
|
|
- status.set("-1");
|
|
|
- return;
|
|
|
+ //5.3若T_B为【AB型、AB 型、AB】任一(可自己定义更多同义写法或改用正则p13匹配),则T_A必须为【4、AB、AB型】任一,否则报规则;
|
|
|
+ if (result.contains("AB型") || result.contains("AB")){
|
|
|
+ if (!(bloodType.contains("4") || bloodType.contains("AB") || bloodType.contains("AB型"))){
|
|
|
+ status.set("-1");
|
|
|
+ return;
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
}
|
|
|
}
|
|
|
}
|