在基于 医疗保障信息平台定点基线版医药机构接口规范v0.9.9.15.md
实现江苏医保社保卡读取功能时,发现了函数定义与官方规范不符的问题。
问题函数:Close()
方法
Close()
方法根据官方规范,还有7个函数未实现:
决策: 当前只保留核心5个函数,其他函数按需后续添加。
文件: 江苏医保社保卡读取业务类.cs
P/Invoke声明
// 移除了不存在的Close函数声明
[DllImport("HeaSecReadInfo.dll", EntryPoint = "Close")]
private extern static Int32 Close(StringBuilder pOutBuff);
csharp
// 移除了CloseConnection方法
public static JObject CloseConnection()
{
// ... 整个方法被删除
}
内部调用
// 在GetDeviceStatus方法中移除了Close的调用
// 之前错误的状态检查逻辑被简化
文件: 江苏医保社保卡控制器.cs
csharp
// 完整移除/api/jiangsu/close接口
[HttpPost]
[Route("api/jiangsu/close")]
public IHttpActionResult CloseConnection()
{
// ... 整个接口被删除
}
帮助文档中的接口说明
// 在API帮助中移除关闭连接的说明
["关闭连接"] = new JObject
{
["method"] = "POST",
["url"] = "/close",
["description"] = "关闭设备连接"
}
文件: 江苏医保社保卡读取流程说明.md
// 华视流程中的关闭步骤
// 江苏医保流程中的关闭步骤
Close() [可选] // 关闭连接
2. **API接口列表**
├── POST /api/jiangsu/close # 关闭连接
3. **错误码范围**
├── 6000-6999: 连接关闭错误
4. **测试步骤**
连接关闭 ✓
## 官方规范函数对照
### 实际存在的函数(已实现的5个)
| 序号 | 规范编号 | 函数名 | 实现状态 | 说明 |
|------|----------|--------|----------|------|
| 1 | 1.14.1 | Init | ✅ 已实现 | 初始化 |
| 2 | 1.14.2 | ReadCardBas | ✅ 已实现 | 读社保卡基本信息 |
| 3 | 1.14.3 | VerifyPIN | ✅ 已实现 | 验证PIN码 |
| 4 | 1.14.4 | ChangePIN | ✅ 已实现 | 修改PIN码 |
| 5 | 1.14.8 | GetPersonInfo | ✅ 已实现 | 四合一介质个人信息 |
### 规范中存在但未实现的函数(7个)
| 序号 | 规范编号 | 函数名 | 实现状态 | 说明 |
|------|----------|--------|----------|------|
| 6 | 1.14.5 | ReadSFZ | ❌ 未实现 | 读身份证 |
| 7 | 1.14.6 | EcQuery | ❌ 未实现 | 电子凭证解码 |
| 8 | 1.14.7 | EcCardQuery | ❌ 未实现 | 电子社保卡解码 |
| 9 | 1.14.9 | DailySinIn | ❌ 未实现 | 日常签到 |
| 10 | 1.14.10 | Busi | ❌ 未实现 | 业务函数 |
| 11 | 1.14.14 | ReadCardBasRx | ❌ 未实现 | 带处方读社保卡 |
| 12 | 1.14.15 | ReadSFZRx | ❌ 未实现 | 带处方读身份证 |
### 不存在的函数(已移除)
| 函数名 | 移除原因 | 错误来源 |
|--------|----------|----------|
| Close | 规范中不存在此函数 | 参考华视读卡器时错误添加 |
## 修正后的系统状态
### 1. 功能完整性
- ✅ 核心5个函数完全对应官方规范
- ✅ 无多余的不存在函数
- ✅ API接口与实际函数一致
- ✅ 文档描述准确无误
### 2. API接口列表(修正后)
江苏医保社保卡API接口(共8个): ├── POST /api/jiangsu/init # 初始化系统 ✅ ├── POST /api/jiangsu/readcard # 读取社保卡 ✅ ├── POST /api/jiangsu/verifypin # 验证PIN码 ✅ ├── POST /api/jiangsu/changepin # 修改PIN码 ✅ ├── POST /api/jiangsu/getpersoninfo # 四合一读取 ✅ ├── GET /api/jiangsu/status # 设备状态 ✅ ├── GET /api/jiangsu/simple # 简化调用 ✅ ├── GET /api/jiangsu/health # 健康检查 ✅ └── GET /api/jiangsu/help # API帮助 ✅
### 3. 错误码范围(修正后)
错误码范围分配:
├── 1000-1999: 初始化相关错误
├── 2000-2999: 读卡相关错误
├── 3000-3999: PIN码相关错误
├── 4000-4999: PIN修改相关错误
├── 5000-5999: 个人信息获取错误
├── 7000-7999: 状态获取错误
├── 8000-8999: 简化调用错误
└── 9000-9999: 健康检查错误
## 验证建议
### 1. 代码验证
```bash
# 检查不存在函数的调用(应该返回空)
grep -r "Close\|CloseConnection" *.cs *.md
# 检查API路由完整性
curl http://localhost:8321/api/jiangsu/help
# 验证5个核心函数都能正常工作
curl -X POST http://localhost:8321/api/jiangsu/init
curl -X POST http://localhost:8321/api/jiangsu/readcard
curl -X POST http://localhost:8321/api/jiangsu/verifypin
curl -X POST http://localhost:8321/api/jiangsu/changepin
curl -X POST http://localhost:8321/api/jiangsu/getpersoninfo
# 验证已删除的接口返回404
curl -X POST http://localhost:8321/api/jiangsu/close
# 应该返回404或类似错误
此次修正彻底清理了不存在的 Close
函数及其相关调用,确保了:
修正完成时间: 2024年12月19日 修正范围: 业务类、控制器、流程文档 影响评估: 无负面影响,提高了系统稳定性和准确性