@@ -0,0 +1,32 @@
+package com.lantone.qc.kernel.catalogue.behospitalized;
+
+import com.lantone.qc.kernel.catalogue.QCCatalogue;
+import com.lantone.qc.pub.model.InputInfo;
+import com.lantone.qc.pub.model.OutputInfo;
+import org.apache.commons.lang3.StringUtils;
+import org.springframework.stereotype.Component;
+import java.util.Map;
+/**
+ * @Description: 入院记录喂养史未填写
+ * @author: dsYun
+ * @time: 2024/10/12 17:28
+ */
+@Component
+public class BEH0725 extends QCCatalogue {
+ @Override
+ public void start(InputInfo inputInfo, OutputInfo outputInfo) {
+ status.set("0");
+ if(inputInfo.getBeHospitalizedDoc() == null){
+ return;
+ }
+ Map<String, String> structureMap = inputInfo.getBeHospitalizedDoc().getStructureMap();
+ if (StringUtils.isEmpty(structureMap.get("喂养史"))) {
+ status.set("-1");
+}
@@ -0,0 +1,37 @@
+import com.lantone.qc.pub.model.entity.Address;
+import com.lantone.qc.pub.util.ListUtil;
+import com.lantone.qc.pub.util.StringUtil;
+import java.util.List;
+import java.util.regex.Pattern;
+ * @Description: 入院记录出生史未填写
+public class BEH0726 extends QCCatalogue {
+ if (StringUtils.isEmpty(structureMap.get("出生史"))) {
@@ -0,0 +1,52 @@
+import java.util.regex.Matcher;
+ * @Description: 出生史中的分娩方式与现病史中的分娩方式不一致
+ * @time: 2024/10/12 14:02
+public class BEH0727 extends QCCatalogue {
+ String birthHistory = structureMap.get("出生史");
+ String presentText = structureMap.get("现病史");
+ if (StringUtil.isBlank(birthHistory) || StringUtil.isBlank(presentText)) {
+ String regex = "分娩方式:([^,。]+)";
+ Pattern pattern = Pattern.compile(regex);
+ Matcher matcher = pattern.matcher(birthHistory);
+ if (matcher.find()) {
+ String modeOfDelivery = matcher.group(1); // 获取匹配到的数字
+ if(StringUtil.isBlank(modeOfDelivery)){
+ if(!presentText.contains(modeOfDelivery)){
@@ -0,0 +1,47 @@
+ * @Description: 产科检查中髂前上棘间径范围23-26cm
+public class BEH0728 extends QCCatalogue {
+ if (inputInfo.getBeHospitalizedDoc() == null) {
+ String obstetricExamination = structureMap.get("专科检查");
+ if (StringUtil.isBlank(obstetricExamination)) {
+ String regex = "髂前上棘间径(\\d+)cm";
+ Matcher matcher = pattern.matcher(obstetricExamination);
+ String numberStr = matcher.group(1); // 获取匹配到的数字
+ int number = Integer.parseInt(numberStr);
+ if (number < 23 || number > 26) {
@@ -0,0 +1,44 @@
+ * @Description: 产科检查中坐骨结节间径范围8-9cm
+public class BEH0729 extends QCCatalogue {
+ String regex = "坐骨结节间径(\\d+)cm";
+ if (number < 8 || number > 9) {
+ * @Description: 产科检查中髂嵴间径范围25-28cm
+public class BEH0730 extends QCCatalogue {
+ String regex = "髂嵴间径(\\d+)cm";
+ if (number < 25 || number > 28) {
+ * @Description: 产科检查中骶耻外径范围18-20cm
+public class BEH0731 extends QCCatalogue {
+ String regex = "骶耻外径(\\d+)cm";
+ if (number < 18 || number > 20) {
@@ -0,0 +1,51 @@
+package com.lantone.qc.kernel.catalogue.firstpagerecord;
+import com.lantone.qc.kernel.util.CatalogueUtil;
+ * @ClassName : FIRP03241
+ * @Description: 出院31天内再住院计划填写错误
+ * @author: hecc
+ * @data: 2022/9/2 13:37
+public class FIRP03240 extends QCCatalogue {
+ if (inputInfo.getFirstPageRecordDoc() == null || inputInfo.getFirstPageRecordDoc().getStructureMap() == null) {
+ if (inputInfo.getFirstPageRecordDoc() != null && inputInfo.getFirstPageRecordDoc().getStructureMap() != null) {
+ Map<String, String> firstpageStructureMap = inputInfo.getFirstPageRecordDoc().getStructureMap();
+ //获取病案首页结构化数据三十一天内再住院计划
+ String secondBeHospital = firstpageStructureMap.get("三十一天内再住院计划");
+ //获取病案首页结构化数据在住院目的
+ String purpose = firstpageStructureMap.get("再住院目的");
+ if (CatalogueUtil.isEmpty(secondBeHospital)) {
+ if (StringUtils.isNotEmpty(secondBeHospital)) {
+ //【三十一天内再住院计划】填写非【有/无/1/2】则报出
+ if (!(secondBeHospital.contains("有") || secondBeHospital.contains("无") || secondBeHospital.contains("1") || secondBeHospital.contains("2"))) {
+ //【在住院目的】填写非【-/-】或空,【三十一天内再住院】为【无/1】则报出
+ if (!(purpose.contains("-") || purpose.contains("-") || purpose.contains(" ") || purpose.contains(" ") || purpose.contains(null))) {
+ if (secondBeHospital.contains("无") || secondBeHospital.contains("1")) {
@@ -6,11 +6,12 @@ import com.lantone.qc.pub.model.InputInfo;
import com.lantone.qc.pub.model.OutputInfo;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Component;
import java.util.Map;
/**
- * @ClassName : FIRP03241
- * @Description: 出院31天内再住院计划填写错误
+ * @Description: 有出院31天再住院计划,目的未填写
* @author: hecc
* @data: 2022/9/2 13:37
*/
@@ -37,9 +38,9 @@ public class FIRP03241 extends QCCatalogue {
status.set("-1");
return;
}
- //【在住院目的】填写非【-/-】或空,【三十一天内再住院】为【无/1】则报出
- if (!(purpose.contains("-") || purpose.contains("-") || purpose.contains(" ") || purpose.contains(" ") || purpose.contains(null))) {
- if (secondBeHospital.contains("无") || secondBeHospital.contains("1")) {
+ //【三十一天内再住院】为【有/2】,【在住院目的】填写【-/-】或空则报出
+ if (secondBeHospital.contains("有") || secondBeHospital.contains("2")) {
+ if ((purpose.contains("-") || purpose.contains("-") || purpose.contains(" ") || purpose.contains(" ") || purpose.contains(null))) {
@@ -12,7 +12,7 @@ spring:
charset: UTF-8
enabled: true
profiles:
- active: debug
+ active: local
qc:
hospital_id: 1,2,3,4,5,6,7,8,10,13,15,20,34,36