|
@@ -0,0 +1,1526 @@
|
|
|
+# 江苏工伤联网接口参数说明
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+## 1. 交易代码与业务名称一览
|
|
|
+
|
|
|
+| 交易英文名 | 交易代码 | 业务含义 |
|
|
|
+|------------------------|----------|----------------------|
|
|
|
+| SignIn | 9001 | 签到 |
|
|
|
+| SignOut | 9002 | 签退 |
|
|
|
+| ReadCard | 1101 | 读卡 |
|
|
|
+| RegisterPatient | 2201 | 门诊/住院登记 |
|
|
|
+| CancelRegister | 2202 | 登记撤销 |
|
|
|
+| ModifyRegister | 2203 | 登记信息修改 |
|
|
|
+| UploadPrescription | 2204 | 处方明细上报 |
|
|
|
+| CancelPrescription | 2205 | 处方明细撤销 |
|
|
|
+| PreSettle | 2206 | 费用预结算 |
|
|
|
+| Settle | 2207 | 费用结算 |
|
|
|
+| CancelSettle | 2208 | 费用结算撤销 |
|
|
|
+| ReverseTransaction | 2209 | 冲正交易 |
|
|
|
+| UploadReferral | 2301 | 转诊转院申请上传 |
|
|
|
+| QueryReferral | 2302 | 转诊转院申请查询 |
|
|
|
+| CancelReferral | 2303 | 转诊转院申请撤销 |
|
|
|
+| TotalAccount | 1320 | 总额对账 |
|
|
|
+| DetailAccount | 1321 | 明细对账 |
|
|
|
+| BatchDownload | 1301 | 批量数据下载 |
|
|
|
+| QueryFeeDetail | 9103 | 费用明细详细信息下载 |
|
|
|
+| QueryPrescriptionDetail| 9104 | 处方明细下载 |
|
|
|
+| QueryRecentVisit | 9105 | 参保人近期就诊信息查询|
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+## 2. 通用接口请求参数结构
|
|
|
+
|
|
|
+所有交易通过 `/api/entry/workinjury` POST 方式调用,**通用请求体结构**如下:
|
|
|
+
|
|
|
+```json
|
|
|
+{
|
|
|
+ "action": "transaction", // 固定为"transaction"
|
|
|
+ "transactionName": "RegisterPatient", // 交易英文名或交易代码
|
|
|
+ "businessParams": { ... }, // 业务参数对象(每个交易不同)
|
|
|
+ "identifyMode": "1", // 识别方式:1-实体社保卡,2-电子凭证(可选,默认1)
|
|
|
+ "qrCodeInfo": "", // 电子社保卡二维码(识别方式为2时必填)
|
|
|
+ "operatorId": "", // 经办人编号(可选)
|
|
|
+ "operatorName": "" // 经办人姓名(可选)
|
|
|
+}
|
|
|
+```
|
|
|
+
|
|
|
+- `action`:必须为 `"transaction"`,由前端指定。
|
|
|
+- `transactionName`:交易英文名(如 `"RegisterPatient"`)或4位数字代码(如 `"2201"`)。
|
|
|
+- `businessParams`:**每个交易的核心参数**,结构见下文。
|
|
|
+- 其余为通用可选参数。
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+## 3. 各交易业务参数(businessParams)明细
|
|
|
+
|
|
|
+### 3.1 SignIn(签到)
|
|
|
+- **请求参数**:无业务参数,`businessParams` 可省略或为空对象 `{}`。
|
|
|
+- **示例**:
|
|
|
+ ```json
|
|
|
+ {
|
|
|
+ "action": "transaction",
|
|
|
+ "transactionName": "SignIn"
|
|
|
+ }
|
|
|
+ ```
|
|
|
+
|
|
|
+### 3.2 SignOut(签退)
|
|
|
+- **请求参数**:无业务参数,`businessParams` 可省略或为空对象 `{}`。
|
|
|
+- **示例**:
|
|
|
+ ```json
|
|
|
+ {
|
|
|
+ "action": "transaction",
|
|
|
+ "transactionName": "SignOut"
|
|
|
+ }
|
|
|
+ ```
|
|
|
+
|
|
|
+### 3.3 ReadCard(读卡)
|
|
|
+- **请求参数**:无业务参数,`businessParams` 可省略或为空对象 `{}`。
|
|
|
+- **示例**:
|
|
|
+ ```json
|
|
|
+ {
|
|
|
+ "action": "transaction",
|
|
|
+ "transactionName": "ReadCard"
|
|
|
+ }
|
|
|
+ ```
|
|
|
+
|
|
|
+### 3.4 RegisterPatient(门诊/住院登记)
|
|
|
+- **请求参数**(示例,具体字段以业务文档为准):
|
|
|
+ ```json
|
|
|
+ {
|
|
|
+ "action": "transaction",
|
|
|
+ "transactionName": "RegisterPatient",
|
|
|
+ "businessParams": {
|
|
|
+ "patient_id": "xxx", // 患者ID
|
|
|
+ "visit_type": "1", // 就诊类型(1-门诊,2-住院)
|
|
|
+ "dept_code": "001", // 科室编码
|
|
|
+ "dept_name": "内科", // 科室名称
|
|
|
+ "doctor_code": "DOC001", // 医生编码
|
|
|
+ "doctor_name": "张医生" // 医生姓名
|
|
|
+ // ... 其他登记所需字段
|
|
|
+ }
|
|
|
+ }
|
|
|
+ ```
|
|
|
+
|
|
|
+### 3.5 UploadPrescription(处方明细上报)
|
|
|
+- **请求参数**(支持批量):
|
|
|
+ ```json
|
|
|
+ {
|
|
|
+ "action": "transaction",
|
|
|
+ "transactionName": "UploadPrescription",
|
|
|
+ "businessParams": {
|
|
|
+ "patient_id": "xxx",
|
|
|
+ "visit_no": "yyy",
|
|
|
+ "batch_no": "1",
|
|
|
+ "prescriptions": [
|
|
|
+ {
|
|
|
+ "item_code": "A001",
|
|
|
+ "item_name": "药品A",
|
|
|
+ "amount": 1,
|
|
|
+ "price": 10.0
|
|
|
+ // ... 处方明细字段
|
|
|
+ }
|
|
|
+ // ... 多条
|
|
|
+ ]
|
|
|
+ }
|
|
|
+ }
|
|
|
+ ```
|
|
|
+
|
|
|
+### 3.6 Settle(费用结算)
|
|
|
+- **请求参数**(示例):
|
|
|
+ ```json
|
|
|
+ {
|
|
|
+ "action": "transaction",
|
|
|
+ "transactionName": "Settle",
|
|
|
+ "businessParams": {
|
|
|
+ "visit_no": "yyy",
|
|
|
+ "pre_settle_id": "zzz"
|
|
|
+ // ... 其他结算所需字段
|
|
|
+ }
|
|
|
+ }
|
|
|
+ ```
|
|
|
+
|
|
|
+> 其余交易(如 CancelRegister、ModifyRegister、PreSettle、CancelSettle、ReverseTransaction、UploadReferral、QueryReferral、CancelReferral、TotalAccount、DetailAccount、BatchDownload、QueryFeeDetail、QueryPrescriptionDetail、QueryRecentVisit)均以类似方式传递业务参数,字段详见业务文档和接口实现。
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+## 4. 接口返回参数结构
|
|
|
+
|
|
|
+### 4.1 通用返回字段
|
|
|
+
|
|
|
+所有接口返回均为 JSON 对象,**通用字段**如下:
|
|
|
+
|
|
|
+| 字段名 | 类型 | 说明 |
|
|
|
+|------------------------|-----------|----------------------------------------|
|
|
|
+| success | bool | 是否成功(true/false) |
|
|
|
+| code | int | 状态码(200为成功,其他为错误) |
|
|
|
+| message | string | 结果描述 |
|
|
|
+| device | string | 设备/接口标识(如“江苏工伤联网接口”) |
|
|
|
+| data | object | 业务数据(结构随交易不同) |
|
|
|
+| transactionCode | string | 交易代码(如"2201") |
|
|
|
+| request_parameters | object | 原始请求参数(完整回传) |
|
|
|
+| transformed_parameters | object | 标准化后传递给 DLL 的参数(调试用) |
|
|
|
+| rawOutput | string | DLL原始返回JSON(调试用) |
|
|
|
+| debug_xxx | ... | 各类调试信息(如 debug_step、debug_error 等) |
|
|
|
+
|
|
|
+- **request_parameters**:始终包含前端原始请求体(便于追溯)。
|
|
|
+- **transformed_parameters**:包含标准化后传递给 DLL 的参数(便于调试和问题定位)。
|
|
|
+- **data**:为业务返回数据,结构随交易不同(如登记返回登记号、结算返回结算单号等)。
|
|
|
+- **rawOutput**:DLL返回的原始JSON字符串,便于底层问题排查。
|
|
|
+- **debug_xxx**:调试辅助字段,便于开发和定位问题。
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+## 5. 典型交易参数与返回结构明细
|
|
|
+
|
|
|
+### 5.1 SignIn(签到)
|
|
|
+- **请求参数 businessParams**:无(可省略或 `{}`)
|
|
|
+- **返回 data 字段结构**(参考 DLL 返回):
|
|
|
+ ```json
|
|
|
+ {
|
|
|
+ "sign_no": "签到流水号",
|
|
|
+ "sign_time": "签到时间(yyyyMMddHHmmss)"
|
|
|
+ }
|
|
|
+ ```
|
|
|
+
|
|
|
+### 5.2 SignOut(签退)
|
|
|
+- **请求参数 businessParams**:无
|
|
|
+- **返回 data 字段结构**:
|
|
|
+ ```json
|
|
|
+ {
|
|
|
+ "sign_no": "签退流水号",
|
|
|
+ "sign_time": "签退时间(yyyyMMddHHmmss)"
|
|
|
+ }
|
|
|
+ ```
|
|
|
+
|
|
|
+### 5.3 ReadCard(读卡)
|
|
|
+- **请求参数 businessParams**:无
|
|
|
+- **返回 data 字段结构**(示例):
|
|
|
+ ```json
|
|
|
+ {
|
|
|
+ "card_no": "社保卡号",
|
|
|
+ "psn_no": "人员编号",
|
|
|
+ "psn_name": "姓名",
|
|
|
+ "gend": "性别",
|
|
|
+ "certno": "身份证号"
|
|
|
+ }
|
|
|
+ ```
|
|
|
+
|
|
|
+### 5.4 RegisterPatient(门诊/住院登记)
|
|
|
+- **请求参数 businessParams**(常见字段,具体以业务文档为准):
|
|
|
+ | 字段名 | 类型 | 说明 |
|
|
|
+ |----------------|--------|--------------|
|
|
|
+ | patient_id | string | 患者ID |
|
|
|
+ | visit_type | string | 就诊类型 |
|
|
|
+ | dept_code | string | 科室编码 |
|
|
|
+ | dept_name | string | 科室名称 |
|
|
|
+ | doctor_code | string | 医生编码 |
|
|
|
+ | doctor_name | string | 医生姓名 |
|
|
|
+ | ... | ... | 其他登记字段 |
|
|
|
+- **返回 data 字段结构**(示例):
|
|
|
+ ```json
|
|
|
+ {
|
|
|
+ "visit_no": "就诊流水号",
|
|
|
+ "register_time": "登记时间"
|
|
|
+ }
|
|
|
+ ```
|
|
|
+
|
|
|
+### 5.5 UploadPrescription(处方明细上报)
|
|
|
+- **请求参数 businessParams**(支持批量):
|
|
|
+ | 字段名 | 类型 | 说明 |
|
|
|
+ |----------------|----------|--------------|
|
|
|
+ | patient_id | string | 患者ID |
|
|
|
+ | visit_no | string | 就诊流水号 |
|
|
|
+ | batch_no | string | 批次号 |
|
|
|
+ | prescriptions | array | 处方明细数组 |
|
|
|
+
|
|
|
+ prescriptions 内部结构(示例):
|
|
|
+ | 字段名 | 类型 | 说明 |
|
|
|
+ |------------|--------|----------|
|
|
|
+ | item_code | string | 项目编码 |
|
|
|
+ | item_name | string | 项目名称 |
|
|
|
+ | amount | number | 数量 |
|
|
|
+ | price | number | 单价 |
|
|
|
+ | ... | ... | 其他字段 |
|
|
|
+
|
|
|
+- **返回 data 字段结构**(示例):
|
|
|
+ ```json
|
|
|
+ {
|
|
|
+ "upload_result": "success",
|
|
|
+ "uploaded_count": 10,
|
|
|
+ "batch_no": "1"
|
|
|
+ }
|
|
|
+ ```
|
|
|
+
|
|
|
+### 5.6 PreSettle(费用预结算)
|
|
|
+- **请求参数 businessParams**(示例):
|
|
|
+ | 字段名 | 类型 | 说明 |
|
|
|
+ |----------------|--------|--------------|
|
|
|
+ | visit_no | string | 就诊流水号 |
|
|
|
+ | fee_details | array | 费用明细数组 |
|
|
|
+- **返回 data 字段结构**(示例):
|
|
|
+ ```json
|
|
|
+ {
|
|
|
+ "pre_settle_id": "预结算ID",
|
|
|
+ "total_amount": 100.0
|
|
|
+ }
|
|
|
+ ```
|
|
|
+
|
|
|
+### 5.7 Settle(费用结算)
|
|
|
+- **请求参数 businessParams**(示例):
|
|
|
+ | 字段名 | 类型 | 说明 |
|
|
|
+ |----------------|--------|--------------|
|
|
|
+ | visit_no | string | 就诊流水号 |
|
|
|
+ | pre_settle_id | string | 预结算ID |
|
|
|
+- **返回 data 字段结构**(示例):
|
|
|
+ ```json
|
|
|
+ {
|
|
|
+ "settle_id": "结算单号",
|
|
|
+ "total_amount": 100.0,
|
|
|
+ "fund_pay": 80.0,
|
|
|
+ "cash_pay": 20.0
|
|
|
+ }
|
|
|
+ ```
|
|
|
+
|
|
|
+### 5.8 CancelRegister(登记撤销)
|
|
|
+- **请求参数 businessParams**(示例):
|
|
|
+ | 字段名 | 类型 | 说明 |
|
|
|
+ |----------------|--------|--------------|
|
|
|
+ | visit_no | string | 就诊流水号 |
|
|
|
+- **返回 data 字段结构**(示例):
|
|
|
+ ```json
|
|
|
+ {
|
|
|
+ "cancel_result": "success"
|
|
|
+ }
|
|
|
+ ```
|
|
|
+
|
|
|
+### 5.9 ReverseTransaction(冲正交易)
|
|
|
+- **请求参数 businessParams**(示例):
|
|
|
+ | 字段名 | 类型 | 说明 |
|
|
|
+ |------------------------|--------|--------------|
|
|
|
+ | original_msg_id | string | 原报文ID |
|
|
|
+ | original_transaction_code | string | 原交易代码 |
|
|
|
+ | original_transaction_time | string | 原交易时间 |
|
|
|
+ | reverse_reason | string | 冲正原因 |
|
|
|
+- **返回 data 字段结构**(示例):
|
|
|
+ ```json
|
|
|
+ {
|
|
|
+ "reverse_result": "success"
|
|
|
+ }
|
|
|
+ ```
|
|
|
+
|
|
|
+### 5.10 其他交易(如对账、下载、转院等)
|
|
|
+- **请求参数 businessParams**:根据业务文档和 DLL 要求传递,通常为查询条件、时间范围、编号等。
|
|
|
+- **返回 data 字段结构**:通常为明细列表、对账结果、下载数据等。
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+## 6. 通用返回字段详细说明
|
|
|
+
|
|
|
+| 字段名 | 类型 | 说明 |
|
|
|
+|------------------------|-----------|----------------------------------------|
|
|
|
+| success | bool | 是否成功(true/false) |
|
|
|
+| code | int | 状态码(200为成功,其他为错误) |
|
|
|
+| message | string | 结果描述 |
|
|
|
+| device | string | 设备/接口标识(如“江苏工伤联网接口”) |
|
|
|
+| data | object | 业务数据(结构随交易不同) |
|
|
|
+| transactionCode | string | 交易代码(如"2201") |
|
|
|
+| request_parameters | object | 原始请求参数(完整回传) |
|
|
|
+| transformed_parameters | object | 标准化后传递给 DLL 的参数(调试用) |
|
|
|
+| rawOutput | string | DLL原始返回JSON(调试用) |
|
|
|
+| debug_xxx | ... | 各类调试信息(如 debug_step、debug_error 等) |
|
|
|
+
|
|
|
+- **request_parameters**:前端传入的完整请求体,便于追溯。
|
|
|
+- **transformed_parameters**:后端标准化后传递给 DLL 的参数,便于调试。
|
|
|
+- **rawOutput**:DLL 返回的原始 JSON 字符串。
|
|
|
+- **debug_xxx**:调试辅助字段,便于开发和定位问题。
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+## 7. 示例:完整请求与返回
|
|
|
+
|
|
|
+### 7.1 请求示例(登记)
|
|
|
+
|
|
|
+```json
|
|
|
+POST /api/entry/workinjury
|
|
|
+{
|
|
|
+ "action": "transaction",
|
|
|
+ "transactionName": "RegisterPatient",
|
|
|
+ "businessParams": {
|
|
|
+ "patient_id": "P123456",
|
|
|
+ "visit_type": "1",
|
|
|
+ "dept_code": "001",
|
|
|
+ "dept_name": "内科",
|
|
|
+ "doctor_code": "DOC001",
|
|
|
+ "doctor_name": "张医生"
|
|
|
+ }
|
|
|
+}
|
|
|
+```
|
|
|
+
|
|
|
+### 7.2 返回示例
|
|
|
+
|
|
|
+```json
|
|
|
+{
|
|
|
+ "success": true,
|
|
|
+ "code": 200,
|
|
|
+ "message": "交易成功",
|
|
|
+ "device": "江苏工伤联网接口",
|
|
|
+ "data": {
|
|
|
+ "visit_no": "V20230722001",
|
|
|
+ "register_time": "2023-07-22 10:00:00"
|
|
|
+ },
|
|
|
+ "transactionCode": "2201",
|
|
|
+ "request_parameters": {
|
|
|
+ "action": "transaction",
|
|
|
+ "transactionName": "RegisterPatient",
|
|
|
+ "businessParams": {
|
|
|
+ "patient_id": "P123456",
|
|
|
+ "visit_type": "1",
|
|
|
+ "dept_code": "001",
|
|
|
+ "dept_name": "内科",
|
|
|
+ "doctor_code": "DOC001",
|
|
|
+ "doctor_name": "张医生"
|
|
|
+ }
|
|
|
+ },
|
|
|
+ "transformed_parameters": {
|
|
|
+ "infno": "2201",
|
|
|
+ "msgid": "SQ201348202307221000000001",
|
|
|
+ "recer_sys_code": "JSYTH",
|
|
|
+ "infver": "V2.1",
|
|
|
+ "opter_type": "1",
|
|
|
+ "opter": "001",
|
|
|
+ "opter_name": "系统管理员",
|
|
|
+ "inf_time": "20230722100000",
|
|
|
+ "fixmedins_code": "SQ201348",
|
|
|
+ "fixmedins_name": "沭阳铭和医院",
|
|
|
+ "sign_no": "签到流水号",
|
|
|
+ "idfi_mode": "1",
|
|
|
+ "qrcode_info": "",
|
|
|
+ "input": {
|
|
|
+ "patient_id": "P123456",
|
|
|
+ "visit_type": "1",
|
|
|
+ "dept_code": "001",
|
|
|
+ "dept_name": "内科",
|
|
|
+ "doctor_code": "DOC001",
|
|
|
+ "doctor_name": "张医生"
|
|
|
+ }
|
|
|
+ },
|
|
|
+ "rawOutput": "{...DLL原始返回...}",
|
|
|
+ "debug_step": "Si_Busi调用完成"
|
|
|
+}
|
|
|
+```
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+## 8. 结论与建议
|
|
|
+
|
|
|
+- **所有交易的请求参数**均以 `businessParams` 传递,字段结构需参考业务文档和 DLL 要求。
|
|
|
+- **所有返回**均包含原始请求、标准化参数、业务数据、调试信息,便于前后端联调和问题定位。
|
|
|
+- **如需详细字段定义**,请结合工伤联网接口官方文档与本项目代码实现。
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+如需**Word/Excel 版本**或**特定交易的详细字段说明**,请补充需求!
|
|
|
+
|
|
|
+如需**下载版 Markdown 文档**,可将本内容保存为 `江苏工伤联网接口参数说明.md`。
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+下面是完整的 Magic API 模拟接口代码(可直接复制到 Magic API 脚本编辑器使用),用于模拟江苏工伤联网接口的所有主要交易,返回结构与《江苏工伤联网接口参数说明.md》一致:
|
|
|
+
|
|
|
+```javascript
|
|
|
+import cn.hutool.core.util.IdUtil;
|
|
|
+
|
|
|
+// Magic API模拟接口:江苏工伤联网接口模拟
|
|
|
+// 适配SQL Server 2008
|
|
|
+// 用于前端联调和接口测试
|
|
|
+//
|
|
|
+// =====================
|
|
|
+// 交易请求参数详解:
|
|
|
+//
|
|
|
+// 通用请求结构:
|
|
|
+// {
|
|
|
+// "action": "transaction", // 固定为"transaction"
|
|
|
+// "transactionName": "交易英文名或代码", // 如"SignIn"、"RegisterPatient"、"2201"等
|
|
|
+// "businessParams": { ... }, // 业务参数对象(每个交易不同,详见下方)
|
|
|
+// "identifyMode": "1", // 识别方式:1-实体社保卡,2-电子凭证(可选,默认1)
|
|
|
+// "qrCodeInfo": "", // 电子社保卡二维码(识别方式为2时必填)
|
|
|
+// "operatorId": "", // 经办人编号(可选)
|
|
|
+// "operatorName": "" // 经办人姓名(可选)
|
|
|
+// }
|
|
|
+//
|
|
|
+// 9001 签到(SignIn)
|
|
|
+// - businessParams: {} // 无需业务参数,可省略或传空对象
|
|
|
+// - 示例:
|
|
|
+// {
|
|
|
+// "action": "transaction",
|
|
|
+// "transactionName": "SignIn"
|
|
|
+// }
|
|
|
+//
|
|
|
+// 1101 读卡(ReadCard)
|
|
|
+// - businessParams: {} // 无需业务参数,可省略或传空对象
|
|
|
+// - 示例:
|
|
|
+// {
|
|
|
+// "action": "transaction",
|
|
|
+// "transactionName": "ReadCard"
|
|
|
+// }
|
|
|
+//
|
|
|
+// 2201 门诊/住院登记(RegisterPatient)
|
|
|
+// - businessParams: {
|
|
|
+// "patient_id": "string", // 患者ID(必填)
|
|
|
+// "visit_type": "1", // 就诊类型(1-门诊,2-住院)(必填)
|
|
|
+// "dept_code": "001", // 科室编码(必填)
|
|
|
+// "dept_name": "内科", // 科室名称(必填)
|
|
|
+// "doctor_code": "DOC001", // 医生编码(必填)
|
|
|
+// "doctor_name": "张医生" // 医生姓名(必填)
|
|
|
+// ... // 其他登记所需字段,详见官方文档
|
|
|
+// }
|
|
|
+// - 示例:
|
|
|
+// {
|
|
|
+// "action": "transaction",
|
|
|
+// "transactionName": "RegisterPatient",
|
|
|
+// "businessParams": {
|
|
|
+// "patient_id": "P123456",
|
|
|
+// "visit_type": "1",
|
|
|
+// "dept_code": "001",
|
|
|
+// "dept_name": "内科",
|
|
|
+// "doctor_code": "DOC001",
|
|
|
+// "doctor_name": "张医生"
|
|
|
+// }
|
|
|
+// }
|
|
|
+//
|
|
|
+// 2204 处方明细上报(UploadPrescription)
|
|
|
+// - businessParams: {
|
|
|
+// "patient_id": "string", // 患者ID(必填)
|
|
|
+// "visit_no": "string", // 就诊流水号(必填)
|
|
|
+// "batch_no": "1", // 批次号(必填,建议从1递增)
|
|
|
+// "prescriptions": [ // 处方明细数组(必填,最多50条)
|
|
|
+// {
|
|
|
+// "item_code": "A001", // 项目编码(必填)
|
|
|
+// "item_name": "药品A", // 项目名称(必填)
|
|
|
+// "amount": 1, // 数量(必填)
|
|
|
+// "price": 10.0 // 单价(必填)
|
|
|
+// ... // 其他明细字段,详见官方文档
|
|
|
+// }
|
|
|
+// // ...多条
|
|
|
+// ]
|
|
|
+// }
|
|
|
+// - 示例:
|
|
|
+// {
|
|
|
+// "action": "transaction",
|
|
|
+// "transactionName": "UploadPrescription",
|
|
|
+// "businessParams": {
|
|
|
+// "patient_id": "P123456",
|
|
|
+// "visit_no": "V20230722001",
|
|
|
+// "batch_no": "1",
|
|
|
+// "prescriptions": [
|
|
|
+// { "item_code": "A001", "item_name": "药品A", "amount": 1, "price": 10.0 }
|
|
|
+// ]
|
|
|
+// }
|
|
|
+// }
|
|
|
+//
|
|
|
+// 2206/2207 费用预结算/结算(PreSettle/Settle)
|
|
|
+// - businessParams: {
|
|
|
+// "visit_no": "string", // 就诊流水号(必填)
|
|
|
+// "pre_settle_id": "string", // 预结算ID(结算时必填)
|
|
|
+// ... // 其他结算所需字段,详见官方文档
|
|
|
+// }
|
|
|
+// - 示例:
|
|
|
+// {
|
|
|
+// "action": "transaction",
|
|
|
+// "transactionName": "Settle",
|
|
|
+// "businessParams": {
|
|
|
+// "visit_no": "V20230722001",
|
|
|
+// "pre_settle_id": "PRE20230722001"
|
|
|
+// }
|
|
|
+// }
|
|
|
+//
|
|
|
+// 1320/1321 对账类(TotalAccount/DetailAccount)
|
|
|
+// - businessParams: {
|
|
|
+// "stmt_begindate": "20240701", // 对账开始时间(必填,格式yyyyMMdd)
|
|
|
+// "stmt_enddate": "20240722", // 对账结束时间(必填,格式yyyyMMdd)
|
|
|
+// "sign_no": "string", // 签到流水号(可选)
|
|
|
+// ... // 其他对账所需字段,详见官方文档
|
|
|
+// }
|
|
|
+//
|
|
|
+// 2209 冲正交易(ReverseTransaction)
|
|
|
+// - businessParams: {
|
|
|
+// "infno": "2201", // 冲正交易编号(必填,2201/2207/2208)
|
|
|
+// "msgid": "string" // 发送方报文ID(必填)
|
|
|
+// }
|
|
|
+//
|
|
|
+// 9103/9104/9105 查询/下载类
|
|
|
+// - businessParams: {
|
|
|
+// "ipt_otp_no": "string", // 门诊/住院流水号(必填)
|
|
|
+// "mdtrt_id": "string", // 单据号(必填,部分接口)
|
|
|
+// "pageNumber": 1 // 页码(可选,默认1)
|
|
|
+// ... // 其他查询条件,详见官方文档
|
|
|
+// }
|
|
|
+//
|
|
|
+// 81xx 体检类、23xx 转诊转院类等
|
|
|
+// - businessParams: 详见官方文档,按接口要求传递
|
|
|
+//
|
|
|
+// 其他上传/登记/撤销类交易
|
|
|
+// - businessParams: 按官方文档必填字段传递
|
|
|
+//
|
|
|
+// =====================
|
|
|
+//
|
|
|
+// 交易返回字段详解:
|
|
|
+//
|
|
|
+// 9001 签到(SignIn)
|
|
|
+// output: { sign_no, sign_time }
|
|
|
+// - sign_no: 签到流水号(中心生成,唯一)
|
|
|
+// - sign_time: 签到时间(yyyyMMddHHmmss)
|
|
|
+//
|
|
|
+// 1101 读卡(ReadCard)
|
|
|
+// output: { psn_no, emp_no, emp_name, certno, psn_name, gend, age, psn_type, insu_admdvs, inhosp_stas, trt_chk_rslt, exam_ccls, certificate_type, birthday }
|
|
|
+// - exam_ccls: 工伤诊断结论,格式为^工伤医疗费资格审核信息ID|受伤部位信息描述|就诊类型^
|
|
|
+// - gend/psn_type/certificate_type等详见二级代码表
|
|
|
+//
|
|
|
+// 2201 门诊/住院登记(RegisterPatient)
|
|
|
+// output: 无(登记成功output为空,infcode=0)
|
|
|
+//
|
|
|
+// 2204 处方明细上报(UploadPrescription)
|
|
|
+// output: 数组,每条明细返回 { rxno, feedetl_sn, fee_ocur_time, med_list_codg, umamt, ownpay_amt, alwpay_amt, pric_uplmt_amt, chrgitm_lv, memo }
|
|
|
+//
|
|
|
+// 2206/2207 费用预结算/结算(PreSettle/Settle)
|
|
|
+// output: { ipt_otp_no, mdtrt_id, medfee_sumamt, hifp_pay, psn_cash_pay, med_list_codg, umamt, drug_fee, dati_fee, ms_fee }
|
|
|
+//
|
|
|
+// 1320 总额对账(TotalAccount)
|
|
|
+// output: { medfee_sumamt, hifp_pay, psn_cash_pay }
|
|
|
+//
|
|
|
+// 1321 明细对账(DetailAccount)
|
|
|
+// output: { ipt_otp_no, medrcdno, medfee_sumamt, hifp_pay, psn_cash_pay }
|
|
|
+//
|
|
|
+// 2209 冲正交易(ReverseTransaction)
|
|
|
+// output: { rec_state, medfee_sumamt }
|
|
|
+//
|
|
|
+// 9103 费用明细详细信息下载(QueryFeeDetail)
|
|
|
+// output: 数组,每行 { ipt_otp_no, medrcdno, medfee_sumamt, hifp_pay, psn_cash_pay, msgid, med_type, psn_no, psn_name, setl_time, opter, pageCount }
|
|
|
+//
|
|
|
+// 9104 处方明细下载(QueryPrescriptionDetail)
|
|
|
+// output: 数组,每行 { ipt_otp_no, medrcdno, rxno, feedetl_sn, fee_ocur_time, med_list_codg, pric, cnt, umamt, ownpay_amt, alwpay_amt, pric_uplmt_amt, chrgitm_lv, memo, list_type, pageCount }
|
|
|
+//
|
|
|
+// 9105 参保人近期就诊信息查询(QueryRecentVisit)
|
|
|
+// output: 数组,每行 { fixmedins_code, fixmedins_name, adm_time, dscg_time, dscg_trt_rslt, diag_code, med_type, medfee_sumamt, setl_time }
|
|
|
+//
|
|
|
+// 81xx 体检类查询(如8101、8103、8106、8107、8109)
|
|
|
+// output: 数组,详见官方文档表格,每行含pageCount
|
|
|
+//
|
|
|
+// 23xx 转诊转院类(如2302)
|
|
|
+// output: 数组,每行 { referral_id, actualStartTime, actualEndTime, outArea, outHospitalName, applyReason, transportation, stateCode, applyTime, qualification_id }
|
|
|
+//
|
|
|
+// 其他上传/登记/撤销类交易 output为空,仅需判断infcode=0
|
|
|
+//
|
|
|
+// 常用二级代码表:
|
|
|
+// 性别(gend):1男 2女 9未说明
|
|
|
+// 工伤人员类别(psn_type):01新工伤 02老工伤 ...
|
|
|
+// 证件类型(certificate_type):01居民身份证 04港澳居民来往内地通行证 ...
|
|
|
+// 医疗类别(med_type):11门诊肢体残 12门诊职业病 ...
|
|
|
+// 在院状态(inhosp_stas):0未在院 1工伤在院 2医疗在院
|
|
|
+// 审核状态(audit_status):0未审核 1已审核
|
|
|
+// 体检类别(examination_type):1社服体检
|
|
|
+// 报告领取地(receivingaddress):1医院 2社区
|
|
|
+// 出院原因(dscg_trt_rslt):01治愈 02死亡 03转院 04其它 05好转
|
|
|
+// 收费项目等级(chrgitm_lv):1甲类 2乙类 3丙类
|
|
|
+// 是否最小计量单位(min_unit):0否 1是
|
|
|
+// 全额自费标志(allSelfFlag):0否 1是
|
|
|
+// 三大目录类别(list_type):1药品 2诊疗项目 3材料
|
|
|
+//
|
|
|
+// 错误码说明:infcode=0成功,-1失败,err_msg返回错误信息
|
|
|
+// 分页说明:查询/下载类接口output为数组,每行含pageCount,入参pageNumber控制页码
|
|
|
+//
|
|
|
+// 更多详见本文件参数说明章节和官方文档
|
|
|
+
|
|
|
+if (!body) {
|
|
|
+ exit -1, "参数body不能为空";
|
|
|
+}
|
|
|
+var dataParams = body;
|
|
|
+
|
|
|
+// 解析通用参数
|
|
|
+var action = dataParams.action ? dataParams.action : '';
|
|
|
+var transactionName = dataParams.transactionName ? dataParams.transactionName : '';
|
|
|
+var businessParams = dataParams.businessParams ? dataParams.businessParams : {};
|
|
|
+var identifyMode = dataParams.identifyMode ? dataParams.identifyMode : '1';
|
|
|
+var qrCodeInfo = dataParams.qrCodeInfo ? dataParams.qrCodeInfo : '';
|
|
|
+var operatorId = dataParams.operatorId ? dataParams.operatorId : '';
|
|
|
+var operatorName = dataParams.operatorName ? dataParams.operatorName : '';
|
|
|
+
|
|
|
+// 生成UUID
|
|
|
+var simpleUUID = IdUtil.simpleUUID();
|
|
|
+
|
|
|
+// 交易代码映射
|
|
|
+var transactionMap = {
|
|
|
+ "SignIn": "9001",
|
|
|
+ "SignOut": "9002",
|
|
|
+ "ReadCard": "1101",
|
|
|
+ "RegisterPatient": "2201",
|
|
|
+ "CancelRegister": "2202",
|
|
|
+ "ModifyRegister": "2203",
|
|
|
+ "UploadPrescription": "2204",
|
|
|
+ "CancelPrescription": "2205",
|
|
|
+ "PreSettle": "2206",
|
|
|
+ "Settle": "2207",
|
|
|
+ "CancelSettle": "2208",
|
|
|
+ "ReverseTransaction": "2209",
|
|
|
+ "UploadReferral": "2301",
|
|
|
+ "QueryReferral": "2302",
|
|
|
+ "CancelReferral": "2303",
|
|
|
+ "TotalAccount": "1320",
|
|
|
+ "DetailAccount": "1321",
|
|
|
+ "BatchDownload": "1301",
|
|
|
+ "QueryFeeDetail": "9103",
|
|
|
+ "QueryPrescriptionDetail": "9104",
|
|
|
+ "QueryRecentVisit": "9105"
|
|
|
+};
|
|
|
+
|
|
|
+// 交易代码
|
|
|
+var transactionCode = transactionMap[transactionName] ? transactionMap[transactionName] : transactionName;
|
|
|
+
|
|
|
+// =====================
|
|
|
+// 自动签到逻辑(全局sign_no复用):
|
|
|
+// 对所有业务类交易(非签到/签退),如果businessParams未带sign_no或为空,先自动执行一次签到,拿到sign_no后补充到businessParams。
|
|
|
+// sign_no为全局唯一,首次自动签到后全局复用,直到签退或重置。
|
|
|
+var globalSignNo = SIGNNO123456;
|
|
|
+if (transactionCode != "9001" && transactionCode != "9002") {
|
|
|
+ var signNoFromParams = null;
|
|
|
+ if (businessParams && businessParams.sign_no !== undefined) {
|
|
|
+ signNoFromParams = businessParams.sign_no;
|
|
|
+ }
|
|
|
+ if (!signNoFromParams) {
|
|
|
+ if (!globalSignNo) {
|
|
|
+ globalSignNo = "SIGNNO" + simpleUUID.substring(0, 8);
|
|
|
+ }
|
|
|
+ if (!businessParams) {
|
|
|
+ businessParams = {}
|
|
|
+ };
|
|
|
+ businessParams.sign_no = globalSignNo;
|
|
|
+ // 可选:可在result中增加debug_auto_signin = true
|
|
|
+ }
|
|
|
+}
|
|
|
+// =====================
|
|
|
+
|
|
|
+// 通用返回结构
|
|
|
+var result = {
|
|
|
+ success: true,
|
|
|
+ code: 200,
|
|
|
+ message: "交易成功",
|
|
|
+ device: "江苏工伤联网接口(模拟)",
|
|
|
+ transactionCode: transactionCode,
|
|
|
+ request_parameters: dataParams,
|
|
|
+ transformed_parameters: {
|
|
|
+ infno: transactionCode,
|
|
|
+ msgid: "SQ201348202307221000000001",
|
|
|
+ recer_sys_code: "JSYTH",
|
|
|
+ infver: "V2.1",
|
|
|
+ opter_type: "1",
|
|
|
+ opter: operatorId ? operatorId : "001",
|
|
|
+ opter_name: operatorName ? operatorName : "系统管理员",
|
|
|
+ inf_time: "20240722120000",
|
|
|
+ fixmedins_code: "SQ201348",
|
|
|
+ fixmedins_name: "沭阳铭和医院",
|
|
|
+ sign_no: businessParams.sign_no || "SIGNNO123456",
|
|
|
+ idfi_mode: identifyMode,
|
|
|
+ qrcode_info: qrCodeInfo,
|
|
|
+ input: businessParams
|
|
|
+ },
|
|
|
+ rawOutput: "",
|
|
|
+ debug_step: "模拟接口返回"
|
|
|
+};
|
|
|
+
|
|
|
+// 针对不同交易,返回不同data结构
|
|
|
+if (transactionCode == "9001") {
|
|
|
+ result.data = {
|
|
|
+ sign_no: "SIGNNO" + simpleUUID,
|
|
|
+ sign_time: "20240722120000"
|
|
|
+ };
|
|
|
+} else if (transactionCode == "1101") {
|
|
|
+ result.data = {
|
|
|
+ psn_no: "PSN" + simpleUUID.substring(0,6),
|
|
|
+ emp_no: "EMP" + simpleUUID.substring(0,6),
|
|
|
+ emp_name: "单位名称示例",
|
|
|
+ certno: "320123199001011234",
|
|
|
+ psn_name: "张三",
|
|
|
+ gend: "1",
|
|
|
+ age: 35,
|
|
|
+ psn_type: "01",
|
|
|
+ insu_admdvs: "320100",
|
|
|
+ inhosp_stas: "1",
|
|
|
+ trt_chk_rslt: "",
|
|
|
+ exam_ccls: "^QUALID123|左手腕骨折|门诊肢体残^",
|
|
|
+ certificate_type: "01",
|
|
|
+ birthday: "19890101"
|
|
|
+ };
|
|
|
+} else if (transactionCode == "2201") {
|
|
|
+ result.data = null;
|
|
|
+} else if (transactionCode == "2204") {
|
|
|
+ result.data = [
|
|
|
+ {
|
|
|
+ rxno: "RX20240722001",
|
|
|
+ feedetl_sn: "SN20240722001",
|
|
|
+ fee_ocur_time: "20240722120000",
|
|
|
+ med_list_codg: "A001",
|
|
|
+ umamt: 100.0,
|
|
|
+ ownpay_amt: 0.0,
|
|
|
+ alwpay_amt: 0.0,
|
|
|
+ pric_uplmt_amt: 100.0,
|
|
|
+ chrgitm_lv: "1",
|
|
|
+ memo: ""
|
|
|
+ },
|
|
|
+ {
|
|
|
+ rxno: "RX20240722002",
|
|
|
+ feedetl_sn: "SN20240722002",
|
|
|
+ fee_ocur_time: "20240722121000",
|
|
|
+ med_list_codg: "A002",
|
|
|
+ umamt: 50.0,
|
|
|
+ ownpay_amt: 0.0,
|
|
|
+ alwpay_amt: 0.0,
|
|
|
+ pric_uplmt_amt: 50.0,
|
|
|
+ chrgitm_lv: "2",
|
|
|
+ memo: ""
|
|
|
+ }
|
|
|
+ ];
|
|
|
+} else if (transactionCode == "2206" || transactionCode == "2207") {
|
|
|
+ result.data = {
|
|
|
+ ipt_otp_no: "V" + simpleUUID.substring(0,10),
|
|
|
+ mdtrt_id: "MDT" + simpleUUID.substring(0,8),
|
|
|
+ medfee_sumamt: 1000.00,
|
|
|
+ hifp_pay: 800.00,
|
|
|
+ psn_cash_pay: 200.00,
|
|
|
+ med_list_codg: "A001",
|
|
|
+ umamt: 1000.00,
|
|
|
+ drug_fee: 300.00,
|
|
|
+ dati_fee: 400.00,
|
|
|
+ ms_fee: 300.00
|
|
|
+ };
|
|
|
+} else if (transactionCode == "1320") {
|
|
|
+ result.data = {
|
|
|
+ medfee_sumamt: 10000.00,
|
|
|
+ hifp_pay: 8000.00,
|
|
|
+ psn_cash_pay: 2000.00
|
|
|
+ };
|
|
|
+} else if (transactionCode == "1321") {
|
|
|
+ result.data = {
|
|
|
+ ipt_otp_no: "V" + simpleUUID.substring(0,10),
|
|
|
+ medrcdno: "M" + simpleUUID.substring(0,8),
|
|
|
+ medfee_sumamt: 1000.00,
|
|
|
+ hifp_pay: 800.00,
|
|
|
+ psn_cash_pay: 200.00
|
|
|
+ };
|
|
|
+} else if (transactionCode == "2209") {
|
|
|
+ result.data = {
|
|
|
+ rec_state: "1",
|
|
|
+ medfee_sumamt: 1000.00
|
|
|
+ };
|
|
|
+} else if (transactionCode == "9103") {
|
|
|
+ result.data = [
|
|
|
+ {
|
|
|
+ ipt_otp_no: "V" + simpleUUID.substring(0,10),
|
|
|
+ medrcdno: "M" + simpleUUID.substring(0,8),
|
|
|
+ medfee_sumamt: 1000.00,
|
|
|
+ hifp_pay: 800.00,
|
|
|
+ psn_cash_pay: 200.00,
|
|
|
+ msgid: "SQ201348202307221000000001",
|
|
|
+ med_type: "11",
|
|
|
+ psn_no: "PSN" + simpleUUID.substring(0,6),
|
|
|
+ psn_name: "张三",
|
|
|
+ setl_time: "20240722120000",
|
|
|
+ opter: "001",
|
|
|
+ pageCount: 1
|
|
|
+ }
|
|
|
+ ];
|
|
|
+} else if (transactionCode == "9104") {
|
|
|
+ result.data = [
|
|
|
+ {
|
|
|
+ ipt_otp_no: "V" + simpleUUID.substring(0,10),
|
|
|
+ medrcdno: "M" + simpleUUID.substring(0,8),
|
|
|
+ rxno: "RX20240722001",
|
|
|
+ feedetl_sn: "SN20240722001",
|
|
|
+ fee_ocur_time: "20240722120000",
|
|
|
+ med_list_codg: "A001",
|
|
|
+ pric: 10.0,
|
|
|
+ cnt: 2,
|
|
|
+ umamt: 20.0,
|
|
|
+ ownpay_amt: 0.0,
|
|
|
+ alwpay_amt: 0.0,
|
|
|
+ pric_uplmt_amt: 20.0,
|
|
|
+ chrgitm_lv: "1",
|
|
|
+ memo: "",
|
|
|
+ list_type: "1",
|
|
|
+ pageCount: 1
|
|
|
+ }
|
|
|
+ ];
|
|
|
+} else if (transactionCode == "9105") {
|
|
|
+ result.data = [
|
|
|
+ {
|
|
|
+ fixmedins_code: "SQ201348",
|
|
|
+ fixmedins_name: "沭阳铭和医院",
|
|
|
+ adm_time: "20240720100000",
|
|
|
+ dscg_time: "20240721100000",
|
|
|
+ dscg_trt_rslt: "01",
|
|
|
+ diag_code: "I10",
|
|
|
+ med_type: "11",
|
|
|
+ medfee_sumamt: 1000.00,
|
|
|
+ setl_time: "20240722120000"
|
|
|
+ }
|
|
|
+ ];
|
|
|
+} else if (transactionCode == "8101") {
|
|
|
+ result.data = [
|
|
|
+ {
|
|
|
+ order_date: "20240725",
|
|
|
+ available_num: 100,
|
|
|
+ reserved_num: 80,
|
|
|
+ remaining_num: 20,
|
|
|
+ physical_num: 75,
|
|
|
+ pageCount: 1
|
|
|
+ }
|
|
|
+ ];
|
|
|
+} else if (transactionCode == "8103") {
|
|
|
+ result.data = [
|
|
|
+ {
|
|
|
+ psn_no: "PSN" + simpleUUID.substring(0,6),
|
|
|
+ order_date: "20240725",
|
|
|
+ order_id: 10001,
|
|
|
+ psn_name: "张三",
|
|
|
+ certno: "320123199001011234",
|
|
|
+ gend: "1",
|
|
|
+ age: 35,
|
|
|
+ area: "320100",
|
|
|
+ street: "XX街道",
|
|
|
+ community: "XX社区",
|
|
|
+ examination_type: "1",
|
|
|
+ tel: "13800000000",
|
|
|
+ receivingaddress: "1",
|
|
|
+ nophyreason: "",
|
|
|
+ pageCount: 1
|
|
|
+ }
|
|
|
+ ];
|
|
|
+} else if (transactionCode == "8106") {
|
|
|
+ result.data = [
|
|
|
+ {
|
|
|
+ psn_no: "PSN" + simpleUUID.substring(0,6),
|
|
|
+ psn_name: "张三",
|
|
|
+ order_id: 10001,
|
|
|
+ physical_date: "20240725",
|
|
|
+ completion_date: "20240726",
|
|
|
+ settlement_date: "20240727",
|
|
|
+ exam_date: "20240728",
|
|
|
+ audit_status: "1",
|
|
|
+ remarks: "无异常",
|
|
|
+ pageCount: 1
|
|
|
+ }
|
|
|
+ ];
|
|
|
+} else if (transactionCode == "8107") {
|
|
|
+ result.data = [
|
|
|
+ {
|
|
|
+ psn_no: "PSN" + simpleUUID.substring(0,6),
|
|
|
+ order_id: 10001,
|
|
|
+ completion_date: "20240726",
|
|
|
+ major_items: "A01",
|
|
|
+ small_items: "B01",
|
|
|
+ results: "正常",
|
|
|
+ diagnosis: "无异常",
|
|
|
+ normalrange: "参考值",
|
|
|
+ pageCount: 1
|
|
|
+ }
|
|
|
+ ];
|
|
|
+} else if (transactionCode == "8109") {
|
|
|
+ result.data = [
|
|
|
+ {
|
|
|
+ psn_no: "PSN" + simpleUUID.substring(0,6),
|
|
|
+ psn_name: "张三",
|
|
|
+ order_id: 10001,
|
|
|
+ physical_date: "20240725",
|
|
|
+ remarks: "补刷卡登记",
|
|
|
+ pageCount: 1
|
|
|
+ }
|
|
|
+ ];
|
|
|
+} else if (transactionCode == "2302") {
|
|
|
+ result.data = [
|
|
|
+ {
|
|
|
+ referral_id: "REF" + simpleUUID.substring(0,8),
|
|
|
+ actualStartTime: "20240720",
|
|
|
+ actualEndTime: "20240730",
|
|
|
+ outArea: "320100",
|
|
|
+ outHospitalName: "南京市第一医院",
|
|
|
+ applyReason: "康复治疗",
|
|
|
+ transportation: "救护车",
|
|
|
+ stateCode: "320100",
|
|
|
+ applyTime: "20240719",
|
|
|
+ qualification_id: "QUALID123"
|
|
|
+ }
|
|
|
+ ];
|
|
|
+} else if (
|
|
|
+ transactionCode == "8104" || transactionCode == "8105" || transactionCode == "8108" ||
|
|
|
+ transactionCode == "2301" || transactionCode == "2202" || transactionCode == "2203" ||
|
|
|
+ transactionCode == "2205" || transactionCode == "2208" || transactionCode == "2303"
|
|
|
+) {
|
|
|
+ result.data = null;
|
|
|
+} else {
|
|
|
+ result.data = {
|
|
|
+ info: "模拟数据",
|
|
|
+ transaction: transactionCode
|
|
|
+ };
|
|
|
+}
|
|
|
+// 业务错误模拟(如缺少必填参数)
|
|
|
+if (!transactionCode) {
|
|
|
+ result.success = false;
|
|
|
+ result.code = 1001;
|
|
|
+ result.message = "不支持的交易类型";
|
|
|
+ result.data = null;
|
|
|
+}
|
|
|
+// 返回模拟结果
|
|
|
+return result;import cn.hutool.core.util.IdUtil;
|
|
|
+
|
|
|
+// Magic API模拟接口:江苏工伤联网接口模拟
|
|
|
+// 适配SQL Server 2008
|
|
|
+// 用于前端联调和接口测试
|
|
|
+//
|
|
|
+// =====================
|
|
|
+// 交易请求参数详解:
|
|
|
+//
|
|
|
+// 通用请求结构:
|
|
|
+// {
|
|
|
+// "action": "transaction", // 固定为"transaction"
|
|
|
+// "transactionName": "交易英文名或代码", // 如"SignIn"、"RegisterPatient"、"2201"等
|
|
|
+// "businessParams": { ... }, // 业务参数对象(每个交易不同,详见下方)
|
|
|
+// "identifyMode": "1", // 识别方式:1-实体社保卡,2-电子凭证(可选,默认1)
|
|
|
+// "qrCodeInfo": "", // 电子社保卡二维码(识别方式为2时必填)
|
|
|
+// "operatorId": "", // 经办人编号(可选)
|
|
|
+// "operatorName": "" // 经办人姓名(可选)
|
|
|
+// }
|
|
|
+//
|
|
|
+// 9001 签到(SignIn)
|
|
|
+// - businessParams: {} // 无需业务参数,可省略或传空对象
|
|
|
+// - 示例:
|
|
|
+// {
|
|
|
+// "action": "transaction",
|
|
|
+// "transactionName": "SignIn"
|
|
|
+// }
|
|
|
+//
|
|
|
+// 1101 读卡(ReadCard)
|
|
|
+// - businessParams: {} // 无需业务参数,可省略或传空对象
|
|
|
+// - 示例:
|
|
|
+// {
|
|
|
+// "action": "transaction",
|
|
|
+// "transactionName": "ReadCard"
|
|
|
+// }
|
|
|
+//
|
|
|
+// 2201 门诊/住院登记(RegisterPatient)
|
|
|
+// - businessParams: {
|
|
|
+// "patient_id": "string", // 患者ID(必填)
|
|
|
+// "visit_type": "1", // 就诊类型(1-门诊,2-住院)(必填)
|
|
|
+// "dept_code": "001", // 科室编码(必填)
|
|
|
+// "dept_name": "内科", // 科室名称(必填)
|
|
|
+// "doctor_code": "DOC001", // 医生编码(必填)
|
|
|
+// "doctor_name": "张医生" // 医生姓名(必填)
|
|
|
+// ... // 其他登记所需字段,详见官方文档
|
|
|
+// }
|
|
|
+// - 示例:
|
|
|
+// {
|
|
|
+// "action": "transaction",
|
|
|
+// "transactionName": "RegisterPatient",
|
|
|
+// "businessParams": {
|
|
|
+// "patient_id": "P123456",
|
|
|
+// "visit_type": "1",
|
|
|
+// "dept_code": "001",
|
|
|
+// "dept_name": "内科",
|
|
|
+// "doctor_code": "DOC001",
|
|
|
+// "doctor_name": "张医生"
|
|
|
+// }
|
|
|
+// }
|
|
|
+//
|
|
|
+// 2204 处方明细上报(UploadPrescription)
|
|
|
+// - businessParams: {
|
|
|
+// "patient_id": "string", // 患者ID(必填)
|
|
|
+// "visit_no": "string", // 就诊流水号(必填)
|
|
|
+// "batch_no": "1", // 批次号(必填,建议从1递增)
|
|
|
+// "prescriptions": [ // 处方明细数组(必填,最多50条)
|
|
|
+// {
|
|
|
+// "item_code": "A001", // 项目编码(必填)
|
|
|
+// "item_name": "药品A", // 项目名称(必填)
|
|
|
+// "amount": 1, // 数量(必填)
|
|
|
+// "price": 10.0 // 单价(必填)
|
|
|
+// ... // 其他明细字段,详见官方文档
|
|
|
+// }
|
|
|
+// // ...多条
|
|
|
+// ]
|
|
|
+// }
|
|
|
+// - 示例:
|
|
|
+// {
|
|
|
+// "action": "transaction",
|
|
|
+// "transactionName": "UploadPrescription",
|
|
|
+// "businessParams": {
|
|
|
+// "patient_id": "P123456",
|
|
|
+// "visit_no": "V20230722001",
|
|
|
+// "batch_no": "1",
|
|
|
+// "prescriptions": [
|
|
|
+// { "item_code": "A001", "item_name": "药品A", "amount": 1, "price": 10.0 }
|
|
|
+// ]
|
|
|
+// }
|
|
|
+// }
|
|
|
+//
|
|
|
+// 2206/2207 费用预结算/结算(PreSettle/Settle)
|
|
|
+// - businessParams: {
|
|
|
+// "visit_no": "string", // 就诊流水号(必填)
|
|
|
+// "pre_settle_id": "string", // 预结算ID(结算时必填)
|
|
|
+// ... // 其他结算所需字段,详见官方文档
|
|
|
+// }
|
|
|
+// - 示例:
|
|
|
+// {
|
|
|
+// "action": "transaction",
|
|
|
+// "transactionName": "Settle",
|
|
|
+// "businessParams": {
|
|
|
+// "visit_no": "V20230722001",
|
|
|
+// "pre_settle_id": "PRE20230722001"
|
|
|
+// }
|
|
|
+// }
|
|
|
+//
|
|
|
+// 1320/1321 对账类(TotalAccount/DetailAccount)
|
|
|
+// - businessParams: {
|
|
|
+// "stmt_begindate": "20240701", // 对账开始时间(必填,格式yyyyMMdd)
|
|
|
+// "stmt_enddate": "20240722", // 对账结束时间(必填,格式yyyyMMdd)
|
|
|
+// "sign_no": "string", // 签到流水号(可选)
|
|
|
+// ... // 其他对账所需字段,详见官方文档
|
|
|
+// }
|
|
|
+//
|
|
|
+// 2209 冲正交易(ReverseTransaction)
|
|
|
+// - businessParams: {
|
|
|
+// "infno": "2201", // 冲正交易编号(必填,2201/2207/2208)
|
|
|
+// "msgid": "string" // 发送方报文ID(必填)
|
|
|
+// }
|
|
|
+//
|
|
|
+// 9103/9104/9105 查询/下载类
|
|
|
+// - businessParams: {
|
|
|
+// "ipt_otp_no": "string", // 门诊/住院流水号(必填)
|
|
|
+// "mdtrt_id": "string", // 单据号(必填,部分接口)
|
|
|
+// "pageNumber": 1 // 页码(可选,默认1)
|
|
|
+// ... // 其他查询条件,详见官方文档
|
|
|
+// }
|
|
|
+//
|
|
|
+// 81xx 体检类、23xx 转诊转院类等
|
|
|
+// - businessParams: 详见官方文档,按接口要求传递
|
|
|
+//
|
|
|
+// 其他上传/登记/撤销类交易
|
|
|
+// - businessParams: 按官方文档必填字段传递
|
|
|
+//
|
|
|
+// =====================
|
|
|
+//
|
|
|
+// 交易返回字段详解:
|
|
|
+//
|
|
|
+// 9001 签到(SignIn)
|
|
|
+// output: { sign_no, sign_time }
|
|
|
+// - sign_no: 签到流水号(中心生成,唯一)
|
|
|
+// - sign_time: 签到时间(yyyyMMddHHmmss)
|
|
|
+//
|
|
|
+// 1101 读卡(ReadCard)
|
|
|
+// output: { psn_no, emp_no, emp_name, certno, psn_name, gend, age, psn_type, insu_admdvs, inhosp_stas, trt_chk_rslt, exam_ccls, certificate_type, birthday }
|
|
|
+// - exam_ccls: 工伤诊断结论,格式为^工伤医疗费资格审核信息ID|受伤部位信息描述|就诊类型^
|
|
|
+// - gend/psn_type/certificate_type等详见二级代码表
|
|
|
+//
|
|
|
+// 2201 门诊/住院登记(RegisterPatient)
|
|
|
+// output: 无(登记成功output为空,infcode=0)
|
|
|
+//
|
|
|
+// 2204 处方明细上报(UploadPrescription)
|
|
|
+// output: 数组,每条明细返回 { rxno, feedetl_sn, fee_ocur_time, med_list_codg, umamt, ownpay_amt, alwpay_amt, pric_uplmt_amt, chrgitm_lv, memo }
|
|
|
+//
|
|
|
+// 2206/2207 费用预结算/结算(PreSettle/Settle)
|
|
|
+// output: { ipt_otp_no, mdtrt_id, medfee_sumamt, hifp_pay, psn_cash_pay, med_list_codg, umamt, drug_fee, dati_fee, ms_fee }
|
|
|
+//
|
|
|
+// 1320 总额对账(TotalAccount)
|
|
|
+// output: { medfee_sumamt, hifp_pay, psn_cash_pay }
|
|
|
+//
|
|
|
+// 1321 明细对账(DetailAccount)
|
|
|
+// output: { ipt_otp_no, medrcdno, medfee_sumamt, hifp_pay, psn_cash_pay }
|
|
|
+//
|
|
|
+// 2209 冲正交易(ReverseTransaction)
|
|
|
+// output: { rec_state, medfee_sumamt }
|
|
|
+//
|
|
|
+// 9103 费用明细详细信息下载(QueryFeeDetail)
|
|
|
+// output: 数组,每行 { ipt_otp_no, medrcdno, medfee_sumamt, hifp_pay, psn_cash_pay, msgid, med_type, psn_no, psn_name, setl_time, opter, pageCount }
|
|
|
+//
|
|
|
+// 9104 处方明细下载(QueryPrescriptionDetail)
|
|
|
+// output: 数组,每行 { ipt_otp_no, medrcdno, rxno, feedetl_sn, fee_ocur_time, med_list_codg, pric, cnt, umamt, ownpay_amt, alwpay_amt, pric_uplmt_amt, chrgitm_lv, memo, list_type, pageCount }
|
|
|
+//
|
|
|
+// 9105 参保人近期就诊信息查询(QueryRecentVisit)
|
|
|
+// output: 数组,每行 { fixmedins_code, fixmedins_name, adm_time, dscg_time, dscg_trt_rslt, diag_code, med_type, medfee_sumamt, setl_time }
|
|
|
+//
|
|
|
+// 81xx 体检类查询(如8101、8103、8106、8107、8109)
|
|
|
+// output: 数组,详见官方文档表格,每行含pageCount
|
|
|
+//
|
|
|
+// 23xx 转诊转院类(如2302)
|
|
|
+// output: 数组,每行 { referral_id, actualStartTime, actualEndTime, outArea, outHospitalName, applyReason, transportation, stateCode, applyTime, qualification_id }
|
|
|
+//
|
|
|
+// 其他上传/登记/撤销类交易 output为空,仅需判断infcode=0
|
|
|
+//
|
|
|
+// 常用二级代码表:
|
|
|
+// 性别(gend):1男 2女 9未说明
|
|
|
+// 工伤人员类别(psn_type):01新工伤 02老工伤 ...
|
|
|
+// 证件类型(certificate_type):01居民身份证 04港澳居民来往内地通行证 ...
|
|
|
+// 医疗类别(med_type):11门诊肢体残 12门诊职业病 ...
|
|
|
+// 在院状态(inhosp_stas):0未在院 1工伤在院 2医疗在院
|
|
|
+// 审核状态(audit_status):0未审核 1已审核
|
|
|
+// 体检类别(examination_type):1社服体检
|
|
|
+// 报告领取地(receivingaddress):1医院 2社区
|
|
|
+// 出院原因(dscg_trt_rslt):01治愈 02死亡 03转院 04其它 05好转
|
|
|
+// 收费项目等级(chrgitm_lv):1甲类 2乙类 3丙类
|
|
|
+// 是否最小计量单位(min_unit):0否 1是
|
|
|
+// 全额自费标志(allSelfFlag):0否 1是
|
|
|
+// 三大目录类别(list_type):1药品 2诊疗项目 3材料
|
|
|
+//
|
|
|
+// 错误码说明:infcode=0成功,-1失败,err_msg返回错误信息
|
|
|
+// 分页说明:查询/下载类接口output为数组,每行含pageCount,入参pageNumber控制页码
|
|
|
+//
|
|
|
+// 更多详见本文件参数说明章节和官方文档
|
|
|
+
|
|
|
+if (!body) {
|
|
|
+ exit -1, "参数body不能为空";
|
|
|
+}
|
|
|
+var dataParams = body;
|
|
|
+
|
|
|
+// 解析通用参数
|
|
|
+var action = dataParams.action ? dataParams.action : '';
|
|
|
+var transactionName = dataParams.transactionName ? dataParams.transactionName : '';
|
|
|
+var businessParams = dataParams.businessParams ? dataParams.businessParams : {};
|
|
|
+var identifyMode = dataParams.identifyMode ? dataParams.identifyMode : '1';
|
|
|
+var qrCodeInfo = dataParams.qrCodeInfo ? dataParams.qrCodeInfo : '';
|
|
|
+var operatorId = dataParams.operatorId ? dataParams.operatorId : '';
|
|
|
+var operatorName = dataParams.operatorName ? dataParams.operatorName : '';
|
|
|
+
|
|
|
+// 生成UUID
|
|
|
+var simpleUUID = IdUtil.simpleUUID();
|
|
|
+
|
|
|
+// 交易代码映射
|
|
|
+var transactionMap = {
|
|
|
+ "SignIn": "9001",
|
|
|
+ "SignOut": "9002",
|
|
|
+ "ReadCard": "1101",
|
|
|
+ "RegisterPatient": "2201",
|
|
|
+ "CancelRegister": "2202",
|
|
|
+ "ModifyRegister": "2203",
|
|
|
+ "UploadPrescription": "2204",
|
|
|
+ "CancelPrescription": "2205",
|
|
|
+ "PreSettle": "2206",
|
|
|
+ "Settle": "2207",
|
|
|
+ "CancelSettle": "2208",
|
|
|
+ "ReverseTransaction": "2209",
|
|
|
+ "UploadReferral": "2301",
|
|
|
+ "QueryReferral": "2302",
|
|
|
+ "CancelReferral": "2303",
|
|
|
+ "TotalAccount": "1320",
|
|
|
+ "DetailAccount": "1321",
|
|
|
+ "BatchDownload": "1301",
|
|
|
+ "QueryFeeDetail": "9103",
|
|
|
+ "QueryPrescriptionDetail": "9104",
|
|
|
+ "QueryRecentVisit": "9105"
|
|
|
+};
|
|
|
+
|
|
|
+// 交易代码
|
|
|
+var transactionCode = transactionMap[transactionName] ? transactionMap[transactionName] : transactionName;
|
|
|
+
|
|
|
+// =====================
|
|
|
+// 自动签到逻辑(全局sign_no复用):
|
|
|
+// 对所有业务类交易(非签到/签退),如果businessParams未带sign_no或为空,先自动执行一次签到,拿到sign_no后补充到businessParams。
|
|
|
+// sign_no为全局唯一,首次自动签到后全局复用,直到签退或重置。
|
|
|
+var globalSignNo = SIGNNO123456;
|
|
|
+if (transactionCode != "9001" && transactionCode != "9002") {
|
|
|
+ var signNoFromParams = null;
|
|
|
+ if (businessParams && businessParams.sign_no !== undefined) {
|
|
|
+ signNoFromParams = businessParams.sign_no;
|
|
|
+ }
|
|
|
+ if (!signNoFromParams) {
|
|
|
+ if (!globalSignNo) {
|
|
|
+ globalSignNo = "SIGNNO" + simpleUUID.substring(0, 8);
|
|
|
+ }
|
|
|
+ if (!businessParams) {
|
|
|
+ businessParams = {}
|
|
|
+ };
|
|
|
+ businessParams.sign_no = globalSignNo;
|
|
|
+ // 可选:可在result中增加debug_auto_signin = true
|
|
|
+ }
|
|
|
+}
|
|
|
+// =====================
|
|
|
+
|
|
|
+// 通用返回结构
|
|
|
+var result = {
|
|
|
+ success: true,
|
|
|
+ code: 200,
|
|
|
+ message: "交易成功",
|
|
|
+ device: "江苏工伤联网接口(模拟)",
|
|
|
+ transactionCode: transactionCode,
|
|
|
+ request_parameters: dataParams,
|
|
|
+ transformed_parameters: {
|
|
|
+ infno: transactionCode,
|
|
|
+ msgid: "SQ201348202307221000000001",
|
|
|
+ recer_sys_code: "JSYTH",
|
|
|
+ infver: "V2.1",
|
|
|
+ opter_type: "1",
|
|
|
+ opter: operatorId ? operatorId : "001",
|
|
|
+ opter_name: operatorName ? operatorName : "系统管理员",
|
|
|
+ inf_time: "20240722120000",
|
|
|
+ fixmedins_code: "SQ201348",
|
|
|
+ fixmedins_name: "沭阳铭和医院",
|
|
|
+ sign_no: businessParams.sign_no || "SIGNNO123456",
|
|
|
+ idfi_mode: identifyMode,
|
|
|
+ qrcode_info: qrCodeInfo,
|
|
|
+ input: businessParams
|
|
|
+ },
|
|
|
+ rawOutput: "",
|
|
|
+ debug_step: "模拟接口返回"
|
|
|
+};
|
|
|
+
|
|
|
+// 针对不同交易,返回不同data结构
|
|
|
+if (transactionCode == "9001") {
|
|
|
+ result.data = {
|
|
|
+ sign_no: "SIGNNO" + simpleUUID,
|
|
|
+ sign_time: "20240722120000"
|
|
|
+ };
|
|
|
+} else if (transactionCode == "1101") {
|
|
|
+ result.data = {
|
|
|
+ psn_no: "PSN" + simpleUUID.substring(0,6),
|
|
|
+ emp_no: "EMP" + simpleUUID.substring(0,6),
|
|
|
+ emp_name: "单位名称示例",
|
|
|
+ certno: "320123199001011234",
|
|
|
+ psn_name: "张三",
|
|
|
+ gend: "1",
|
|
|
+ age: 35,
|
|
|
+ psn_type: "01",
|
|
|
+ insu_admdvs: "320100",
|
|
|
+ inhosp_stas: "1",
|
|
|
+ trt_chk_rslt: "",
|
|
|
+ exam_ccls: "^QUALID123|左手腕骨折|门诊肢体残^",
|
|
|
+ certificate_type: "01",
|
|
|
+ birthday: "19890101"
|
|
|
+ };
|
|
|
+} else if (transactionCode == "2201") {
|
|
|
+ result.data = null;
|
|
|
+} else if (transactionCode == "2204") {
|
|
|
+ result.data = [
|
|
|
+ {
|
|
|
+ rxno: "RX20240722001",
|
|
|
+ feedetl_sn: "SN20240722001",
|
|
|
+ fee_ocur_time: "20240722120000",
|
|
|
+ med_list_codg: "A001",
|
|
|
+ umamt: 100.0,
|
|
|
+ ownpay_amt: 0.0,
|
|
|
+ alwpay_amt: 0.0,
|
|
|
+ pric_uplmt_amt: 100.0,
|
|
|
+ chrgitm_lv: "1",
|
|
|
+ memo: ""
|
|
|
+ },
|
|
|
+ {
|
|
|
+ rxno: "RX20240722002",
|
|
|
+ feedetl_sn: "SN20240722002",
|
|
|
+ fee_ocur_time: "20240722121000",
|
|
|
+ med_list_codg: "A002",
|
|
|
+ umamt: 50.0,
|
|
|
+ ownpay_amt: 0.0,
|
|
|
+ alwpay_amt: 0.0,
|
|
|
+ pric_uplmt_amt: 50.0,
|
|
|
+ chrgitm_lv: "2",
|
|
|
+ memo: ""
|
|
|
+ }
|
|
|
+ ];
|
|
|
+} else if (transactionCode == "2206" || transactionCode == "2207") {
|
|
|
+ result.data = {
|
|
|
+ ipt_otp_no: "V" + simpleUUID.substring(0,10),
|
|
|
+ mdtrt_id: "MDT" + simpleUUID.substring(0,8),
|
|
|
+ medfee_sumamt: 1000.00,
|
|
|
+ hifp_pay: 800.00,
|
|
|
+ psn_cash_pay: 200.00,
|
|
|
+ med_list_codg: "A001",
|
|
|
+ umamt: 1000.00,
|
|
|
+ drug_fee: 300.00,
|
|
|
+ dati_fee: 400.00,
|
|
|
+ ms_fee: 300.00
|
|
|
+ };
|
|
|
+} else if (transactionCode == "1320") {
|
|
|
+ result.data = {
|
|
|
+ medfee_sumamt: 10000.00,
|
|
|
+ hifp_pay: 8000.00,
|
|
|
+ psn_cash_pay: 2000.00
|
|
|
+ };
|
|
|
+} else if (transactionCode == "1321") {
|
|
|
+ result.data = {
|
|
|
+ ipt_otp_no: "V" + simpleUUID.substring(0,10),
|
|
|
+ medrcdno: "M" + simpleUUID.substring(0,8),
|
|
|
+ medfee_sumamt: 1000.00,
|
|
|
+ hifp_pay: 800.00,
|
|
|
+ psn_cash_pay: 200.00
|
|
|
+ };
|
|
|
+} else if (transactionCode == "2209") {
|
|
|
+ result.data = {
|
|
|
+ rec_state: "1",
|
|
|
+ medfee_sumamt: 1000.00
|
|
|
+ };
|
|
|
+} else if (transactionCode == "9103") {
|
|
|
+ result.data = [
|
|
|
+ {
|
|
|
+ ipt_otp_no: "V" + simpleUUID.substring(0,10),
|
|
|
+ medrcdno: "M" + simpleUUID.substring(0,8),
|
|
|
+ medfee_sumamt: 1000.00,
|
|
|
+ hifp_pay: 800.00,
|
|
|
+ psn_cash_pay: 200.00,
|
|
|
+ msgid: "SQ201348202307221000000001",
|
|
|
+ med_type: "11",
|
|
|
+ psn_no: "PSN" + simpleUUID.substring(0,6),
|
|
|
+ psn_name: "张三",
|
|
|
+ setl_time: "20240722120000",
|
|
|
+ opter: "001",
|
|
|
+ pageCount: 1
|
|
|
+ }
|
|
|
+ ];
|
|
|
+} else if (transactionCode == "9104") {
|
|
|
+ result.data = [
|
|
|
+ {
|
|
|
+ ipt_otp_no: "V" + simpleUUID.substring(0,10),
|
|
|
+ medrcdno: "M" + simpleUUID.substring(0,8),
|
|
|
+ rxno: "RX20240722001",
|
|
|
+ feedetl_sn: "SN20240722001",
|
|
|
+ fee_ocur_time: "20240722120000",
|
|
|
+ med_list_codg: "A001",
|
|
|
+ pric: 10.0,
|
|
|
+ cnt: 2,
|
|
|
+ umamt: 20.0,
|
|
|
+ ownpay_amt: 0.0,
|
|
|
+ alwpay_amt: 0.0,
|
|
|
+ pric_uplmt_amt: 20.0,
|
|
|
+ chrgitm_lv: "1",
|
|
|
+ memo: "",
|
|
|
+ list_type: "1",
|
|
|
+ pageCount: 1
|
|
|
+ }
|
|
|
+ ];
|
|
|
+} else if (transactionCode == "9105") {
|
|
|
+ result.data = [
|
|
|
+ {
|
|
|
+ fixmedins_code: "SQ201348",
|
|
|
+ fixmedins_name: "沭阳铭和医院",
|
|
|
+ adm_time: "20240720100000",
|
|
|
+ dscg_time: "20240721100000",
|
|
|
+ dscg_trt_rslt: "01",
|
|
|
+ diag_code: "I10",
|
|
|
+ med_type: "11",
|
|
|
+ medfee_sumamt: 1000.00,
|
|
|
+ setl_time: "20240722120000"
|
|
|
+ }
|
|
|
+ ];
|
|
|
+} else if (transactionCode == "8101") {
|
|
|
+ result.data = [
|
|
|
+ {
|
|
|
+ order_date: "20240725",
|
|
|
+ available_num: 100,
|
|
|
+ reserved_num: 80,
|
|
|
+ remaining_num: 20,
|
|
|
+ physical_num: 75,
|
|
|
+ pageCount: 1
|
|
|
+ }
|
|
|
+ ];
|
|
|
+} else if (transactionCode == "8103") {
|
|
|
+ result.data = [
|
|
|
+ {
|
|
|
+ psn_no: "PSN" + simpleUUID.substring(0,6),
|
|
|
+ order_date: "20240725",
|
|
|
+ order_id: 10001,
|
|
|
+ psn_name: "张三",
|
|
|
+ certno: "320123199001011234",
|
|
|
+ gend: "1",
|
|
|
+ age: 35,
|
|
|
+ area: "320100",
|
|
|
+ street: "XX街道",
|
|
|
+ community: "XX社区",
|
|
|
+ examination_type: "1",
|
|
|
+ tel: "13800000000",
|
|
|
+ receivingaddress: "1",
|
|
|
+ nophyreason: "",
|
|
|
+ pageCount: 1
|
|
|
+ }
|
|
|
+ ];
|
|
|
+} else if (transactionCode == "8106") {
|
|
|
+ result.data = [
|
|
|
+ {
|
|
|
+ psn_no: "PSN" + simpleUUID.substring(0,6),
|
|
|
+ psn_name: "张三",
|
|
|
+ order_id: 10001,
|
|
|
+ physical_date: "20240725",
|
|
|
+ completion_date: "20240726",
|
|
|
+ settlement_date: "20240727",
|
|
|
+ exam_date: "20240728",
|
|
|
+ audit_status: "1",
|
|
|
+ remarks: "无异常",
|
|
|
+ pageCount: 1
|
|
|
+ }
|
|
|
+ ];
|
|
|
+} else if (transactionCode == "8107") {
|
|
|
+ result.data = [
|
|
|
+ {
|
|
|
+ psn_no: "PSN" + simpleUUID.substring(0,6),
|
|
|
+ order_id: 10001,
|
|
|
+ completion_date: "20240726",
|
|
|
+ major_items: "A01",
|
|
|
+ small_items: "B01",
|
|
|
+ results: "正常",
|
|
|
+ diagnosis: "无异常",
|
|
|
+ normalrange: "参考值",
|
|
|
+ pageCount: 1
|
|
|
+ }
|
|
|
+ ];
|
|
|
+} else if (transactionCode == "8109") {
|
|
|
+ result.data = [
|
|
|
+ {
|
|
|
+ psn_no: "PSN" + simpleUUID.substring(0,6),
|
|
|
+ psn_name: "张三",
|
|
|
+ order_id: 10001,
|
|
|
+ physical_date: "20240725",
|
|
|
+ remarks: "补刷卡登记",
|
|
|
+ pageCount: 1
|
|
|
+ }
|
|
|
+ ];
|
|
|
+} else if (transactionCode == "2302") {
|
|
|
+ result.data = [
|
|
|
+ {
|
|
|
+ referral_id: "REF" + simpleUUID.substring(0,8),
|
|
|
+ actualStartTime: "20240720",
|
|
|
+ actualEndTime: "20240730",
|
|
|
+ outArea: "320100",
|
|
|
+ outHospitalName: "南京市第一医院",
|
|
|
+ applyReason: "康复治疗",
|
|
|
+ transportation: "救护车",
|
|
|
+ stateCode: "320100",
|
|
|
+ applyTime: "20240719",
|
|
|
+ qualification_id: "QUALID123"
|
|
|
+ }
|
|
|
+ ];
|
|
|
+} else if (
|
|
|
+ transactionCode == "8104" || transactionCode == "8105" || transactionCode == "8108" ||
|
|
|
+ transactionCode == "2301" || transactionCode == "2202" || transactionCode == "2203" ||
|
|
|
+ transactionCode == "2205" || transactionCode == "2208" || transactionCode == "2303"
|
|
|
+) {
|
|
|
+ result.data = null;
|
|
|
+} else {
|
|
|
+ result.data = {
|
|
|
+ info: "模拟数据",
|
|
|
+ transaction: transactionCode
|
|
|
+ };
|
|
|
+}
|
|
|
+// 业务错误模拟(如缺少必填参数)
|
|
|
+if (!transactionCode) {
|
|
|
+ result.success = false;
|
|
|
+ result.code = 1001;
|
|
|
+ result.message = "不支持的交易类型";
|
|
|
+ result.data = null;
|
|
|
+}
|
|
|
+// 返回模拟结果
|
|
|
+return result;
|
|
|
+```
|
|
|
+
|
|
|
+---
|
|
|
+
|
|
|
+**用法说明:**
|
|
|
+- 直接部署到 Magic API,接口路径自定义(如 `/mock/workinjury`)。
|
|
|
+- 前端传入的参数结构与真实接口一致(action/transactionName/businessParams等)。
|
|
|
+- 根据不同 `transactionName` 返回对应的模拟业务数据,字段和格式与真实接口完全一致。
|
|
|
+- 可根据需要扩展更多交易类型和字段。
|
|
|
+
|
|
|
+如需批量、分页、或更复杂的模拟逻辑,可随时补充!
|