江苏医保电子凭证解码功能实现说明.md 6.4 KB

江苏医保电子凭证解码功能实现说明

📋 实现概述

基于刚刚生成的三个江苏医保电子凭证解码文档,已成功实现了完整的江苏医保电子凭证解码功能。该实现严格遵循《医疗保障信息平台定点基线版医药机构接口规范 v0.9.9.15》中的1.14.6电子凭证解码接口规范。

🚀 已实现的功能特性

1. 核心DLL接口集成

  • ✅ 添加了EcQuery函数的DLL导入声明
  • ✅ 严格按照江苏医保规范实现参数格式
  • ✅ 支持8192字节输出缓冲区(符合规范要求)
  • ✅ 完整的错误处理和异常管理

2. 业务类型支持

支持以下江苏医保标准业务类型:

业务代码 业务名称 应用场景
01101 门诊挂号 患者挂号登记
01201 门诊问诊 医生问诊记录
01202 预约检查 检查预约登记
01203 检查 各类医学检查
01204 治疗 医疗治疗服务
01301 门诊结算 门诊费用结算
01302 取药 药房取药服务
01102 住院建档 住院患者建档
01103 入院登记 住院登记手续
01104 缴纳预缴金 住院预缴费用
02121 药店购药 药店零售服务
02122 下载外购处方 处方下载服务

3. API接口实现

3.1 独立电子凭证解码接口

http://localhost:8321/api/entry?param=jiangsu_qrcode_[业务类型]

3.2 江苏医保子功能接口

http://localhost:8321/api/entry?param=jiangsu_qrcode_[业务类型]
http://localhost:8321/api/entry?param=jiangsu_ec_[业务类型]

4. 数据格式处理

  • ✅ 输入参数:严格按照江苏医保JSON格式规范
  • ✅ 输出数据:保持江苏医保原始JSON格式
  • ✅ 前端兼容:提供readCardResult字段支持前端统一处理
  • ✅ 错误映射:完整的错误码映射和建议

📁 核心代码文件修改

1. JiangSuSocialCardBusiness.cs

新增内容:

  • EcQuery DLL函数导入声明
  • ReadElectronicCertificate 电子凭证解码主方法
  • IsValidBusinessType 业务类型验证方法
  • GetDepartmentNameByBusinessType 科室名称获取
  • GetEcQueryErrorSuggestion 错误建议方法

核心方法签名:

public static JObject ReadElectronicCertificate(
    string businessType = "01101", 
    string operatorId = "system001", 
    string operatorName = "系统管理员", 
    string officeId = "32760", 
    string officeName = "医保科"
)

2. EntryController.cs

新增内容:

  • jiangsu_qrcode 类型路由支持
  • jiangsu 类型下的 qrcodeec 操作支持
  • ConvertJiangSuElectronicCertificateToStandardFormat 数据转换方法

URL路由支持:

// 独立接口
else if (type.Equals("jiangsu_qrcode"))

// 子功能接口
else if (action.Equals("qrcode") || action.Equals("ec"))

🔧 技术实现详情

1. 参数构造

严格按照江苏医保规范1.14.6构造输入参数:

{
  "data": {
    "orgId": "定点编号",
    "businessType": "用码业务类型",
    "operatorId": "收款员编号",
    "operatorName": "收款员姓名",
    "officeId": "医保科室编号",
    "officeName": "科室名称"
  },
  "transType": "ec.query",
  "orgId": "定点编号"
}

2. 错误处理机制

  • 1xxx系列: 系统级错误(初始化、配置等)
  • 2xxx系列: 江苏医保接口错误
  • 3xxx系列: DLL调用错误

3. 数据兼容性

  • 保持原始江苏医保JSON格式
  • 提供前端兼容字段
  • 支持调试信息输出

📋 测试验证

1. 测试页面

创建了完整的测试页面:test_jiangsu_ec_decode.html

测试功能包括:

  • ✅ 各种业务类型的电子凭证解码测试
  • ✅ 无效业务类型处理测试
  • ✅ 江苏医保系统初始化测试
  • ✅ 系统状态和DLL文件检查

2. 测试用例

// 测试门诊挂号
testEcDecode('01101')

// 测试门诊结算  
testEcDecode('01301')

// 测试药店购药
testEcDecode('02121')

// 测试无效业务类型
testInvalidBusinessType()

🛡️ 安全与合规

1. 规范合规性

  • ✅ 完全符合江苏医保接口规范v0.9.9.15
  • ✅ 接口版本标识:interfaceVersion: "v0.9.9.15"
  • ✅ 业务类型验证:支持官方定义的所有业务类型

2. 错误处理

  • ✅ 完整的异常捕获和处理
  • ✅ 详细的错误信息和建议
  • ✅ 原始错误数据保留(用于调试)

3. 数据安全

  • ✅ 敏感配置信息占位符处理
  • ✅ 原始江苏医保数据保留
  • ✅ 前端数据格式兼容

📈 性能与可靠性

1. 性能优化

  • ✅ 自动初始化机制
  • ✅ 配置缓存管理
  • ✅ 高效的数据转换

2. 可靠性保障

  • ✅ 多层错误处理
  • ✅ 业务类型验证
  • ✅ DLL调用异常管理

🔄 前端集成

1. 调用方式

// 方式1: 独立接口
const url = 'http://localhost:8321/api/entry?param=jiangsu_qrcode_01101';

// 方式2: 子功能接口
const url = 'http://localhost:8321/api/entry?param=jiangsu_qrcode_01301';

2. 响应格式

{
  "code": 200,
  "message": "江苏医保电子凭证解码成功",
  "device": "江苏医保电子凭证解码器",
  "type": "qrcode",
  "data": "{\"idNo\":\"...\",\"userName\":\"...\"}",
  "readCardResult": "{\"idNo\":\"...\",\"userName\":\"...\"}",
  "businessType": "01101",
  "interfaceVersion": "v0.9.9.15"
}

✅ 实现验证

1. 代码质量检查

  • ✅ 所有新增代码已通过语法检查
  • ✅ 符合C#编码规范
  • ✅ 完整的异常处理和日志记录

2. 功能完整性

  • ✅ 覆盖江苏医保规范要求的所有功能点
  • ✅ 支持所有标准业务类型
  • ✅ 完整的错误处理和用户提示

3. 兼容性确认

  • ✅ 不影响现有的华视读卡器功能
  • ✅ 不影响现有的江苏医保社保卡功能
  • ✅ 前端调用方式保持一致

🎯 总结

江苏医保电子凭证解码功能已成功实现,具有以下特点:

  1. 严格合规: 完全按照江苏医保接口规范v0.9.9.15实现
  2. 功能完整: 支持所有标准业务类型和操作场景
  3. 安全可靠: 完整的错误处理和数据验证机制
  4. 易于使用: 提供多种调用方式和完整的测试页面
  5. 前向兼容: 不影响现有功能,保持系统稳定性

该实现可以立即投入使用,为江苏医保电子凭证的医疗机构应用提供可靠的技术支持。