From 7192d9ecd654037161c1d7821712a2f86e844b16 Mon Sep 17 00:00:00 2001 From: Jafeng <2998840497@qq.com> Date: Mon, 29 Jun 2026 16:21:28 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=20sh6=20=E9=80=82?= =?UTF-8?q?=E9=85=8D=E5=99=A8=E5=8F=8A=E5=85=B6=E4=BB=A3=E7=90=86=E8=B0=83?= =?UTF-8?q?=E7=94=A8=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .env.gateway.example | 5 +-- src/adapters/index.js | 3 +- src/adapters/sh6/index.js | 64 +++++++++++++++++++++++++++++++++++++++ 3 files changed, 69 insertions(+), 3 deletions(-) create mode 100644 src/adapters/sh6/index.js diff --git a/.env.gateway.example b/.env.gateway.example index 3cf3704..3eec194 100644 --- a/.env.gateway.example +++ b/.env.gateway.example @@ -3,10 +3,11 @@ CONFIG_ADAPTER_ROLE=gateway CONFIG_MONGO_ENABLED=false # 测试环境: 前端按 HIS 选项传固定 corpId,网关按 corpId 路由到医院编码。 -CONFIG_HOSPITAL_ADAPTER_CORP_MAP={"wwa54dfba0b5441ef1":"gk","wpLgjyawAAEqxCUmBMjLo8CnXdDuQoeg":"zpfb"} -CONFIG_HOSPITAL_ADAPTER_ROUTE_MODE_MAP={"gk":"local","zpfb":"direct"} +CONFIG_HOSPITAL_ADAPTER_CORP_MAP={"wwa54dfba0b5441ef1":"gk","wpLgjyawAAxKtBH5GVT5DVhLefg246Ag":"sh6","wpLgjyawAAEqxCUmBMjLo8CnXdDuQoeg":"zpfb"} +CONFIG_HOSPITAL_ADAPTER_ROUTE_MODE_MAP={"gk":"local","sh6":"local","zpfb":"direct"} CONFIG_HOSPITAL_ADAPTER_DIRECT_URL_MAP={"zpfb":"http://120.224.145.13:8082"} CONFIG_GK_JHIDS_PROXY_URL=https://crm.gykqyy.com/ykt/getYoucanData/gkJhids +CONFIG_SH6_DSP_PROXY_URL=https://hlwyy.6thhosp.com:4443/getYoucanData/customerHisSync CONFIG_RPC_TIMEOUT_MS=30000 diff --git a/src/adapters/index.js b/src/adapters/index.js index 5798077..61a9388 100644 --- a/src/adapters/index.js +++ b/src/adapters/index.js @@ -1,7 +1,8 @@ const zpfb = require("./zpfb"); const gk = require("./gk"); +const sh6 = require("./sh6"); -const STATIC_ADAPTERS = [zpfb, gk].reduce((acc, adapter) => { +const STATIC_ADAPTERS = [zpfb, gk, sh6].reduce((acc, adapter) => { acc[adapter.hospitalCode] = adapter; return acc; }, {}); diff --git a/src/adapters/sh6/index.js b/src/adapters/sh6/index.js new file mode 100644 index 0000000..b3064e0 --- /dev/null +++ b/src/adapters/sh6/index.js @@ -0,0 +1,64 @@ +const axios = require("axios"); +const { parsePositiveInteger } = require("../../core/config"); + +const hospitalCode = "sh6"; +const SH6_CORP_ID = "wpLgjyawAAxKtBH5GVT5DVhLefg246Ag"; +const DEFAULT_TIMEOUT_MS = 30000; + +async function customerHisSync(event = {}) { + const proxyUrl = getProxyUrl(); + if (!proxyUrl) { + return { + success: false, + message: "未配置六院 HIS 代理地址", + list: [], + }; + } + + try { + const response = await axios.post( + proxyUrl, + { + ...(event || {}), + corpId: SH6_CORP_ID, + }, + { + timeout: getTimeoutMs(), + headers: { "Content-Type": "application/json" }, + }, + ); + return response.data; + } catch (err) { + return { + success: false, + message: + (err.response && err.response.data && err.response.data.message) || + err.message || + "六院 HIS 代理调用失败", + list: [], + err: err.code, + }; + } +} + +function getProxyUrl() { + return String( + process.env.CONFIG_SH6_DSP_PROXY_URL || + process.env.CONFIG_SH6_CUSTOMER_HIS_SYNC_PROXY_URL || + "", + ).trim(); +} + +function getTimeoutMs() { + return parsePositiveInteger( + process.env.CONFIG_SH6_DSP_PROXY_TIMEOUT_MS || + process.env.CONFIG_SH6_CUSTOMER_HIS_SYNC_PROXY_TIMEOUT_MS, + DEFAULT_TIMEOUT_MS, + ); +} + +module.exports = { + hospitalCode, + customerHisSync, + main: customerHisSync, +};