# 医疗保障信息平台定点基线版医药机构接口规范 v0.9.9.15
## 1.14 动态库函数说明
### 1.14.1 初始化
#### 1.14.1.1 说明
用以初始化动态库,加载使用动态库调用其它函数必须首先调用初始化函数。
#### 1.14.1.2 函数名
```c
long WINAPI Init(char* pInitInfo, char* pErrMsg);
```
#### 1.14.1.3 返回值
- `0` 表示成功
- `非0` 表示失败
#### 1.14.1.4 参数说明
**输入参数 pInitInfo [格式JSON]**
| 序号 | 数据元标识 | 数据元名称 | 类型 | 长度 | 是否必填 | 备注 |
|------|------------|------------|------|------|----------|------|
| 1 | IP | 服务端IP地址 | 字符 | 100 | Y | 医疗保障平台提供的服务端IP地址 |
| 2 | PORT | 服务端端口 | 数值 | - | Y | 医疗保障平台提供的服务端端口 |
| 3 | TIMEOUT | 超时 | 数值 | - | Y | 单位秒,访问服务端超时时间 |
| 4 | LOG_PATH | 动态库日志目录 | 字符 | 100 | Y | 动态库日志生成所在目录:
1、目录不能超过三级
2、目录必须是英文字符,不能含有空格字符
3、目录有写权限 |
| 5 | EC_URL | 电子凭证中台URL | 字符 | 1024 | Y | 电子凭证中台URL
例如:https://fuwu-test.nhsa.gov.cn/localcfc/api/hsecfc/localQrCodeQuery |
| 6 | CARD_PASSTYPE | 社保卡验证密码方式 | 字符 | 2 | Y | 1:验证卡pin,2:验证数据库密码 |
| 7 | API_NAME | CSB的_api_name | 字符 | - | Y | [version1.1]:例如api-powersi-test-pri |
| 8 | API_VERSION | CSB的_api_version | 字符 | - | Y | [version1.1]:例如:1.0.0 |
| 9 | ACCESS_KEY | CSB的_api_access_key | 字符 | - | Y | [version1.1]:例如:043a6d5927174ab5a7681b193b9fe0e3 |
| 10 | SECRETKEY | CSB的secretKey | 字符 | - | Y | [version1.1]:例如:ZugfjXENyvGIQYdB+hFB+s9JL0A= |
| 11 | ORG_ID | 定点编号 | 字符 | - | Y | [version1.1] |
| 12 | EXT | JSON对象字符串 | 字符 | - | - | [version1.1]:预留 |
| 13 | AREA_CODE | 定点所属行政区划代码 | 字符 | - | Y | [version1.2]:例如:例如南京的医院320100 |
**示例:**
```json
{
"IP": "192.168.100.100",
"PORT": 8080,
"TIMEOUT": 120,
"LOG_PATH": "C:\\log\\",
"CARD_PASSTYPE": "1",
"EC_URL": "https://fuwu-test.nhsa.gov.cn/localcfc/api/hsecfc/localQrCodeQuery",
"API_NAME": "api-powersi-test-pri",
"API_VERSION": "1.0.0",
"ACCESS_KEY": "043a6d5927174ab5a7681b193b9fe0e3",
"SECRETKEY": "ZugfjXENyvGIQYdB+hFB+s9JL0A="
}
```
**输出参数 pErrMsg**
- 初始化错误时候返回错误信息,成功时候返回空
- 对应pErrMsg分配内存建议2048,不能小于2048
### 1.14.2 读社保卡基本信息
#### 1.14.2.1 说明
驱动卡机读卡,返回卡内的基本信息。
#### 1.14.2.2 函数名
```c
long WINAPI ReadCardBas(char* pCardInfo, char* pBusiCardInfo);
```
#### 1.14.2.3 返回值
- `0` 表示成功
- `非0` 表示失败
#### 1.14.2.4 参数说明
**输出参数 pCardInfo**
当函数执行失败时候返回错误信息,成功时,该输出参数为读出的社保卡基本信息各数据项,依次为:发卡地区行政区划代码(卡识别码前6位)、社会保障号码、卡号、卡识别码、姓名、卡复位信息(仅取历史字节)、规范版本、发卡日期、卡有效期、终端机编号、终端设备号。各数据项之间以"|"分割,且最后一个数据项以"|"结尾。
例如:`639900|111111198101011110|X00000019|639900D15600000500BF7C7A48FB4966|张三|00814E43238697159900BF7C7A|1.00|20101001|20201001|410100813475|终端设备号|`
与[人社信息函[2016]38号-关于印发社会保障卡读写终端接口规范的通知20160720(终稿).doc]读基本信息一致。
对应pCardInfo内存分配长度,建议2048,不能小于2048。
**输出参数 pBusiCardInfo**
函数执行成功时候,返回业务卡串信息,后续需要卡串的医保业务,请使用此卡串信息。
对应pBusiCardInfo内存分配长度,建议8192,不能小于8192。
### 1.14.3 检验PIN码
#### 1.14.3.1 说明
校验社保卡PIN码,在输入6次错误密码以后,社保卡自动锁定。
**验证规则:**
- **本参保地持卡人就医必须校验密码** [1101交易返回的参保地医保区划等于本地医保区划]
- **异地就医人员就医,按照本地医保局的要求来决定是否验证密码(基本不要求输入密码)** [1101交易返回的参保地医保区划不等于本地医保区划]
#### 1.14.3.2 函数名
```c
long WINAPI VerifyPIN(char *pOutBuff);
```
#### 1.14.3.3 返回值
- `0` 表示成功
- `非0` 表示失败
#### 1.14.3.4 参数说明
**输出参数 pOutBuff**
- 当函数执行成功时,此参数为空
- 当函数执行失败时,该输出参数为错误信息描述
- 对应pOutBuff分配的内存长度,建议1024,不能小于1024
### 1.14.4 修改PIN码
#### 1.14.4.1 说明
修改社保卡PIN码,需要原密码验证通过后,并保证新密码和确认新密码输入一致才能修改成功。
**使用规则:**
- **本参保地持卡人可以调用此函数实现修改密码** [1101交易返回的参保地医保区划等于本地医保区划]
- **异地就医人员是否可以调用此函数实现修改密码,按照本地医保局的要求来决定** [1101交易返回的参保地医保区划不等于本地医保区划]
#### 1.14.4.2 函数名
```c
long WINAPI ChangePIN(char *pOutBuff);
```
#### 1.14.4.3 返回值
- `0` 表示成功
- `非0` 表示失败
#### 1.14.4.4 参数说明
**输出参数 pOutBuff**
- 当函数执行成功时,此参数为空
- 当函数执行失败时,该输出参数为错误信息描述
- 对应pOutBuff分配的内存长度,建议1024,不能小于1024
### 1.14.5 读身份证信息
#### 1.14.5.1 说明
驱动卡机读取二代身份证,返回身份证信息。
#### 1.14.5.2 函数名
```c
long WINAPI ReadSFZ(char* pPath, char* pOutBuff, char* pOutBusiBuff);
```
#### 1.14.5.3 返回值
- `0` 表示成功
- `非0` 表示失败
#### 1.14.5.4 参数说明
**输入参数 pPath**
照片存放的目录,传入空则不生成照片。
**输出参数 pOutBuff**
当函数执行失败时错误信息,成功时,该输出参数为读出的身份证信息,身份证号码|姓名|性别|民族|出生日期(YYYYMMDD)|住址|签发机关|有效期起始日期(YYYYMMDD)|有效期截止日期(YYYYMMDD)|。
对应pOutBuff内存分配长度,建议1024,不能小于1024。
**输出参数 pOutBusiBuff**
函数执行成功时候,返回业务身份证信息,后续需要身份证的医保业务,请使用此身份证信息。
对应pOutBusiBuff内存分配长度,建议8192,不能小于8192。
### 1.14.6 电子凭证解码
#### 1.14.6.1 说明
电子凭证二维码解码
#### 1.14.6.2 函数名
```c
long WINAPI EcQuery(char* pInData, char* pOutData);
```
#### 1.14.6.3 返回值
- `0` 表示成功
- `非0` 表示失败
#### 1.14.6.4 参数说明
**输入参数 pInData [格式JSON]**
| 序号 | 数据元标识 | 数据元名称 | 类型 | 长度 | 是否必填 | 备注 |
|------|------------|------------|------|------|----------|------|
| 1 | data | 解码入参 | 字符 | 4096 | Y | 详细格式见下表 |
| 2 | transType | 交易类型编码 | 字符 | - | Y | 固定值【ec.query】 |
| 3 | orgId | 定点编号 | 字符 | 40 | Y | 定点编号 |
**[data]说明:**
| 序号 | 数据元标识 | 数据元名称 | 类型 | 长度 | 是否必填 | 备注 |
|------|------------|------------|------|------|----------|------|
| 1 | orgId | 定点编号 | 字符 | 40 | Y | 定点编号 |
| 2 | businessType | 用码业务类型 | 字符 | - | Y | 二级代码见附录,例如:01101 |
| 3 | operatorId | 收款员编号 | 字符 | 64 | Y | - |
| 4 | operatorName | 收款员姓名 | 字符 | 64 | Y | - |
| 5 | officeId | 医保科室编号 | 字符 | 20 | Y | - |
| 6 | officeName | 科室名称 | 字符 | 30 | Y | - |
**示例:**
```json
{
"data": {
"businessType": "01101",
"officeId": "32760",
"officeName": "消化内科",
"operatorId": "test001",
"operatorName": "超级管理员",
"orgId": "35020319001"
},
"orgId": "35020319001",
"transType": "ec.query"
}
```
**输出参数 pOutData [格式JSON]**
| 序号 | 数据元标识 | 数据元名称 | 类型 | 长度 | 备注 |
|------|------------|------------|------|------|------|
| 1 | data | 解码出参 | 字符 | 4096 | 详细格式见下表 |
| 2 | code | 中台相应码 | 数值 | - | 0成功,其它值失败 |
| 3 | message | 错误信息 | 字符 | 1024 | 错误信息 |
**[data]说明:**
| 序号 | 数据元标识 | 数据元名称 | 类型 | 长度 | 备注 |
|------|------------|------------|------|------|------|
| 1 | idNo | 身份证号 | 字符 | 64 | - |
| 2 | userName | 姓名 | 字符 | 64 | - |
| 3 | idType | 证件类型 | 字符 | - | 二级代码见附录 |
| 4 | ecToken | 令牌 | 字符 | 40 | - |
| 5 | insuOrg | 参保地区编码 | 字符 | 6 | - |
| 6 | ecIndexNo | 电子凭证索引号 | 字符 | 32 | - |
| 7 | gender | 性别 | 字符 | 2 | - |
| 8 | birthday | 出生日期 | 字符 | 10 | - |
| 9 | nationality | 国籍 | 字符 | 32 | - |
| 10 | email | 邮箱 | 字符 | 100 | - |
| 11 | extra | 扩展参数 | 字符 | 4096 | 预留 |
**示例:**
```json
{
"data": {
"extra": "",
"idNo": "533222199909090123",
"idType": "01",
"ecToken": "ADBHJRS5I01E0F3438C00000B959FA88",
"insuOrg": "430000",
"userName": "张三",
"ecIndexNo": "",
"gender": "",
"birthday": "",
"nationality": "",
"email": ""
},
"code": 0,
"message": "处理成功"
}
```
对应pOutData内存分配长度,建议8192。
### 1.14.7 电子社保卡解码
#### 1.14.7.1 说明
电子社保卡二维码解码。
#### 1.14.7.2 函数名
```c
long WINAPI EcCardQuery(char* pOutBuff);
```
#### 1.14.7.3 返回值
- `0` 表示成功
- `非0` 表示失败
#### 1.14.7.4 参数说明
**输出参数 pOutBuff**
当函数执行失败时错误信息,成功时,返回客户端ID信息。
对应pOutBuff内存分配长度,建议8192。
**出参参数 pOutData [格式JSON]**
| 序号 | 数据元标识 | 数据元名称 | 类型 | 长度 | 备注 |
|------|------------|------------|------|------|------|
| 1 | data | 解码出参 | 字符 | 4096 | 详细格式见下表 |
| 2 | code | 中台相应码 | 数值 | - | 0成功,其它值失败 |
| 3 | message | 错误信息 | 字符 | 1024 | 错误信息 |
**[data]说明:**
| 序号 | 数据元标识 | 数据元名称 | 类型 | 长度 | 备注 |
|------|------------|------------|------|------|------|
| 1 | si_no | 社会保障号码 | 字符 | 20 | - |
| 2 | si_card_no | 人员识别号 | 字符 | 12 | - |
| 3 | si_card_issue_area | 社保卡发卡地区行政区划代码 | 字符 | 6 | - |
| 4 | name | 姓名 | 字符 | 50 | - |
| 5 | gender | 性别 | 字符 | 1 | - |
| 6 | id_type | 证件类型 | 字符 | 3 | 二级代码见附录 |
| 7 | id_no | 证件号码 | 字符 | 20 | - |
| 8 | ecCardToken | 证件号码 | 字符 | 2048 | 电子社保卡Token,后续交易请与证据号码一起使用 |
### 1.14.8 四合一介质获得个人信息
#### 1.14.8.1 说明
四合一,操作员选择就医者的就医方式。社保卡、电子凭证、电子社保卡、身份证。
#### 1.14.8.2 函数名
```c
long WINAPI GetPersonInfo(char* pInData, char* pOutData);
```
#### 1.14.8.3 返回值
- `0` 表示成功
- `非0` 表示失败
#### 1.14.8.4 参数说明
**输入参数 pInData [格式JSON]**
| 序号 | 数据元标识 | 数据元名称 | 类型 | 长度 | 是否必填 | 备注 |
|------|------------|------------|------|------|----------|------|
| 1 | data | 解码入参 | 字符 | 4096 | Y | 详细格式见下表 |
| 2 | transType | 交易类型编码 | 字符 | - | Y | 固定值【ec.query】 |
| 3 | orgId | 定点编号 | 字符 | 40 | Y | 定点编号 |
**[data]说明:**
| 序号 | 数据元标识 | 数据元名称 | 类型 | 长度 | 是否必填 | 备注 |
|------|------------|------------|------|------|----------|------|
| 1 | orgId | 定点编号 | 字符 | 40 | Y | 定点编号 |
| 2 | businessType | 用码业务类型 | 字符 | - | Y | 二级代码见附录,例如:01101 |
| 3 | operatorId | 收款员编号 | 字符 | 64 | Y | - |
| 4 | operatorName | 收款员姓名 | 字符 | 64 | Y | - |
| 5 | officeId | 医保科室编号 | 字符 | 20 | Y | - |
| 6 | officeName | 科室名称 | 字符 | 30 | Y | - |
**示例:**
```json
{
"data": {
"businessType": "01101",
"officeId": "32760",
"officeName": "消化内科",
"operatorId": "test001",
"operatorName": "超级管理员",
"orgId": "35020319001"
},
"orgId": "35020319001",
"transType": "ec.query"
}
```
**输出参数 pOutData [格式JSON]**
| 序号 | 数据元标识 | 数据元名称 | 类型 | 长度 | 备注 |
|------|------------|------------|------|------|------|
| 1 | data | 解码出参 | 字符 | 4096 | 详细格式见下表 |
| 2 | code | 中台相应码 | 数值 | - | 0成功,其它值失败 |
| 3 | message | 错误信息 | 字符 | 1024 | 错误信息 |
#### 不同介质的输出格式:
**社保卡**
**[data]说明:**
| 序号 | 数据元标识 | 数据元名称 | 类型 | 长度 | 是否必填 | 备注 |
|------|------------|------------|------|------|----------|------|
| 1 | CardInfo | 卡串 | 字符 | - | Y | 社保卡38号文基本信息卡串 |
| 2 | BusiCardInfo | 业务卡串信息 | 字符 | - | Y | 业务卡串信息,后续需要卡串的医保业务,请使用此卡串信息 |
**示例:**
```json
{
"code": 0,
"message": "",
"data": {
"CardInfo": "639900|111111198101011110|X00000019|639900D15600000500BF7C7A48FB4966|测试姓名|00814E43238697159900BF7C7A|3.00|20101001|20201001|410100813475|ID000000001|",
"BusiCardInfo": "yzs/nK8iqWWuYOrXxqRyz6FVEnDMvWCrRo26+VXLwtPrk64fYFfsnXV36PaGWIGehTv6aCJ3rCrtgXwUy+Tvo8rvOLuMVUS+pfN6pADNRFqLMP1rgRs3VGF30+kdE6ShRfE7sVubOqJWfnfwO+ZASHMiKYvyALJqnONvbZeAYksb04hFn5AyMJSnKLmMqdKJXJS7woYsj7MstQn1Zsa+EabZCxnS+mYdD9j2UJ6yhvI="
}
}
```
**电子凭证**
**[data]说明:**
| 序号 | 数据元标识 | 数据元名称 | 类型 | 长度 | 备注 |
|------|------------|------------|------|------|------|
| 1 | idNo | 身份证号 | 字符 | 64 | - |
| 2 | userName | 姓名 | 字符 | 64 | - |
| 3 | idType | 证件类型 | 字符 | - | 二级代码见附录 |
| 4 | ecToken | 令牌 | 字符 | 40 | - |
| 5 | insuOrg | 参保地区编码 | 字符 | 6 | - |
| 6 | ecIndexNo | 电子凭证索引号 | 字符 | 32 | - |
| 7 | gender | 性别 | 字符 | 2 | - |
| 8 | birthday | 出生日期 | 字符 | 10 | - |
| 9 | nationality | 国籍 | 字符 | 32 | - |
| 10 | email | 邮箱 | 字符 | 100 | - |
| 11 | extra | 扩展参数 | 字符 | 4096 | 预留 |
**示例:**
```json
{
"data": {
"extra": "",
"idNo": "533222199909090123",
"idType": "01",
"ecToken": "ADBHJRS5I01E0F3438C00000B959FA88",
"insuOrg": "430000",
"userName": "张三",
"ecIndexNo": "",
"gender": "",
"birthday": "",
"nationality": "",
"email": ""
},
"code": 0,
"message": "处理成功"
}
```
**电子社保卡**
**[data]说明:**
| 序号 | 数据元标识 | 数据元名称 | 类型 | 长度 | 备注 |
|------|------------|------------|------|------|------|
| 1 | si_no | 社会保障号码 | 字符 | 20 | - |
| 2 | si_card_no | 人员识别号 | 字符 | 12 | - |
| 3 | si_card_issue_area | 社保卡发卡地区行政区划代码 | 字符 | 6 | - |
| 4 | name | 姓名 | 字符 | 50 | - |
| 5 | gender | 性别 | 字符 | 1 | - |
| 6 | id_type | 证件类型 | 字符 | 3 | 二级代码见附录 |
| 7 | id_no | 证件号码 | 字符 | 20 | - |
| 8 | ecCardToken | 证件号码 | 字符 | 2048 | 电子社保卡Token,后续交易请与证据号码一起使用 |
**身份证**
**[data]说明:**
| 序号 | 数据元标识 | 数据元名称 | 类型 | 长度 | 是否必填 | 备注 |
|------|------------|------------|------|------|----------|------|
| 1 | SFZInfo | 身份证信息 | 字符 | - | Y | 身份证号码\|姓名\|性别\|民族\|出生日期(YYYYMMDD)\|住址\|签发机关\|有效期起始日期(YYYYMMDD)\|有效期截止日期(YYYYMMDD)\| |
| 2 | BusiSFZInfo | 业务身份证信息 | 字符 | - | Y | 业务卡串信息,后续需要卡串的医保业务,请使用此卡串信息 |
**示例:**
```json
{
"code": 0,
"message": "",
"data": {
"SFZInfo": "210100199001016666|测试姓名|男|汉|19900101|沈阳市和平区|沈阳市和平区派出所|20000101|20990101|",
"BusiSFZInfo": "gYo+fXGkReYPUNY0gg/l0x7FnDO4L4GDQRbtA5AyDK6RXdXcTqrl7oNIBYrKzomnFpLrCD4IsjXSnR2S0fNzoKCKHXfUzyV1jNafXRglDiuf959rEKwGeTB8tlCJ5WE5Icrj0PF73h4BnjNNTGBAJ0ZVHll3cPmrOSrHhYlrXk0="
}
}
```
### 1.14.9 动态库日签到函数
#### 1.14.9.1 说明
动态库每日做一次签到,每天只需要调用一次。
#### 1.14.9.2 函数名
```c
int WINAPI DailySinIn(char* pInData, char* pOutData);
```
#### 1.14.9.3 返回值
- `0` 表示成功
- `非0` 表示失败
#### 1.14.9.4 参数说明
**输入参数 pInData [格式JSON]**
| 序号 | 数据元标识 | 数据元名称 | 类型 | 长度 | 是否必填 | 备注 |
|------|------------|------------|------|------|----------|------|
| 1 | IP | 服务端IP地址 | 字符 | 100 | Y | 医疗保障平台提供的服务端IP地址 |
| 2 | PORT | 服务端端口 | 数值 | - | Y | 医疗保障平台提供的服务端端口 |
| 3 | TIMEOUT | 超时 | 数值 | - | Y | 单位秒,访问服务端超时时间 |
| 4 | LOG_PATH | 动态库日志目录 | 字符 | 100 | Y | 动态库日志生成所在目录:
4、目录不能超过三级
5、目录必须是英文字符,不能含有空格字符
6、目录有写权限 |
| 5 | EC_URL | 电子凭证中台URL | 字符 | 1024 | Y | 电子凭证中台URL
例如:https://fuwu-test.nhsa.gov.cn/localcfc/api/hsecfc/localQrCodeQuery |
| 6 | CARD_PASSTYPE | 社保卡验证密码方式 | 字符 | 2 | Y | 1:验证卡pin,2:验证数据库密码 |
| 7 | API_NAME | CSB的_api_name | 字符 | - | Y | [version1.1]:例如api-powersi-test-pri |
| 8 | API_VERSION | CSB的_api_version | 字符 | - | Y | [version1.1]:例如:1.0.0 |
| 9 | ACCESS_KEY | CSB的_api_access_key | 字符 | - | Y | [version1.1]:例如:043a6d5927174ab5a7681b193b9fe0e3 |
| 10 | SECRETKEY | CSB的secretKey | 字符 | - | Y | [version1.1]:例如:ZugfjXENyvGIQYdB+hFB+s9JL0A= |
| 11 | ORG_ID | 定点编号 | 字符 | - | Y | [version1.1] |
| 12 | EXT | JSON对象字符串 | 字符 | - | - | [version1.1]:预留 |
| 13 | AREA_CODE | 定点所属行政区划代码 | 字符 | - | Y | [version1.2]:例如:例如南京的定点医院,320100 |
**输出参数 pOutBuff**
- 成功返回空,失败返回错误信息
- 对应pOutBuff内存分配长度,建议1024
### 1.14.10 业务函数 [无锡药店结算专用]
#### 1.14.10.1 说明
无锡药店结算交易通过调用此函数实现,动态库的输入输出参数是GBK编码格式。
#### 1.14.10.2 函数名
```c
int WINAPI Busi(char* pInData, char* pOutData);
```
#### 1.14.10.3 返回值
- `0` 表示成功
- `非0` 表示失败
#### 1.14.10.4 参数说明
**入参:pInData**
JSON格式字符串,见【2102】【2102A】的入参格式
**示例:**
```json
{
"insuplc_admdvs": "320299",
"enctype": "",
"dev_no": "",
"inf_time": "2021-07-23 14:17:46",
"hssToken": "",
"msgid": "H32040200089202107231417469348",
"infver": "V1.0",
"signtype": "",
"opter": "Z",
"input": {
"druginfo": {
"dise_codg": "bydise_setl_list_code",
"medfee_sumamt": 100,
"psn_no": "32020000000000001000083994",
"mdtrt_cert_type": "02",
"med_type": "4101",
"begntime": "2021-07-23",
"mdtrt_cert_no": "320202195706243039",
"dise_name": "",
"insutype": "310",
"expContent": "",
"acct_used_flag": "0"
},
"drugdetail": [
{
"bilg_dr_codg": "",
"sin_dos_dscr": "",
"med_list_codg": "XA02BCP025B003020102068",
"det_item_fee_sumamt": "100",
"cnt": "1",
"pric": "100",
"used_frqu_dscr": "",
"feedetl_sn": "SPH00000001",
"prd_days": "",
"tcmdrug_used_way": "",
"rxno": "",
"medins_list_codg": "SPH00006217",
"bilg_dr_name": "",
"rx_circ_flag": "0",
"medc_way_dscr": "",
"fee_ocur_time": "2021-07-23"
}
]
},
"fixmedins_code": "P32020200466",
"cainfo": "",
"opter_name": "Z",
"dev_safe_info": "",
"infno": "2102",
"mdtrtarea_admvs": "320299",
"opter_type": "01",
"fixmedins_name": "大药房",
"sign_no": "220046",
"recer_sys_code": "MBS_LOCAL",
"fixmedins_soft_fcty": "测试",
"info": ""
}
```
**出参:pOutData**
- 非0,错误信息
- 0,JSON格式字符串,见【2102】【2102A】的输出参数格式
### 1.14.11 附录
### 1.14.12 用码业务类型
| 第一级代码 | 第一级名称 | 第二级代码 | 第二级名称 | 第二级说明 |
|------------|------------|------------|------------|------------|
| 01 | 医院 | 101 | 挂号 | 替代社保卡(预约挂号,现场挂号,取号候诊) |
| | | 102 | 住院建档 | 替代身份证、社保卡 |
| | | 103 | 入院登记 | 替代社保卡 |
| | | 104 | 缴纳预缴金 | 替代住院押金卡 |
| | | 201 | 问诊 | 替代挂号条、社保卡 |
| | | 202 | 预约检查 | 替代检查凭条、社保卡 |
| | | 203 | 检查 | 替代检查凭条、社保卡 |
| | | 204 | 治疗 | 替代挂号条、社保卡 |
| | | 301 | 结算 | 替代社保卡(门诊结算,出院结算) |
| | | 302 | 取药 | 替代取药凭条、社保卡(门诊取药,出院带药) |
| | | 303 | 取报告 | 替代取报告凭条 |
| | | 304 | 打印票据和清单 | 替代挂号条、社保卡(打印收费清单,票据清单,结算单,异地就医结算单) |
| | | 305 | 病历材料复印 | 替代身份证、社保卡(门诊和住院各类材料复印) |
| 02 | 药店 | 121 | 药店购药 | 替代社保卡 |
| | | 122 | 下载外购处方 | 替代社保卡、身份证 |
### 1.14.13 证件类型
| 证件代码 | 证件说明 |
|----------|----------|
| 01 | 居民身份证(户口簿) |
| 02 | 中国人民解放军军官证 |
| 03 | 中国人民武装警察警官证 |
| 04 | 香港特区护照/港澳居民来往内地通行证 |
| 05 | 澳门特区护照/港澳居民来往内地通行证 |
| 06 | 台湾居民来往大陆通行证 |
| 07 | 外国人永久居留证 |
| 08 | 外国人护照 |
| 11 | 外国人就业证 |
| 12 | 外国专家证 |
| 13 | 外国人常驻记者证 |
| 14 | 台港澳人员就业证 |
| 15 | 回国(来华)定居专家证 |
| 16 | 出生医学证明 |
| 17 | 港澳台居民居住证 |
| 99 | 其他身份证件 |
### 1.14.14 读社保卡基本信息和处方信息
#### 1.14.14.1 说明
驱动卡机读卡,返回卡内的基本信息和处方信息。
#### 1.14.14.2 函数名
```c
long WINAPI ReadCardBasRx(char* pInput, char* pCardInfo, char* pRxInfo);
```
#### 1.14.14.3 返回值
- `0` 表示成功
- `非0` 表示失败
#### 1.14.14.4 参数说明
**输入参数 pInput**
定点机构登记人姓名|定点机构登记人证件类型|定点机构登记人证件号码|医疗机构编码|代办人姓名|代办人身份证类型|代办人身份证类型|收费端电脑IP|CaInfo|his软件开发商|
**输出参数 pCardInfo**
当函数执行失败时候返回错误信息,成功时,该输出参数为读出的社保卡基本信息各数据项,依次为:发卡地区行政区划代码(卡识别码前6位)、社会保障号码、卡号、卡识别码、姓名、卡复位信息(仅取历史字节)、规范版本、发卡日期、卡有效期、终端机编号、终端设备号。各数据项之间以"|"分割,且最后一个数据项以"|"结尾。
**示例:**
`639900|111111198101011110|X00000019|639900D15600000500BF7C7A48FB4966|张三|00814E43238697159900BF7C7A|1.00|20101001|20201001|410100813475|终端设备号|`
与[人社信息函[2016]38号-关于印发社会保障卡读写终端接口规范的通知20160720(终稿).doc]读基本信息一致。
对应pCardInfo内存分配长度,建议2048,不能小于2048。
**输出参数 pRxInfo**
处方登记流水号|处方过期时间|
对应pRxInfo内存分配长度,建议1024,不能小于256。
### 1.14.15 读身份证信息和处方信息
#### 1.14.15.1 说明
驱动卡机读取二代身份证,返回身份证信息和处方信息。
#### 1.14.15.2 函数名
```c
long WINAPI ReadSFZRx(char* pInput, char* pPath, char* pOutBuff, char* pRxInfo);
```
#### 1.14.15.3 返回值
- `0` 表示成功
- `非0` 表示失败
#### 1.14.15.4 参数说明
**输入参数 pInput**
定点机构登记人姓名|定点机构登记人证件类型|定点机构登记人证件号码|医疗机构编码|代办人姓名|代办人身份证类型|代办人身份证类型|收费端电脑IP|CaInfo|his软件开发商|
**输入参数 pPath**
照片存放的目录,传入空则不生成照片。
**输出参数 pOutBuff**
当函数执行失败时错误信息,成功时,该输出参数为读出的身份证信息,身份证号码|姓名|性别|民族|出生日期(YYYYMMDD)|住址|签发机关|有效期起始日期(YYYYMMDD)|有效期截止日期(YYYYMMDD)|。
对应pOutBuff内存分配长度,建议1024,不能小于1024。
**输出参数 pRxInfo**
处方登记流水号|处方过期时间|
对应pRxInfo内存分配长度,建议1024,不能小于256。