From 990ddfd92bfe81eb3396d741a3ce9106ea5e132f Mon Sep 17 00:00:00 2001
From: 陈昶聿 <chychen@nbjetron.com>
Date: 星期五, 31 七月 2026 14:11:24 +0800
Subject: [PATCH] 【市一】报错调整

---
 smartor/src/main/java/com/smartor/service/impl/ServiceSLTDHealthcareRecordServiceImpl.java |   91 +++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 90 insertions(+), 1 deletions(-)

diff --git a/smartor/src/main/java/com/smartor/service/impl/ServiceSLTDHealthcareRecordServiceImpl.java b/smartor/src/main/java/com/smartor/service/impl/ServiceSLTDHealthcareRecordServiceImpl.java
index 2ada147..82c4094 100644
--- a/smartor/src/main/java/com/smartor/service/impl/ServiceSLTDHealthcareRecordServiceImpl.java
+++ b/smartor/src/main/java/com/smartor/service/impl/ServiceSLTDHealthcareRecordServiceImpl.java
@@ -9,6 +9,8 @@
 import com.ruoyi.common.core.domain.entity.SysUserDept;
 import com.ruoyi.common.core.domain.entity.SysUserRole;
 import com.ruoyi.common.utils.StringUtils;
+import com.smartor.common.enums.EmergencyLevelEnum;
+import com.smartor.common.enums.ImportFlagEnum;
 import com.ruoyi.common.utils.http.HttpUtils;
 import com.smartor.common.DistinctByProperty;
 import com.smartor.domain.*;
@@ -795,7 +797,6 @@
         patMedInhosp.setInhospno(dto.getHealthcareRecordNo());
         patMedInhosp.setFuflag("1");
 
-
         if (StringUtils.isNotEmpty(patArchive.getNotrequiredFlag()) && patArchive.getNotrequiredFlag().equals("1"))
             patMedInhosp.setFuflag("0");
         if ("0".equals(cry)) {
@@ -840,6 +841,13 @@
             setDischargeInfo(patMedInhosp, dto);
         } else {
             setAdmissionInfo(patMedInhosp, dto);
+            patMedInhosp.setEncounterSourceId(dto.getEncounterSourceId() == null ? "" : dto.getEncounterSourceId());
+            if (StringUtils.isNotEmpty(dto.getEncounterSourceId())) {
+                //鏍规嵁 encounterSourceId 鑾峰彇 importanceFlagCode   emergencyLevelCode
+                Map<String, String> applyInfo = hospitalizedApply(dto.getEncounterSourceId(), dto.getOrgId());
+                patMedInhosp.setImportanceFlagCode(applyInfo.get("importanceFlagCode"));
+                patMedInhosp.setEmergencyLevelCode(applyInfo.get("emergencyLevelCode"));
+            }
         }
 
         patMedInhosp.setDrname(dto.getDoctorName());
@@ -884,6 +892,86 @@
         patMedInhosp.setHospitaldistrictid("" + dto.getAreaId());
         patMedInhosp.setHospitaldistrictcode("" + dto.getAreaId());
         patMedInhosp.setHospitaldistrictname(dto.getAreaName());
