医药流通ERP 证照管控
Overview
本技能固化医药流通企业 ERP 中证照(资质证书)管控的核心规则。证照管控与「经营范围管控」是同一套合规体系的两层:
- 经营范围管控(已有 skill):定义"哪些品种/大类能在主体间流通"——是范围层。
- 证照管控(本 skill):定义"主体必须持有哪些资质证书来证明它有这个范围"——是证据层,且直接管"证书过期 = 资质失效 = 行为被阻断"。
本质一句话:经营范围是结论,证照是结论的法定证据;证照过期,证据灭失,对应结论自动失效,业务动作被拦截。
任何证照相关设计,第一步必须确认主体是 供应商 / 客户 / 仓库 哪一类,再看是 基础证照(任意品种)/ 品类证照(某一类品种)/ 具体品种证照(某一个品种) 哪一级,然后套用对应规则。完整的证照字典、三级规则矩阵全量、数据模型 DDL 与校验伪代码见 references/license_model.md。
1. 核心实体与概念
| 实体 | 角色 | 在 ERP 中的落点 |
|---|---|---|
| 供应商 | 上游(厂家 / 商业批发) | 采购订单、首营供应商、收货入库 |
| 客户 | 下游(商业 / 医疗 / 零售药店) | 销售订单、首营客户、出库发货 |
| 仓库 | 存储节点(自有 / 第三方物流) | 入库上架、存储、拣货 |
| 证照(License) | 资质证书实例 | 证照档案,含有效期、状态 |
| 经营范围(Scope) | 解耦中间层 | 经营范围字典项(厂家/商业/零售三类) |
| 品种集合(ProductSet) | 策展的一组 SKU | 如"冷链品种集合""麻精品种集合" |
| 具体品种(Product/SKU) | 最小商品 | 商品主数据 |
2. 证照分类字典(基础数据,必须建)
证照分三大类维护,禁止混用:
一、主体资质类——证明"这个主体能不能经营"
- 营业执照(全部主体必持)
- 药品生产许可证(厂家,附 GMP 合规)
- 药品经营许可证·批发(供应商/企业自身,附 GSP 合规)
- 药品经营许可证·零售(零售药店,附 GSP 合规)
- 医疗机构执业许可证(医院/诊所/卫生室类客户)
- 执业药师注册证(零售药店必配、批发质管需配)
二、特殊品种许可类——证明"能不能经营某类/某品种"
- 麻醉药品和精神药品:定点经营许可(批发)/ 印鉴卡(医疗机构使用)
- 医疗用毒性药品:经营范围含"医疗用毒性药品"
- 放射性药品:放射性药品使用/经营许可
- 药品类易制毒化学品:经营许可
- 蛋白同化制剂、肽类激素:备案(兴奋剂目录管理)
- 疫苗:指定经营许可
- 中药材/中药饮片:相应经营范围(毒性饮片需专项)
- 医疗器械:三类《医疗器械经营许可证》/ 二类备案 / 一类不须
- 食品/保健食品:《食品经营许可证》/ 备案
三、仓储/设施类——证明"能不能存"
- 药品第三方物流资质(委外仓储)
- 冷链储存运输条件(冷库 + 验证 + 温湿度监控)
- 特殊药品专库/专柜(麻精:双人双锁)
- 仓库地址药监核准(房产证/租赁协议 + 许可载明地址)
- 中药材仓库(防虫防鼠等条件)
- 危化品/易制毒仓库(公安/安监备案)
> 完整逐项说明、适用主体、有效期见 references/license_model.md 第 1 节。
3. 证照管理规则(三级 × 三实体)
规则矩阵按 实体(供应商/客户/仓库)× 级别(基础/品类/具体品种) 展开,共 9 格。每一格 = "做该类业务,主体必须具备的证照集合"。
3.1 采购管理(供应商)
- 1.1.1 供应商基础证照(任意采购):营业执照 +(药品生产许可证 或 药品经营许可证)+ GMP/GSP 合规 + 执业药师(视主体类型)。
- 1.1.2 供应商采购某一类品种:基础证照 + 该类特殊资质(如麻精类需定点经营许可;器械按 I/II/III 类需经营许可或备案;冷链类需冷链条件)。
- 1.1.3 供应商采购具体品种:基础证照 + 该类资质 + 该品种特殊要求(首营品种审核;批准文号/注册证一致;进口药品需进口药品注册证与通关单;某麻精具体品种需定点+印鉴)。
3.2 销售管理(客户)
- 1.2.1 客户基础证照(任意销售):营业执照 +(药品经营许可证 或 医疗机构执业许可证)+ GSP/合规。
- 1.2.2 客户销售某一类品种:基础证照 + 该类资质(零售药店售处方药需执业药师审方;器械按类;麻精需印鉴卡/定点)。
- 1.2.3 客户销售具体品种:基础证照 + 类资质 + 该品种特殊(含麻黄碱复方制剂需实名登记/限量;冷链品种需客户有冷链接收能力;特殊管理药品按品种管控)。
3.3 仓库管理(仓库)
- 1.3.1 仓库基础证照(任意存放):仓库地址在许可核准范围内 + 主体营业执照 +(第三方物流资质,若委外)。
- 1.3.2 仓库存放某一类品种:基础 + 该类存储条件(冷链类需冷库;麻精需专库专柜双人双锁;中药材需相应条件;危化品需备案库)。
- 1.3.3 仓库存放具体品种:基础 + 类条件 + 该品种特殊存储(如某生物制品需 -20℃;某毒性饮片需独立专柜;疫苗需专用冷库)。
> 9 格全量矩阵、每格逐证照列举见 references/license_model.md 第 2 节。
4. 证照维护(关联建模)
证照不是孤立存档,必须关联到"它能授权什么"。提供三种关联粒度,由粗到细:
4.1 证照维护关联经营范围(2.1,推荐默认)
证照关联到主体名下的若干经营范围项(厂家/商业/零售三类字典项)。品种仍按"主体经营范围 ∩ 商品经营范围"取交集判定。
- 优点:维护量最小——只维护"证照有效期 + 证照挂哪几个经营范围项",不随品种增减重挂。
- 续期:换新证后重新激活经营范围项即可,不用重挂品种。
4.2 证照维护关联品种集合(2.2,策展组)
证照关联一个品种集合(人工策展的一组 SKU,如"冷链品种集合""麻精品种集合""集采品种集合")。集合可复用、可跨证照共享。
- 适用:一类品种有共同资质要求但不便用经营范围口径(如"含麻黄碱复方制剂"横跨多个经营范围大类)。
- 续期:证照续期后,集合整体重新生效。
4.3 证照维护关联具体品种(2.3,逐 SKU)
证照直接绑定到具体商品(如某厂家某注册批文仅对应某几个 SKU)。
- 适用:必须按证照限定特定品种的场景(首营品种、按注册证/批文管控)。
- 代价:维护成本高,证照变更/续期需重新挂接全部品种;仅特殊情形启用,不作为默认。
- 兜底:方式 2.3 绑定的品种,其自身经营范围属性仍参与"主体 ∩ 商品"交集,避免双重维护断层。
> 设计原则:默认走 2.1(经营范围),2.2(品种集合)作为跨范围策展的补充,2.3(具体品种)仅特殊启用。同一主体可同时持多张证照,各自独立关联、独立过期控制,互不牵连。
5. 证照过期阻断逻辑(核心)
有效判定:证照"有效" ⇔ 当前日期 ∈ [生效日期, 到期日期] 且 状态=正常 且 未被吊销/注销/停用。
过期即失效:当前日期 > 到期日期 → 该证照视为无效。
阻断规则(用户核心诉求):
> 证照过期后,该供应商 / 客户 / 仓库 不能经营(采购 / 销售 / 存储)该证照对应的品种,也不能经营该证照对应经营范围的品种。
展开:
- 该证照关联的 经营范围项 / 品种集合 / 具体品种,在采购/销售/入库校验时,视为该主体"无此资质"。
- 若该品种/范围只有这张证照能授权,则直接拦截该业务行(采购订单行、销售订单行、入库单)。
- 若该品种/范围还有主体持有的另一张有效证照能授权,则不阻断(过期的是冗余证据但结论仍成立)。
预警与恢复:
- 到期前 N 天(可配,如 30/60/90 天)触发预警,不阻断。
- 到期自动停用其关联的范围/集合/品种。
- 续期/换新证后恢复关联,无需重挂品种(2.1 尤其受益)。
6. 与「经营范围管控」Skill 的关系
- 两个 skill 是互补而非替代:经营范围管控管"结论(范围层)",本 skill 管"结论的证据(证照层)+ 过期时效"。
- 校验时两层串联:先判经营范围交集,再看支撑该范围的证照是否有效。证照过期 → 范围失效 → 交集失败 → 拦截。
- 本 skill 的 4.1(证照→经营范围)直接复用经营范围管控的交集逻辑,不另造轮子。
7. 落地校验清单(实施/审计时用)
设计或审查证照模块,逐项确认:
- 证照字典是否已分 主体资质 / 特殊品种许可 / 仓储设施 三大类?
- 9 格规则矩阵(供应商/客户/仓库 × 基础/品类/具体品种)是否都已定义且逐证照列举?
- 三类主体(供应商/客户/仓库)的基础证照是否区分了"生产 vs 经营 vs 医疗"差异?
- 特殊品种(麻精/毒性/放射/易制毒/蛋白肽/疫苗/冷链/器械/中药饮片)是否都有对应许可类?
- 维护关联是否支持 经营范围 / 品种集合 / 具体品种 三种粒度,且默认走经营范围?
- 同一主体多张证照是否独立关联、独立过期控制?
- 证照"有效"判定是否包含 有效期区间 + 状态 + 未被吊销?
- 过期是否自动停用关联范围/集合/品种并触发预警与业务拦截?
- 续期后是否免重挂品种即可恢复?
- 是否叠加了企业当地药监对特殊药品/冷链/蛋白同化制剂等的额外限制?
Resources
references/
license_model.md— 完整内容:① 证照分类字典全量表(适用主体/法定要求/有效期);② 9 格三级规则矩阵逐证照列举;③ 数据模型 DDL(证照档案、三种关联表、主体证照挂载表);④ 采购/销售/入库校验流程伪代码与过期阻断判定。
scripts/
license_expiry_manager.py— 证照到期扫描 + 预警 + 停用批处理脚本(stdlib,可直接python license_expiry_manager.py跑内存演示库)。实现第 5 节过期阻断:scan()把过期证照置 EXPIRED,is_available()校验某主体能否经营某品种(所需证照类型是否都有有效覆盖),过期即视为无资质被拦截。接真实 ERP 只需继承LicenseRepository重写get_all_licenses()/update_status()/get_linked(),或改--db指向真实 sqlite;REQUIRED_LICENSE_TYPES与证照类型枚举按你们实际 9 格矩阵填写。
assets/
本技能无需素材文件。