|
@@ -13,19 +13,21 @@ import java.util.List;
|
|
|
import java.util.Map;
|
|
|
|
|
|
/**
|
|
|
- * @ClassName : FIRP0188
|
|
|
+ * @ClassName : FIRP03230
|
|
|
* @Description :血型填写错误
|
|
|
* @Author : 贺聪聪
|
|
|
* @Date: 2022-8-3 10:58
|
|
|
*/
|
|
|
@Component
|
|
|
-public class FIRP03230 extends QCCatalogue {
|
|
|
+public class FIRC03237 extends QCCatalogue {
|
|
|
public void start(InputInfo inputInfo, OutputInfo outputInfo) {
|
|
|
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);
|
|
@@ -34,18 +36,20 @@ public class FIRP03230 extends QCCatalogue {
|
|
|
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"))){
|
|
|
+ (!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");
|
|
|
}
|
|
|
|
|
|
+ //3.判断:病历内存在【输血*记录】文书,或【病案首页>>血费】>0,若血型填写为(不详/未查/5/6/-),则报规则。
|
|
|
List<ClinicalBloodDoc> clinicalBloodDocs = inputInfo.getClinicalBloodDocs();
|
|
|
if (clinicalBloodDocs !=null && clinicalBloodDocs.size()>0) {
|
|
|
if (!CatalogueUtil.isEmpty(bloodType) &&
|
|
|
- (bloodType.contains("不详") || bloodType.contains("未查") || bloodType.contains("5") || bloodType.contains("6") || bloodType.contains("-"))){
|
|
|
+ (bloodType.contains("不详") || bloodType.contains("未查") || bloodType.contains("5") || bloodType.contains("6") || bloodType.contains("-"))){
|
|
|
status.set("-1");
|
|
|
return;
|
|
|
}
|
|
@@ -59,32 +63,37 @@ public class FIRP03230 extends QCCatalogue {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ //4.获取检验报告单存在【血型鉴定】>>【ABO血型】结果值,保存为T_B。若未获得血型化验结果,则直接返回(或内测时能提示未成功获取血型化验结果)
|
|
|
if (inputInfo.getLisDocs() == null){
|
|
|
status.set("0");
|
|
|
return;
|
|
|
}
|
|
|
- List<LisDoc> lisDocs = inputInfo.getLisDocs();
|
|
|
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;
|
|
|
}
|
|
|
}
|
|
|
+ //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.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");
|