+    }
+
+    /**
+     * 鏍规嵁鍏ラ櫌鐢宠鍗旾D鏌ヨ鍏ラ櫌鐢宠鍗曡鎯�
+     * 鍙彁鍙� importanceFlagCode锛坕mportanceFlagCodeList閫楀彿鎷兼帴锛夊拰 emergencyLevelCode 涓や釜鍊�
+     */
+    private Map<String, String> hospitalizedApply(String encounterSourceId, String orgid) {
+        Map<String, String> applyInfo = new HashMap<>();
+        Map<String, String> headers = buildRequestHeaders();
+        log.info("闄㈢敵璇峰崟ID鏌ヨ鍏ラ櫌鐢宠鍗曪細{},appKey:{}", sltdPubPath + "/sf/hospitalizedApply/query", APP_KEY);
+        //璁剧疆鍏ュ弬
+        Map<String, Object> requestParams = new HashMap<>();
+        requestParams.put("applyId", encounterSourceId);
+        requestParams.put("orgId", orgid);
+
+        String result = null;
+        if (StringUtils.isNotEmpty(encounterSourceId) && StringUtils.isNotEmpty(orgid))
+            result = HttpUtils.sendPostByHeader(sltdPubPath + "/sf/hospitalizedApply/query", new Gson().toJson(requestParams), headers);
+
+        if (StringUtils.isEmpty(result)) {
+            log.error("銆恏ospitalizedApply銆戞帴鍙h繑鍥炰负绌猴紝applyId={}", encounterSourceId);
+            return applyInfo;
+        }
+        try {
+            Gson gson = new Gson();
+            Type mapType = new TypeToken<Map<String, Object>>() {
+            }.getType();
+            Map<String, Object> responseMap = gson.fromJson(result, mapType);
+            Object dataObj = responseMap == null ? null : responseMap.get("data");
+            if (dataObj instanceof Map) {
+                Map<String, Object> data = (Map<String, Object>) dataObj;
+                //閲嶈鎬ф爣璁扮紪鐮侊紝鎺ュ彛杩斿洖鏄暟缁勶紝闇�瑕佽浆鎹负瀛楀吀鍚嶇О
+                Object importanceFlagCodeListObj = data.get("importanceFlagCodeList");
+                if (importanceFlagCodeListObj instanceof List) {
+                    List<?> importanceFlagCodeList = (List<?>) importanceFlagCodeListObj;
+                    // 杩囨护鎺� null 鍊�
+                    List<String> nonNullList = importanceFlagCodeList.stream()
+                            .filter(Objects::nonNull)
+                            .map(Object::toString)
+                            .filter(StringUtils::isNotEmpty)
+                            .collect(Collectors.toList());
+
+                    if (!nonNullList.isEmpty()) {
+                        String importanceFlagLabel;
+                        if (nonNullList.size() == 1) {
+                            // 鍙湁涓�涓�硷紝鐩存帴閫氳繃鏋氫妇鑾峰彇鎻忚堪
+                            importanceFlagLabel = ImportFlagEnum.getDescByCode(nonNullList.get(0));
+                        } else {
+                            // 澶氫釜鍊硷紝鐢ㄩ�楀彿鎷兼帴鏋氫妇鎻忚堪
+                            StringBuilder labelBuilder = new StringBuilder();
+                            for (String code : nonNullList) {
+                                String label = ImportFlagEnum.getDescByCode(code);
+                                if (StringUtils.isNotEmpty(label)) {
+                                    labelBuilder.append(label).append(",");
+                                }
+                            }
+                            importanceFlagLabel = StringUtils.stripEnd(labelBuilder.toString(), ",");
+                        }
+
+                        if (StringUtils.isNotEmpty(importanceFlagLabel)) {
+                            applyInfo.put("importanceFlagCode", importanceFlagLabel);
+                        }
+                    }
+                }
+                //绱ф�ョ▼搴︾紪鐮侊紝閫氳繃鏋氫妇杞崲鎻忚堪
+                Object emergencyLevelCodeObj = data.get("emergencyLevelCode");
+                if (emergencyLevelCodeObj != null) {
+                    String emergencyLevelLabel = EmergencyLevelEnum.getDescByCode(emergencyLevelCodeObj.toString());
+                    if (StringUtils.isNotEmpty(emergencyLevelLabel)) {
+                        applyInfo.put("emergencyLevelCode", emergencyLevelLabel);
+                    }
+                }
+            } else {
+                log.error("銆恏ospitalizedApply銆戞帴鍙h繑鍥瀌ata涓嶆槸瀵硅薄锛宎pplyId={}锛宺esult锛歿}", encounterSourceId, result);
+            }
+        } catch (Exception e) {
+            log.error("銆恏ospitalizedApply銆戣В鏋愬叆闄㈢敵璇峰崟璇︽儏澶辫触锛宎pplyId={}", encounterSourceId, e);
+        }
+        log.info("銆恏ospitalizedApply銆慳pplyId={}锛宨mportanceFlagCode={}锛宔mergencyLevelCode={}", encounterSourceId, applyInfo.get("importanceFlagCode"), applyInfo.get("emergencyLevelCode"));
+        return applyInfo;
     }
 
     /**
@@ -1076,6 +1164,7 @@
         dto.setCostCategoryCode(getStringValue(dataItem, "costCategoryCode"));
         dto.setCostNatureName(getStringValue(dataItem, "costNatureName"));
         dto.setCostNatureCode(getStringValue(dataItem, "costNatureCode"));
+        dto.setEncounterSourceId(getStringValue(dataItem, "encounterSourceId"));
         dto.setFurtherConsultationStatus(getIntegerValue(dataItem, "furtherConsultationStatus"));
         Object mainDiagObj = dataItem.get("mainDischargeDiagnosis");
         if (mainDiagObj instanceof Map) {

--
Gitblit v1.9.3