From b140f1daa938b9b059a320604593698bd3091fdc Mon Sep 17 00:00:00 2001 From: wangsq Date: Wed, 9 Sep 2026 14:31:52 +0800 Subject: [PATCH] =?UTF-8?q?=E7=94=B5=E5=AD=90=E5=81=A5=E5=BA=B7=E5=8D=A1-?= =?UTF-8?q?=E6=8A=A5=E5=91=8A=E8=A7=A3=E8=AF=BB=E3=80=81=E6=99=BA=E8=83=BD?= =?UTF-8?q?=E5=AF=BC=E8=AF=8A=E3=80=81=E9=A2=84=E9=97=AE=E8=AF=8A=EF=BC=8C?= =?UTF-8?q?=E9=83=A8=E5=88=86=E9=85=8D=E7=BD=AE=E5=90=8D=E7=A7=B0=E7=BB=9F?= =?UTF-8?q?=E4=B8=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../action/healthcard/AIGuidanceAction.java | 2 +- .../action/healthcard/HCPreConsultAction.java | 9 +++- .../action/healthcard/HCReportAction.java | 2 +- .../common/healthcard/HCPreConsultHelper.java | 35 ++++++------ .../healthcard/config/HCAIGuidanceConfig.java | 5 +- .../healthcard/config/HCPreConsultConfig.java | 44 ++++++++------- .../healthcard/config/HCReportConfig.java | 4 +- .../common/service/AIGuidanceService.java | 18 +++---- src/main/resources/hc-config.xml | 53 ++++++++----------- 9 files changed, 83 insertions(+), 89 deletions(-) diff --git a/src/main/java/com/ynxbd/common/action/healthcard/AIGuidanceAction.java b/src/main/java/com/ynxbd/common/action/healthcard/AIGuidanceAction.java index a81cb59..d79863d 100644 --- a/src/main/java/com/ynxbd/common/action/healthcard/AIGuidanceAction.java +++ b/src/main/java/com/ynxbd/common/action/healthcard/AIGuidanceAction.java @@ -39,7 +39,7 @@ public class AIGuidanceAction extends BaseAction { List> resultList = new ArrayList<>(); Map resultMap = new HashMap<>(); - resultMap.put("hosId", HCAIGuidanceConfig.HOSP_ID); + resultMap.put("hosId", HCAIGuidanceConfig.H_HOSP_ID); resultMap.put("hosName", HCAIGuidanceConfig.HOSP_NAME); resultList.add(resultMap); diff --git a/src/main/java/com/ynxbd/common/action/healthcard/HCPreConsultAction.java b/src/main/java/com/ynxbd/common/action/healthcard/HCPreConsultAction.java index 12a9255..0038334 100644 --- a/src/main/java/com/ynxbd/common/action/healthcard/HCPreConsultAction.java +++ b/src/main/java/com/ynxbd/common/action/healthcard/HCPreConsultAction.java @@ -232,18 +232,25 @@ public class HCPreConsultAction extends BaseAction { if (!token.equals(md5)) { return Result.error(ResultEnum.PARAM_IS_INVALID); } + if ("0".equals(doctCode)) { + doctCode = "*"; + } Register order = new PreConsultDao().selectRegOrderNo(tradeNo); if (order == null) { return Result.error("未找到挂号订单"); } - String url = HCPreConsultHelper.getH5DoctorURL(order.getOpenid(), order.getOutTradeNo(), deptCode, deptName, doctCode, doctName, redirectUrl); + String url = HCPreConsultHelper.getH5DoctorURL(order.getOutTradeNo(), deptCode, deptName, doctCode, doctName, redirectUrl); return Result.success(url); } catch (Exception e) { return Result.error(e); } } + public static void main(String[] args) { + System.out.println(DigestUtils.md5Hex("4500000333202609044368720487G001" + "xbd" + "0301" + "xbd" + "*").toUpperCase()); + } + /** * [HIS][预问诊][医生端][方式二]7.3.1-获取预问诊报告数据 */ diff --git a/src/main/java/com/ynxbd/common/action/healthcard/HCReportAction.java b/src/main/java/com/ynxbd/common/action/healthcard/HCReportAction.java index 8afac5d..bacaed0 100644 --- a/src/main/java/com/ynxbd/common/action/healthcard/HCReportAction.java +++ b/src/main/java/com/ynxbd/common/action/healthcard/HCReportAction.java @@ -64,7 +64,7 @@ public class HCReportAction extends BaseAction { // partnerId:合作方ID 腾讯健康提供 JSONObject jsonObject = OkHttpHelper.postJson(url + HCReportConfig.PARTNER_ID, req -> { req.put("reqHead", reqHead); - req.put("hospitalId", HCReportConfig.HOSP_ID); + req.put("hospitalId", HCReportConfig.H_HOSP_ID); req.put("outerId", reportId); req.put("healthCardId", healthCardId); req.put("patientId", patientId); diff --git a/src/main/java/com/ynxbd/common/healthcard/HCPreConsultHelper.java b/src/main/java/com/ynxbd/common/healthcard/HCPreConsultHelper.java index 4fa6e35..dd9f818 100644 --- a/src/main/java/com/ynxbd/common/healthcard/HCPreConsultHelper.java +++ b/src/main/java/com/ynxbd/common/healthcard/HCPreConsultHelper.java @@ -1,12 +1,11 @@ package com.ynxbd.common.healthcard; import com.alibaba.fastjson.JSONObject; -import com.google.gson.*; import com.ynxbd.common.bean.Patient; import com.ynxbd.common.bean.enums.MerchantEnum; import com.ynxbd.common.bean.pay.Register; -import com.ynxbd.common.bean.sms.SmsTemplate; import com.ynxbd.common.healthcard.config.HCPreConsultConfig; +import com.ynxbd.common.healthcard.config.HCReportConfig; import com.ynxbd.common.helper.common.CodeHelper; import com.ynxbd.common.helper.common.JsonHelper; import com.ynxbd.common.helper.http.OkHttpHelper; @@ -16,10 +15,7 @@ import com.ynxbd.wx.config.WeChatConfig; import lombok.extern.slf4j.Slf4j; import okhttp3.Headers; import org.apache.commons.lang3.ObjectUtils; -import org.ehcache.Cache; -import java.nio.charset.StandardCharsets; -import java.security.MessageDigest; import java.time.Instant; import java.util.*; @@ -38,7 +34,7 @@ public class HCPreConsultHelper { headers.add("Th-Auth-Type", "Th-Auth-Hc"); headers.add("Th-Auth-Hc-App-Token", token); - headers.add("Th-Auth-Hc-HospitalId", HCPreConsultConfig.APP_HOSP_ID); + headers.add("Th-Auth-Hc-HospitalId", HCPreConsultConfig.H_HOSP_ID); headers.add("Th-Auth-Hc-Timestamp", timestamp); if (sign != null) { headers.add("Th-Auth-Hc-Sign", sign); @@ -99,7 +95,7 @@ public class HCPreConsultHelper { ? "https://med-biz-pre.wecity.qq.com/api/report/PushSubscribeMessage/" : "https://med-biz.wecity.qq.com/api/report/PushSubscribeMessage/"; - HCSignHelper config = HCPreConsultConfig.createSign(); + HCSignHelper config = HCReportConfig.createSign(); // 报告配置生成签名 String requestId = config.getRequestId(); Map reqHead = new HashMap<>(); @@ -107,17 +103,17 @@ public class HCPreConsultHelper { Map sceneData = new HashMap<>(); sceneData.put("registerId", registerId); - sceneData.put("registerIdSign", HCPreConsultConfig.toHmacSha256Example(HCPreConsultConfig.SECRET_KEY, HCPreConsultConfig.HOSP_ID + registerId)); + sceneData.put("registerIdSign", HCPreConsultConfig.createRegisterSign(registerId)); sceneData.put("encounterDate", regDate + " " + begTime); // yyyy-MM-dd HH:mm:ss sceneData.put("partnerAppId", HCPreConsultConfig.APP_ID); // 开发者ID(AppID),在管理>开发商接入 下查询 - sceneData.put("partnerId", HCPreConsultConfig.SCENE_PARTNER_ID); + sceneData.put("partnerId", HCPreConsultConfig.PARTNER_ID); - // partnerId:合作方ID 腾讯健康提供 - JSONObject respJson = post(url + HCPreConsultConfig.PARTNER_ID, req -> { + // partnerId:注意这里使用的是报告配置的-PARTNER_ID + JSONObject respJson = post(url + HCReportConfig.PARTNER_ID, req -> { req.put("reqHead", reqHead); req.put("appId", WeChatConfig.APP_ID); - req.put("hospitalId", HCPreConsultConfig.APP_HOSP_ID); + req.put("hospitalId", HCPreConsultConfig.H_HOSP_ID); req.put("openId", openid); req.put("healthCardId", ObjectUtils.isEmpty(patient.getHealthCardId()) ? "" : patient.getHealthCardId()); @@ -137,14 +133,13 @@ public class HCPreConsultHelper { headers.add("god-portal-request-id", requestId); }); - log.info("[预问诊]resp={}", JsonHelper.toJsonString(respJson)); + log.warn("[预问诊]上传挂号数据 resp={}", JsonHelper.toJsonString(respJson)); String code = respJson.getString("code"); String message = respJson.getString("msg"); if (!"0".equals(code)) { log.error("[预问诊]上传挂号数据-失败:{}", message); } else { log.info("[预问诊]上传挂号数据-成功"); -// MessagePushConfig.regEndPreConsult(merchantEnum, order); } } @@ -192,7 +187,7 @@ public class HCPreConsultHelper { /** * 7.2 接入方式一:打开完整页面 */ - public static String getH5DoctorURL(String openId, String registerId, String departmentId, String departmentName, String doctorId, String doctorName, String redirectUrl) throws ServiceException { + public static String getH5DoctorURL(String registerId, String departmentId, String departmentName, String doctorId, String doctorName, String redirectUrl) throws ServiceException { String token = getH5DoctorLoginToken(doctorId, doctorName); if (ObjectUtils.isEmpty(token)) { throw new ServiceException("token获取失败"); @@ -215,12 +210,12 @@ public class HCPreConsultHelper { String url = "https://aimedical.wecity.qq.com/cgi-bin/v1/Diagnosis/RationalDrugServer/RationalDrugServant/HisToolLogin"; Map data = new HashMap<>(); - data.put("partner_id", HCPreConsultConfig.SCENE_PARTNER_ID); + data.put("partner_id", HCPreConsultConfig.PARTNER_ID); data.put("doctor_id", doctorId); data.put("doctor_name", doctorName); Map header = new HashMap<>(); - header.put("hospital_id", HCPreConsultConfig.DOCTOR_PC_HOSP_ID); + header.put("hospital_id", HCPreConsultConfig.HOSP_ID); header.put("sub_hospital_id", ""); JSONObject resultJson = post(url, params -> { @@ -229,7 +224,7 @@ public class HCPreConsultHelper { log.info("[7.2.1 通过 HisToolLoginIn接口获取 token] 入参:{}", JsonHelper.toJsonString(params)); }, headers -> { String timestamp = String.valueOf(System.currentTimeMillis()); - headers.add("god-portal-signature", HCPreConsultConfig.toHmacSha256Example(HCPreConsultConfig.DOCTOR_PC_SECRET_KEY, HCPreConsultConfig.DOCTOR_PC_HOSP_ID + timestamp)); + headers.add("god-portal-signature", HCPreConsultConfig.toHmacSha256Example(HCPreConsultConfig.SECRET_KEY, HCPreConsultConfig.HOSP_ID + timestamp)); headers.add("god-portal-timestamp", timestamp); headers.add("god-portal-request-id", CodeHelper.get32UUID()); }); @@ -359,7 +354,7 @@ public class HCPreConsultHelper { String sign = HCPreConsultConfig.calculateSign(timestamp); headers.set("Th-Auth-Type", "Th-Auth-Hc"); - headers.set("Th-Auth-Hc-HospitalId", HCPreConsultConfig.APP_HOSP_ID); + headers.set("Th-Auth-Hc-HospitalId", HCPreConsultConfig.H_HOSP_ID); headers.set("Th-Auth-Hc-Timestamp", timestamp); headers.set("Th-Auth-Hc-ChannelNum", "0"); // headers.set("Th-Auth-Hc-Relate-AppId", WeChatConfig.APP_ID); @@ -368,7 +363,7 @@ public class HCPreConsultHelper { } log.warn("[预问诊-医生端]获取token appId={}, headers={\"Th-Auth-Type\": \"{}\", \"Th-Auth-Hc-HospitalId\": \"{}\", \"Th-Auth-Hc-Timestamp\": \"{}\", \"Th-Auth-Hc-ChannelNum\": \"0\", \"Th-Auth-Hc-Sign\":\"{}\"}", - HCPreConsultConfig.APP_ID, "Th-Auth-Hc", HCPreConsultConfig.APP_HOSP_ID, timestamp, sign); + HCPreConsultConfig.APP_ID, "Th-Auth-Hc", HCPreConsultConfig.H_HOSP_ID, timestamp, sign); }); log.warn("[预问诊-医生端]获取token 响应数据:{}", JsonHelper.toJsonString(resultJson)); diff --git a/src/main/java/com/ynxbd/common/healthcard/config/HCAIGuidanceConfig.java b/src/main/java/com/ynxbd/common/healthcard/config/HCAIGuidanceConfig.java index 3487a86..f470e6e 100644 --- a/src/main/java/com/ynxbd/common/healthcard/config/HCAIGuidanceConfig.java +++ b/src/main/java/com/ynxbd/common/healthcard/config/HCAIGuidanceConfig.java @@ -19,7 +19,7 @@ public class HCAIGuidanceConfig { // 是否为分时段挂号 public final static boolean IS_SPLIT_TIME_REG; // 配置文件读取项 - public final static String HOSP_ID; + public final static String H_HOSP_ID; /** * AI版:电子健康卡AppId(管理>开发商接入) @@ -59,7 +59,8 @@ public class HCAIGuidanceConfig { BRANCH_ID = config.getString("branch_id"); - HOSP_ID = config.getString("hosp_id"); + H_HOSP_ID = config.getString("h_hosp_id"); + HOSP_NAME = config.getString("hosp_name"); HOSP_ADDRESS = config.getString("hosp_address", ""); HOSP_INTRO = config.getString("hosp_intro", ""); diff --git a/src/main/java/com/ynxbd/common/healthcard/config/HCPreConsultConfig.java b/src/main/java/com/ynxbd/common/healthcard/config/HCPreConsultConfig.java index 10313f4..61f4314 100644 --- a/src/main/java/com/ynxbd/common/healthcard/config/HCPreConsultConfig.java +++ b/src/main/java/com/ynxbd/common/healthcard/config/HCPreConsultConfig.java @@ -3,7 +3,6 @@ package com.ynxbd.common.healthcard.config; import com.google.gson.*; import com.ynxbd.common.config.EhCacheConfig; import com.ynxbd.common.healthcard.HCPreConsultHelper; -import com.ynxbd.common.healthcard.HCSignHelper; import com.ynxbd.common.helper.common.HMACHelper; import com.ynxbd.common.helper.common.XmlConfigHelper; import com.ynxbd.wx.config.WeChatConfig; @@ -23,19 +22,18 @@ import java.util.*; @Slf4j public class HCPreConsultConfig { - public static final String PARTNER_ID; - public static final String TOKEN; - public static final String APP_ID; // 开发者ID(AppID),在管理>开发商接入下查询 public static final String APP_SECRET; // 开发者密钥 - public static final String APP_HOSP_ID; // 开发者密钥 - public static final String SCENE_PARTNER_ID; // 1开头scene_data传递 + public static final String H_HOSP_ID; // 机构ID(每家医院不一样) public static final String HOSP_ID; // 医院ID - public static final String SECRET_KEY; // 密钥:医生端问诊报告获取使用 - public static final String DEV_OPEN_IDS; // 用于测试的openid - public static final String DOCTOR_PC_HOSP_ID; // 用于测试的openid - public static final String DOCTOR_PC_SECRET_KEY; // 用于测试的openid + public static final String PARTNER_ID; + public static final String SECRET_KEY; + + public static final String REPORT_HOSP_ID; // 密钥:医生端问诊报告获取使用 + public static final String REPORT_SECRET_KEY; // 密钥:医生端问诊报告获取使用 + + public static final String DEV_OPEN_IDS; // 用于测试的openid public static final boolean IS_DEV; public static final boolean IS_DEV_PUSH_SUBSCRIBE_MESSAGE; @@ -59,17 +57,14 @@ public class HCPreConsultConfig { APP_ID = config.getString("app_id"); APP_SECRET = config.getString("app_secret"); - APP_HOSP_ID = config.getString("app_hosp_id"); + H_HOSP_ID = config.getString("h_hosp_id"); // ===================================================== HOSP_ID = config.getString("hosp_id"); - SECRET_KEY = config.getString("secret_key"); PARTNER_ID = config.getString("partner_id"); - TOKEN = config.getString("token"); - // 医生 - SCENE_PARTNER_ID = config.getString("scene_partner_id"); + SECRET_KEY = config.getString("secret_key"); - DOCTOR_PC_HOSP_ID = config.getString("doctor_pc_hosp_id"); - DOCTOR_PC_SECRET_KEY = config.getString("doctor_pc_secret_key"); + REPORT_HOSP_ID = config.getString("report_hosp_id"); + REPORT_SECRET_KEY = config.getString("report_secret_key"); DEV_OPEN_IDS = config.getString("dev_open_ids"); @@ -119,10 +114,10 @@ public class HCPreConsultConfig { return openIdList.contains(openid); } - // 生成签名 - public static HCSignHelper createSign() { - return new HCSignHelper().createSign(PARTNER_ID, TOKEN); - } +// // 生成签名 +// public static HCSignHelper createSign() { +// return new HCSignHelper().createSign(PARTNER_ID, TOKEN); +// } /** @@ -147,6 +142,9 @@ public class HCPreConsultConfig { return signature.equals(cacheSign); } + public static String createRegisterSign(String registerId) { + return toHmacSha256Example(REPORT_SECRET_KEY, REPORT_HOSP_ID + registerId); + } /** * @param data 数据 @@ -183,7 +181,7 @@ public class HCPreConsultConfig { try { String sb = "appId=" + APP_ID + "&channelNum=" + "0" + - "&hospitalId=" + APP_HOSP_ID + + "&hospitalId=" + H_HOSP_ID + "×tamp=" + timestamp + APP_SECRET; @@ -251,7 +249,7 @@ public class HCPreConsultConfig { params.put("appToken", appToken); params.put("businessId", BUSINESS_ID); params.put("channelNum", "0"); - params.put("hospitalId", APP_HOSP_ID); + params.put("hospitalId", H_HOSP_ID); params.put("relateAppId", WeChatConfig.APP_ID); params.put("relateOpenId", openId); params.put("timestamp", timestamp); diff --git a/src/main/java/com/ynxbd/common/healthcard/config/HCReportConfig.java b/src/main/java/com/ynxbd/common/healthcard/config/HCReportConfig.java index 3681393..4aa9da8 100644 --- a/src/main/java/com/ynxbd/common/healthcard/config/HCReportConfig.java +++ b/src/main/java/com/ynxbd/common/healthcard/config/HCReportConfig.java @@ -15,13 +15,13 @@ public class HCReportConfig { public static final String PARTNER_ID; // 合作方ID(每家医院不一样) - public static final String HOSP_ID; // 医院ID(每家医院不一样) + public static final String H_HOSP_ID; // 机构ID(每家医院不一样) static { XmlConfigHelper config = new XmlConfigHelper().read("hc-config.xml", "report"); IS_DEV = config.getBoolean("is_dev", false); - HOSP_ID = config.getString("hosp_id"); + H_HOSP_ID = config.getString("h_hosp_id"); TOKEN = config.getString(IS_DEV ? "dev_token" : "token"); PARTNER_ID = config.getString(IS_DEV ? "dev_partner_id" : "partner_id"); diff --git a/src/main/java/com/ynxbd/common/service/AIGuidanceService.java b/src/main/java/com/ynxbd/common/service/AIGuidanceService.java index b4809ac..98d9197 100644 --- a/src/main/java/com/ynxbd/common/service/AIGuidanceService.java +++ b/src/main/java/com/ynxbd/common/service/AIGuidanceService.java @@ -39,11 +39,11 @@ public class AIGuidanceService { } List> resultList = new ArrayList<>(); - if (!HCAIGuidanceConfig.HOSP_ID.equals(hosId)) { // 医院id校验 + if (!HCAIGuidanceConfig.H_HOSP_ID.equals(hosId)) { // 医院id校验 return Result.success(ResultEnum.HC_SUCCESS, resultList); } Map map = new HashMap<>(); - map.put("hosId", HCAIGuidanceConfig.HOSP_ID); + map.put("hosId", HCAIGuidanceConfig.H_HOSP_ID); map.put("branchId", HCAIGuidanceConfig.BRANCH_ID); // 如果有分院,则填写分院Id, 主院的分院Id为hosId本身 map.put("hosName", HCAIGuidanceConfig.HOSP_NAME); // 如果是分院,则填写分院名称,否则填写主院名称 map.put("hosIntro", HCAIGuidanceConfig.HOSP_INTRO); @@ -77,7 +77,7 @@ public class AIGuidanceService { } List dataList = new ArrayList<>(); - if (!HCAIGuidanceConfig.HOSP_ID.equals(hosId)) { // 医院id校验 + if (!HCAIGuidanceConfig.H_HOSP_ID.equals(hosId)) { // 医院id校验 log.warn("[智能导诊]科室列表查询-hosId不匹配"); return Result.success(ResultEnum.HC_SUCCESS, dataList); } @@ -177,7 +177,7 @@ public class AIGuidanceService { } } - if (!HCAIGuidanceConfig.HOSP_ID.equals(hosId)) { // 医院id校验 + if (!HCAIGuidanceConfig.H_HOSP_ID.equals(hosId)) { // 医院id校验 log.warn("[智能导诊]医生列表查询-hosId不匹配"); return Result.success(ResultEnum.HC_SUCCESS, new ArrayList<>()); } @@ -300,10 +300,10 @@ public class AIGuidanceService { public Result getPatientCardList(String hosId, String branchId, String patientId) { List cardList = new ArrayList<>(); Map resp = new HashMap<>(); - resp.put("hospitalId", HCAIGuidanceConfig.HOSP_ID); + resp.put("hospitalId", HCAIGuidanceConfig.H_HOSP_ID); resp.put("cardList", cardList); - if (!HCAIGuidanceConfig.HOSP_ID.equals(hosId)) { // 医院id校验 + if (!HCAIGuidanceConfig.H_HOSP_ID.equals(hosId)) { // 医院id校验 log.warn("[智能导诊]查询就诊人列表-hosId不匹配"); return Result.success(ResultEnum.HC_SUCCESS, resp); } @@ -348,7 +348,7 @@ public class AIGuidanceService { public Result getDoctorSchedule(String hosId, String branchId, String doctorsJson) { Map map = new HashMap<>(); map.put("status", "OK"); - if (!HCAIGuidanceConfig.HOSP_ID.equals(hosId)) { // 医院id校验 + if (!HCAIGuidanceConfig.H_HOSP_ID.equals(hosId)) { // 医院id校验 log.warn("[智能导诊]获取医生号源排班信息-hosId不匹配"); return Result.success(ResultEnum.HC_SUCCESS, map); } @@ -456,7 +456,7 @@ public class AIGuidanceService { String doctName = doctor.getDoctName(); item = new AIDoctorSchedule(); - item.setHosId(HCAIGuidanceConfig.HOSP_ID); + item.setHosId(HCAIGuidanceConfig.H_HOSP_ID); item.setBranchId(branchId); // item.setDocId("*".equals(doctCode) ? "0" : doctCode); @@ -525,7 +525,7 @@ public class AIGuidanceService { // 4.2.1.1 查询医院的首页服务列表(必选) public Result getHospitalHomeService(String hosId) { Map map = new HashMap<>(); - if (!HCAIGuidanceConfig.HOSP_ID.equals(hosId)) { // 医院id校验 + if (!HCAIGuidanceConfig.H_HOSP_ID.equals(hosId)) { // 医院id校验 log.warn("[智能导诊]查询医院的首页服务列表-hosId不匹配"); return Result.success(ResultEnum.HC_SUCCESS, map); } diff --git a/src/main/resources/hc-config.xml b/src/main/resources/hc-config.xml index ac9cab3..f2f69c4 100644 --- a/src/main/resources/hc-config.xml +++ b/src/main/resources/hc-config.xml @@ -5,29 +5,22 @@ true true false - false + true - 31922 + 31737 e4a05c13301f2f6a8b07b3de872dfe2d e5322dfd9bfab939851319812c30f9f1 5a4a6eacbe1040d8a91c76608aefb943 - - mfkwewyhkozizj0caqyikozizj0daqcdqgaepc6p0omuruc5lq7cwdu18ca4cgmqbtjpwdyrglo4wbal9/m3dv4oywez7fbgtnkkgj/kfojvze6sc/dka+ddca== - + mfkwewyhkozizj0caqyikozizj0daqcdqgaepc6p0omuruc5lq7cwdu18ca4cgmqbtjpwdyrglo4wbal9/m3dv4oywez7fbgtnkkgj/kfojvze6sc/dka+ddca== 4e181412b5874b22ba113ea3a907e244 http://220.164.109.105:19211/internet - - - - - - 31737 + 31737 - 20009250 + 20009250 c4a39049d4b1c29ffaa9a312687fdcfc 20009250 @@ -36,24 +29,24 @@ true - true - true - true + false + + + true 34edf7cd14e646ae9c1bbca791b7b685 - b26188e6142d43b88f01453853d52a0a - - b26188e6142d43b88f01453853d52a0a + b26188e6142d43b88f01453853d52a0a + + b26188e6142d43b88f01453853d52a0a 800002723 - 31737 + 31737 + 红河州第一人民医院 - - 云南省滇南中心医院(红河州第一人民医院)由创建于1950年的红河州第一人民医院和始建于1911年的原红河州第四人民医院于2019年整合而成,是一所集医疗、教学、科研、预防、保健、急救、培训、健康教育为一体的三级甲等综合医院。 - + 云南省滇南中心医院(红河州第一人民医院)由创建于1950年的红河州第一人民医院和始建于1911年的原红河州第四人民医院于2019年整合而成,是一所集医疗、教学、科研、预防、保健、急救、培训、健康教育为一体的三级甲等综合医院。 三级甲等 云南省红河州个旧市大屯街道锡缘路1号 0873-3720200 @@ -67,16 +60,16 @@ true 34edf7cd14e646ae9c1bbca791b7b685 b26188e6142d43b88f01453853d52a0a - 31737 - 800002723 - ZSQB8uErQydVVtTA + 31737 + + + 800002723 + 100000861 + ZSQB8uErQydVVtTA - 800002580 - 20009250 - ##akgdaS!SwZRam^ - c4a39049d4b1c29ffaa9a312687fdcfc - 100000861 + 800002580 + ##akgdaS!SwZRam^ oeso-t62kkoRwLVVkSkwmmjPfUXk