资源描述
药监网多系统融合技术标准零售企业版
102
2020年5月29日
文档仅供参考
中国药品电子监管网多系统融合技术标准
(零售药店版)
V2.0
中信二十一世纪(中国)科技有限公司
二〇二四年九月
一、总则
(一)背景
为加强药品电子监管工作与药品零售企业日常工作的业务融合程度,促进电子监管码在企业进销存管理的应用,提高企业管理效率,并避免出现多次扫描、多次报送的情况,充分发挥电子监管码全国统一管理及技术标准的优势,中国药品电子监管网(以下简称电子监管网)发布本技术标准,开放电子监管的数据采集、报送、查询等能力,用于药品零售企业或者相关系统开发商,将药品电子监管工作融入药品零售企业相关日常业务管理信息系统,实现传统扫码或者填报业务与电子监管码业务的融合。
(二)文档内容
本文主要规定了电子监管网”多系统融合”技术接口标准,主要用于说明电子监管网多系统融合技术标准的接口格式、使用方法,指导各药品零售企业或者相关系统开发商进行对应软件的研制、升级、开发和实施。
(三)适用范围
本技术标准仅适用于药品零售环节使用。生产、批发、使用环节多系统融合技术标准请关注中国药品电子监管网官方网站()资料下载栏目。
二、接口概述
(一)名词解释
企业:在电子监管网入网的零售企业,持有中国药品电子监管网分配的数字证书。
开发商:为企业提供信息系统的软件开发商或者系统集成商企业。
企业用户数字证书:(本规范中简称为UKEY)中国药品电子监管网入网企业所必须配备的,用于企业用户身份识别以及保障系统安全的硬件设备,分为PC版和移动版两种。PC版采用USB接口方式,移动版采用PSAM卡方式,移动版数字证书技术标准及申请方法参见电子监管网或国家总局发布的相关指导意见和技术标准。
开发商技术授权数字证书:(本规范中简称为SKEY)为保证电子监管网的系统安全性,多系统融合技术接口在应用时必须包含电子监管网颁发的技术授权数字证书,确保接口安全可控,该证书是采用pfx格式的文件数字证书。
往来单位:与本企业有直接业务往来且从事药品相关服务的企、事业单位,如:药品的生产、批发、物流企业。
(二)参数格式说明
入参说明:
inputjson格式
举例1:查询本企业往来单位信息(带分页自定义查询接口)
{{"partnerName":"福建多赢医药有限公司","partnerCustomNo":3,"partnerCapitalName":"","partnerSeqNo":"","copCode":"","beginDate":" -01-01 00:00:00 ","endDate":" -01-31 23:59:59","curPage":1,"pageSize":50,"orderBy":"","orderType":"1"}
举例2:经过监管码批量查询药品信息
{"piatsCodeList": [{"code":"8159993 "},{"code":"8159993 "},{"code":""}]}
出参说明:
详见各接口出参
(三)支持环境
多系统融合的接口以SDK的形式提供,SDK支持Windows平台和Android平台。
在Windows平台下支持两种开发环境,.Net Framework平台提供基于C#语言接口,以动态库形式提供的,该接口由dll组成。.Net Framework开发者在编译时将库dll拷贝到自己的项目bin目录在引用dll文件即可。Java平台提供Java语言开发的jar文件。Java开发需将jar添加到项目类库中使用。
在Android平台下,Java语言接口是以静态库和动态库的形式提供的,该接口由jar文件和so文件组成。开发者首先将so文件拷贝到工程文件的jni目录下,将jar文件拷贝到工程文件的lib目录下,然后在Android.mk文件中加入相应内容接口。
(四)获取及使用约束
多系统融合接口技术标准与测试用SDK可经过电子监管网网站免费下载,用于前期测试开发使用;为确保电子监管网数据的安全性以及质量,电子监管网对多系统融合接口使用情况需进行管控,确保接口不会被滥用。相关开发商如需正式开通该接口,需联系电子监管网进行认证,经过认证后方可申请正式版SDK并获得开发商技术授权数字证书。
认证结果将经过电子监管网进行公示,企业可自由选择经过认证的开发商进行多系统融合项目实施。
多系统融合接口在最终客户使用时,软件中必须包括开发商技术授权数字证书。该证书每最终用户一个,而且与电子监管网用户身份(即企业用户数字证书中的身份)唯一绑定,不得重复绑定。该证书在开发商经过认证后,可经过电子监管网进行申请获得,并将证书放置于SDK同一文件路径下。
多系统融合接口调用时,其部署软件的硬件设备上,必须带有电子监管网颁发的企业用户数字证书,否则无法进行调用。
三、接口函数
接口函数一览表如下:
函数名
函数功能
安全认证接口
actSKEY
激活开发商技术授权数字证书
actNewToken
重新获取令牌
上行接口
uploadInOutBillInfo
上传入出库单
deleteMyEntPartner
删除本企业往来单位
modMyEntPartner
管理本企业往来单位
下行接口
queryCodeRelationFromOneCode
经过单个监管码查询关联关系
queryDrugInfoFromCodeList
经过监管码批量查询药品信息
queryMyEntDetailInfo
查询本企业基本信息
queryCodeRelationFromBillCode
经过单个入出库单号查询码关联关系及药品信息
queryStoreInfoFromBillDate
经过日期批量查询本企业入库单信息
queryDrugInfoFromBillCode
经过单个入出库单号查询药品信息
queryBillProcess
查询本企业入出库单处理状态
queryUperEntChkOutInfoWithCode
查询上游企业出库单据信息(有监管码)
queryUperEntChkOutInfoList
查询上游企业出库单据信息(无监管码)
queryMyEntPartnerList
查询本企业往来单位信息(带分页自定义查询接口)
autoQueryMyEntPartnerList
查询本企业往来单位信息(增量查询接口)
queryAllEntPartnerList
查询全部往来单位信息
queryMyEntPartnerDetail
查询本企业往来单位详细信息
queryDrugProductList
查询药品目录信息
(一)安全接口
1.激活开发商技术授权数字证书
函数名称:actSKEY (String inputjson)
返回值:json
函数说明:激活开发商的技术授权数字证书,获取电子监管网返回的令牌号,令牌号及数字签名是判定企业合法访问电子监管网的重要依据,需注意开发商的技术授权数字证书只能被激活一次,服务端返回”1202:SKey未启用”时,客户端需要调用此接口激活集成商SKey软证书。
适用场景:零售企业经过开发商平台向电子监管网请求数据之前,需要先进行激活开发商技术授权数字证书的操作,并获取电子监管网下发的令牌号。
请求参数:
参数
字段名称
字段类型
字段长度
备注
UKeyPassword
企业数字证密码
String
8
零售入网企业UKey证书密码
SKeyPassword
开发商数字证书密码
String
8
服务开发商SKey证书密码
输出参数:
参数
字段名称
字段类型
字段长度
备注
retCode
返回代码
String
8
返回代码,详见附件:返回值列表
retMessage
返回信息
String
100
返回信息简介
retDetail
返回详细信息
String
600
返回信息详情
resObj
token
令牌号
string
100
电子监管网返回的一串供企业鉴权所用的序列号
入参示例:
{"UKeyPassword":"88888888","SKeyPassword":"88888888"}
出参示例:
{
"retCode": "1000",
"retMessage": "",
"retDetail": "",
"resObj": {
" token ":” 5cf16b7ba85a404a9e99353fd7fb67de”
}
}
2.重新获取令牌
函数名称:actNewToken (String inputjson)
返回值:json
函数说明:为了数据安全起见,零售企业申请的令牌会在一定时间内会失效,需要企业定期重新获取令牌。
适用场景:电子监管网下发的令牌号是有生命周期的,如果在访问任何业务接口的时候,返回 ”1301:令牌失效”时,客户端就需要调用此接口,重新获取令牌号。
请求参数:
参数
字段名称
字段类型
字段长度
备注
UKeyPassword
企业数字证书密码
String
8
零售入网企业UKey证书密码
SKeyPassword
开发商数字证书密码
String
8
服务开发商SKey证书密码
输出参数:
参数
字段名称
字段类型
字段长度
备注
retCode
返回代码
string
8
返回代码,详见附件:返回值列表
retMessage
返回信息
string
100
返回信息简介
retDetail
返回详细信息
string
600
返回信息详情
resObj
token
令牌号
string
100
电子监管网返回的一串供企业鉴权所用的序列号
入参示例:
{"UKeyPassword":"88888888","SKeyPassword":"88888888"}
出参示例:
{
"retCode": "1000",
"retMessage": "无",
"retDetail": "无",
"resObj": {
" token ":” 5cf16b7ba85a404a9e99353fd7fb67de”
}
}
(二)上行接口
1.上传入出库单
函数名称:
uploadInOutBillInfo(String inputjson)
返回值:json
函数说明:用户上传入出库单的源文件(需包含文件完整路径,确保sdk包可实现对该文件的加密和上传操作),以及单据相关信息,经过客户端上传单据文件到电子监管网指定文件服务器,并在服务端进行单据处理。上传文件格式根据单据类型不同而不同,详见附录43。
适用场景:零售企业经过文件形式,向电子监管网上传入出库单据。
请求参数:
参数
字段名称
字段类型
字段长度
是否必填项
备注
operFlag
操作标志
string
2
是
固定传2
fileContent
上传文件的字节流
string
是
单据的文件用base64转码之后的字节流,用户默认传空
uploadInBillInfo
billCode
单据号
string
20
是
单据已经被保存,需要修改时用的保存号码。初始创立时为空
dataType
单据类型
string
32
否
详见附录字典表单据类型
drugType
药品类型
tinyint
否
详见附录字典表药品类型
partnerIdRecv
收货单位id
string
60
否
收货单位的entSeqNo,如果是零售出库此处务必填空值
partnerIdSend
发货单位id
string
60
否
发货单位的entSeqNo
uploadFileName
文件名
string
60
是
需要传本地入出库单文件的全路径,由SDK包负责加密、压缩上传,文件格式详见4.3
billInOutDate
单据创立时间
String
20
是
单据被保存的时间,格式为:yyyy-MM-dd HH:mm:ss
operIcName
单据提交者姓名
string
60
否
提交人全名
entSeqNoRecv
收货企业名称
string
250
否
收货企业名称,如果是零售出库此处务必填空值
entSeqNoSend
发货企业名称
string
250
否
发货企业名称
输出参数:
参数
字段名称
字段类型
字段长度
备注
retCode
返回代码
string
8
返回代码,详见附件:返回值列表
retMessage
返回信息
string
100
返回信息简介
retDetail
返回详细信息
string
600
返回信息详情
入参示例:
{
"operFlag": "1",
"fileContent": "",
"uploadInBillInfo": [
{
"billCode": "5555",
"billId": "5555",
"dataType": "201",
"drugType": "",
"partnerIdRecv": "bc6aa2329f3a412cbd022b1eb13e9fa2",
"partnerIdSend": "00909518",
"uploadFileName": "D: \\AutoUp\\UploadPath\\入出库文件.xml",
"billInOutDate": " -01-06 09:08:11",
"operIcName": "",
"corpSeqNo": "",
"corpName": "",
"entSeqNoRecv": "3 3",
"entSeqNoSend": "3 3",
"partnerIdDest": "",
"entSeqNoDest": ""
}
]
}
出参示例:
{
"retCode": "1000",
"retMessage": "无",
"retDetail": "无",
}
2.删除本企业往来单位
函数名称:
deleteMyEntPartner(String inputjson)
返回值:json
函数说明:删除本企业的往来单位
适用场景:零售企业如果不需要在与某家企业作为往来单位,能够调用此接口,解除本企业与该往来单位企业之间的关系,这样在查询本企业往来单位列表的时候,就不会显示该条企业信息。
请求参数:
参数
字段名称
字段类型
字段长度
是否必填项
备注
partnerLists
partnerSeqNo
往来单位id
string
60
是
电子监管网上的往来单位id
输出参数:
参数
字段名称
字段类型
字段长度
备注
retCode
返回代码
string
8
返回代码,详见附件:返回值列表
retMessage
返回信息
string
100
返回信息简介
retObj
entPartnerResponse
entName
往来单位名称
string
250
企业在电子监管网上的名称
partnerSeqNo
往来单位id
string
32
往来单位序号
入参示例:
{"partnerLists":[{"partnerSeqNo":"fe004a0313bb4325bbc5b26b05f93ce8"}]}
出参示例:
{
"retCode": "1000",
"retMessage": "无",
"retDetail": "无",
}
3.管理本企业往来单位
函数名称:
modMyEntPartner(String inputjson)
返回值:json
函数说明:新增或维护本企业往来单位。
适用场景:零售企业需要新增一个往来单位,或者修改本企业现有往来单位的自定义编码。
请求参数:
参数
字段名称
字段类型
字段长度
是否必填项
备注
entPartner
partnerCustomNo
往来单位自定义编号
string
20
否
初始由系统自动设置,用户能够改
partnerName
往来单位名称
string
250
否
企业中文名称
entSeqNo
电子监管网企业id
string
20
否
电子监管网上的企业id,一般从<往来单位接口>中获取
partnerSeqNo
往来单位id
string
20
是
企业本地服务系统中的往来单位id
address
往来单位地址
string
250
否
企业地址详细信息
postalCode
邮编
string
20
否
企业所在地区邮编
notes
备注
string
600
否
备注信息
partnerCapitalName
企业名称拼接
string
250
否
企业名称的全拼字母,且大写
contactName
联系人
string
20
否
企业联系人名称
faxNo
传真
string
20
否
企业传真电话号码
mobileNo
移动电话
string
20
否
企业联系人手机电话
telNo
联系电话
string
20
否
企业常见座机电话
saveFlag
保存标志
string
2
是
1修改往来单位, 2修改自定义编号, 3添加本企业往来单位
输出参数:
参数
字段名称
字段类型
字段长度
备注
retCode
返回代码
String
8
返回代码,详见附件:返回值列表
retMessage
返回信息
String
100
返回信息简介
retDetail
返回详细信息
String
600
返回信息详情
retObj
entPartnerResponse
entName
企业名称
string
250
企业在电子监管网上的名称
partnerSeqNo
往来单位id
string
32
电子监管网往来单位id
入参示例:
{
"entPartner": [
{
"partnerCustomNo": "fe004a0313bb4325bbc5b26b05f93ce8",
"partnerName": "北京紫光制药有限公司",
"entSeqNo": "",
"partnerSeqNo": "fe004a0313bb4325bbc5b26b05f93ce8",
"address": "",
"postalCode": "",
"notes": "",
"partnerCapitalName": "beijingziguangzhiyaoyouxiangongsi",
"contactName": "",
"faxNo": "",
"mobileNo": "",
"telNo": "",
"saveFlag": "3"
}
]
}
出参示例:
{
"retCode": "1000",
"retMessage": "无",
"retDetail": "无",
"resObj": {
" entPartnerResponse":{
”entName” : "金象大药房(望京店)",
”errormessage”: "无",
”partnerSeqNo” : "无",
}
}
}
(三)下行接口
1.经过单个入库单号查询码关联关系及药品信息
函数名称:
queryCodeRelationFromBillCode (String inputjson)
返回值:json
函数说明:经过本企业已上传(企业上传的入库单需等待电子监管网处理结束后,才能查询)的单据号,查询出本入库单对应的监管码关联关系和药品信息。
适用场景:零售企业在入库时一般都是整箱入库,可是零售出库时,往往都是以中、小包装销售出库,经过入库单查询关联关系,能够方便企业在销售出库前,在本地进行核注核销校验。
请求参数:
参数
字段名称
字段类型
字段长度
是否必填项
备注
billCode
单据编号
string
20
是
本企业的入库单据号
输出参数:
参数
字段名称
字段类型
字段长度
备注
retCode
返回代码
string
8
返回代码,详见附件:返回值列表
retMessage
返回信息
string
100
返回信息简介
retDetail
返回详细信息
string
600
返回信息详情
resObj
entChkInInfo
billCode
单据编号
string
100
本企业已上传的入库单号
billType
单据类型
string
32
详见附录字典表单据类型
billFileName
单据文件名
string
100
企业上传单据时填的文件名
billTypeName
单据类型名称
string
32
详见附录字典表单据类型
entSendName
发货企业名称
string
250
上游发货企业名称
entSendId
发货企业入网编号
string
60
发货企业入网编号
entRecvName
收货企业名称
string
250
本企业名称
entRecvId
收货企业入网编号
string
60
收货企业入网编号
storeInDate
入库日期
string
20
格式为:yyyy-MM-dd HH:mm:ss
processString
处理日期
string
20
格式为:yyyy-MM-dd HH:mm:ss
updateDate
单据最后更新时间
string
20
格式为:yyyy-MM-dd HH:mm:ss
drugInfos
drugInfoList
prodSeqNo
药品标识
string
32
电子监管网药品id
productCode
药品通用代码
string
60
药品通用代码
prepnUnit
制剂单位编码
String
32
例如:毫克、支、片
subTypeNo
药品子标识
string
32
电子监管网药品子类id
prodName
药品商品名
string
250
企业制定的药品商品名
drugType
药品类型
tinyint
详见附录字典表药品类型
drugTypeName
药品类型名称
string
60
详见附录字典表药品类型
productEntName
生产企业名称
string
250
药品生产企业名称
produceBatchNo
生产批号
string
32
药品生产企业定义的批次号
produceDate
生产日期
string
20
格式为:yyyy-MM-dd HH:mm:ss
validEndDate
药品有效期至
string
20
格式为:yyyy-MM-dd HH:mm:ss
pkgRatio
包装比例
string
20
例如1:10:10
approveNo
批准文号
string
20
药品批准文号
prepnSpec
制剂规格
string
100
例如:100mg 10
packageSpec
包装规格
string
100
例如:6毫升/瓶
leastPkgAmount
按最小包装单位统计数量
int
以最小包装统计的单位数量
leastPrepnAmount
按最小制剂单位统计数量
int
以最小制剂统计的单位数量
codeInfos
codeInfoList
code
监管码
string
20
20位监管码
parentCode
父码
tinyint
20位监管码
codeLevel
监管码级别
tinyint
监管码隶属于第几级包装级别,例如2表示第二级
入参示例:
{ "billCode": " 121"}
出参示例:
{
"retCode": "1000",
"retMessage": "无",
"retDetail": "无",
"resObj": {
"entChkInInfo": {
"billCode": "0 3334",
"billType": " PurchaseWareHouseIn ",
"billFileName": " 11111324 .xml",
"billTypeName": "生产入库单",
"entSendName": "国药集团北京分工公司",
"entSendId": "",
"entRecvName ": "金象大药房(望京店)",
"entRecvId": "",
"storeInDate": " -11-11 15:11:23",
"processDate": " -14-11 16:15:23",
”drugInfos”:{
"drugInfoList": [{
"subTypeNo": "",
"prodName": "板蓝根冲剂",
"drugType" "10",
"drugTypeName": "中药制剂",
"productEntName": "北京同仁堂制药厂",
"produceBatchNo": "12313232",
"produceDate": " -12-21 12:13:34",
"validEndDate": " -01-21 17:11:23",
"leastPkgAmount": "20",
"leastPrepnAmount": "22",
”codeInfos”: {
"codeInfoList ": [{
"code": "0 3334",
"parentCode": " 1334",
"codeLevel": "2"
}]
}
},
"updateDate": " -06-23 12:11:23",
}
}]
}
}
2.经过单个入出库单号查询药品信息
函数名称:
queryDrugInfoFromBillCode(String inputjson)
返回值:json
函数说明:经过本企业已上传(企业上传的入出库单需等待电子监管网处理结束后,才能查询)的单据号,查询单据对应药品信息。
适用场景:企业在销售出库时,核对单据中药品与实际入出库药品是否相符。
请求参数:
参数
字段名称
字段类型
字段长度
是否必填项
备注
billCode
单据编号
String
20
是
本企业的入出库单据号
输出参数:
参数
字段名称
字段类型
字段长度
备注
retCode
返回代码
string
8
返回代码,详见附件:返回值列表
retMessage
返回信息
string
100
返回信息简介
retDetail
返回详细信息
string
600
返回信息详情
resObj
entChkInInfo
billCode
单据编号
string
100
企业上传电子监管网时填的单据号
billType
单据类型
string
32
详见附录字典表单据类型
billFileName
单据文件名
string
100
企业上传单据时的文件名
billTypeName
单据类型名称
string
32
详见附录字典表单据类型
entSendName
发货企业名称
string
250
上游发货企业中文名称
entSendId
发货企业入网编号
string
60
电子监管网企业入网编号
entRecvName
收货企业名称
string
250
收货企业名称
entRecvId
收货企业入网编号
string
60
电子监管网企业入网编号
storeInDate
入库日期
string
20
格式为:yyyy-MM-dd HH:mm:ss
processString
处理日期
string
20
格式为:yyyy-MM-dd HH:mm:ss
updateDate
单据最后更新时间
string
20
格式为:yyyy-MM-dd HH:mm:ss
drugInfos
drugInfoList
prodSeqNo
药品标识
string
32
电子监管网药品id
productCode
药品通用代码
string
60
药品通用代码
prepnUnit
制剂单位编码
String
32
例如毫克、支、片
subTypeNo
药品子标识
string
32
电子监管网药品子类id
prodName
药品商品名称
string
250
电子监管网上的药品商品名称
drugType
药品类型
tinyint
详见附录字典表药品类型
drugTypeName
药品类型名称
string
60
详见附录字典表药品类型
productEntName
生产企业名称
string
250
药品生产企业中文名
produceBatchNo
生产批号
string
32
药品生产企业定义的批次号
produceDate
生产日期
string
20
格式为:yyyy-MM-dd HH:mm:ss
validEndDate
药品有效期至
string
20
格式为:yyyy-MM-dd HH:mm:ss
pkgRatio
包装比例
string
20
例如1:10:10
approveNo
批准文号
string
20
药品批准文号
prepnSpec
制剂规格
string
100
例如100mg 10
packageSpec
包装规格
string
100
例如6毫升/瓶
leastPkgAmount
按最小包装单位统计数量
int
以最小包装统计的单位数量
leastPrepnAmount
按最小制剂单位统计数量
int
以最小制剂统计的单位数量
入参示例:
{ "billCode": " 121"}
出参示例:
{"retCode": "1000",
"retMessage": "无",
"retDetail": "无",
"resObj": {
"entChkInInfo": {
"billCode": "0 3334",
"billType": " PurchaseWareHouseIn ",
"billFileName": " 1223323 .xml",
"billTypeName": "生产入库单",
"entSendName": "国药集团北京分公司",
"entSendId": "820a9168229e4dc5a41bdfb7fde314f3",
"entRecvName ": "金象大药房(望京店)",
"entRecvId": "820a9168229e4dc5a41bdfb7fde314f3",
"storeInDate": " -03-21 14:23:34",
"processDate": " -06-15 15:11:23",
”drugInfos”:{
"drugInfoList": [{
"subTypeNo": "",
"prodName": "板蓝根冲剂",
"drugType" "10",
"drugTypeName": "中药制剂",
"productEntName": "北京同仁堂制药厂",
"produceBatchNo": " 12313232",
"produceDate": " -08-11 14:23:34"",
"validEndDate": " -09-21 15:11:23",
"leastPkgAmount": "20",
"leastPrepnAmount": "22",
},
"updateDate": " -12-08 15:11:23"
}
}]
}
}
3.经过时间段批量查询本企业入出库单信息
函数名称:
queryStoreInfoFromBillDate(string inputJson)
返回值:json
函数说明:经过本企业已上传到药监网入出库单据的上传时间,
展开阅读全文