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, +};