u
udi-cn-validator
作者:注册老炮@MedXpert I SynomosAIv1
中国医疗器械 UDI 校验器 — 报 DI+PI 就判 GS1 mod-10 校验位、发码机构(GS1/MA/阿里健康)识别、生产/失效日期与批号序列合法性(2019年66号公告口径, JSON IR rc=0/1/2)
下载量
277
点赞
68
价格
免费
技能文档
---
name: udi-cn-validator
description: 中国医疗器械 UDI 校验器 — 报 DI+PI 就判 GS1 mod-10 校验位、发码机构(GS1/MA/阿里健康)识别、生产/失效日期与批号序列合法性(2019年66号公告口径, JSON IR rc=0/1/2)
summary: "中国医疗器械 UDI 校验器 — DI 校验位/发码机构识别 + PI 日期批号序列解析(66号公告口径, JSON IR rc=0/1/2)"
slug: udi-cn-validator
version: 1.0.0
display_name: 中国医疗器械 UDI 校验器
displayName: "中国医疗器械 UDI 校验器"
display_name_en: China UDI Validator
agent_created: true
author: zhaoxinghua09-cell
copyright: SynomosAI
license: MIT
category: professional
platforms: [claude, codex, cursor, windsurf, workbuddy]
homepage: https://github.com/zhaoxinghua09-cell/agent-skills/tree/main/skills/udi-cn-validator
tags: [LGD-Powered, AI技能, professional, UDI, NMPA, udi-cn-validator, SynomosAI]
---
# 中国医疗器械 UDI 校验器 / China UDI Validator
**udi-cn-validator** v1.0.0 · LGD-Powered 家族 · 零依赖 · 确定性输出(JSON IR)· 条款锚点 · rc=0/1/2
## 痛点
中国 UDI 上报药监局数据库后,改 DI 等于产品身份重来——但 GTIN-14 校验位算错、日期写成 2026-9-15 这类格式错、三家发码机构编码结构混用,仍是注册资料退回的高频原因。Excel 手工核对 mod-10 校验位,一次批号就可能错一位。
## 能力边界
- ✅ **编码规则层确定性校验**:GS1 mod-10 校验位逐位复算(给证据)、DI 长度/字符检查、MA 码结构检查、发码机构自动识别(GS1 69 前缀/MA/其他以 udi.nmpa.gov.cn 复核)
- ✅ **PI 全解析**:(11) 生产日期/(17) 失效日期(含 GS1 日段 00=月末换算与过期告警)/(10) 批号/(21) 序列号,未收录 AI 明示报错
- ❌ 不替代监管审批/备案——以主管部门现行口径为准
- ⚠️ 面向 AI:判定结果可复核(每条带条款锚点与 JSON IR);法规更新后本工具随版更新
## 用法
```bash
# 校验 DI + PI
python scripts/udi_cn_validator.py --di 06901234567892 --pi "(11)260915(17)281231(10)LOT42(21)S001"
# 校验位错误探测
python scripts/udi_cn_validator.py --di 06901234567890
# MA 码结构检查
python scripts/udi_cn_validator.py --di MA.1234567890
# 内置演示
python scripts/udi_cn_validator.py --demo
```
## 输出示例(真机)
```json
{
"tool": "udi-cn-validator", "version": "1.0.0", "rc": 0,
"di": [{"value": "06901234567892", "issuer": "GS1(中国物品编码中心,69 前缀)",
"checksum": "pass", "evidence": "GS1 mod-10: 核心位 0690123456789 → 校验位 3"}],
"pi": [{"ai": "(11)", "kind": "生产日期", "value": "260915", "valid": true, "iso": "2026-09-15"},
{"ai": "(17)", "kind": "失效日期", "value": "281231", "valid": true, "iso": "2028-12-31"},
{"ai": "(10)", "kind": "批号", "value": "LOT42", "valid": true}],
"issuer_ref": "发码机构现行清单以 udi.nmpa.gov.cn 为准(GS1 / MA / 阿里健康)"
}
```
## 退出码与错误码
| rc | 错误码 | 触发 | 处置 |
|---|---|---|---|
| 1 | `UDI_CN_E_CHECKSUM` | GS1 校验位不符 | 按 mod-10 重算,核对厂商识别段 |
| 1 | `UDI_CN_E_DI_LENGTH` / `UDI_CN_E_DI_FORMAT` | DI 长度/字符非法 | 补全 GTIN-14,剔除 PI 混入 |
| 1 | `UDI_CN_E_DATE_INVALID` | 日期非 YYMMDD 或取值非法 | 按 YYMMDD 重填;日段 00=月末 |
| 1 | `UDI_CN_E_AI_UNKNOWN` | AI 未收录 | 核对 GS1 AI 表与发码机构规范 |
| 2 | `UDI_CN_E_INPUT_MISSING` | 未给输入 | 至少给 --di 或 --pi |
## 反模式 FAQ
**Q1: 三家发码机构怎么选?**
GS1(中国物品编码中心)适合出口+国内双标(GTIN 全球通用);MA 码(中关村工信二维码)国内自主体系;阿里健康码主要用于特定流通场景。DI 一旦上报药监局数据库,更换发码机构=换 DI,等于重来。选型前先查 udi.nmpa.gov.cn 现行发码机构清单与合作细则。
**Q2: 校验位过了就等于 UDI 合规了吗?**
不等于。本工具只做**编码规则层**校验(格式/校验位/日期/结构)。完整合规还有三层:①DI 与产品注册/备案信息在药监局 UDI 数据库的登记一致性;②标签上 UDI 的人眼可读+机器可读(含 AIDC)呈现;③PI 结构满足本产品追溯颗粒度(批次 vs 单件)。三层都要过才算合规。
**Q3: (17) 写 281200 这种日期算对吗?**
合法——GS1 允许日段 00 表示『当月最后一天』,本工具自动换算并注明(281200 → 2028-12-31)。但注意部分下游系统不识别 00 日段,建议业务上写明确日期,别为了省事全用月末段。
## 理论依据
LGD 三律(TH-META-006)在此实例化为『一物一码即一物一籍』:校验位=**定籍**(给每件器械一个可验证的全球唯一身份);发码机构三家制=**定门禁**(编码权不开放,须持牌发码);PI 追溯颗粒度=**定权重**(追溯深度匹配风险等级)。医械域站位件:TH-MED-002。
## 免责 / Disclaimer
本工具输出为编码规则判定参考,不构成合规意见、不替代发码机构官方校验与国家药监局 UDI 数据库登记。依据国家药监局 2019年第66号公告《医疗器械唯一标识系统规则》与 GS1 通用规范;发码机构现行清单以 udi.nmpa.gov.cn 为准。AS IS,无任何明示或暗示担保(见 LICENSE.md)。
---
LGD-Powered 家族 · [诺康@SynomosAI](https://medxpert.cn) · 医疗器械全生命周期治理 站位件(TH-MED-002) · © 2026 SynomosAI

## 安装与使用矩阵
| 环境 | 安装/使用 | 说明 |
|---|---|---|
| Claude / Codex / Cursor / Windsurf / WorkBuddy | 仓库放入 `skills/udi-cn-validator/` | SKILL.md 自动被 Agent 读取 |
| 直接运行 | `python scripts/<script>.py --help` | Python 3.8+,零第三方依赖 |
| 智能体调用 | 按"用法"节传参,读 JSON IR | rc=0/1/2 + 错误码常量可编程处理 |使用说明
# 中国医疗器械 UDI 校验器 / China UDI Validator > 中国医疗器械 UDI 校验器 — DI 校验位/发码机构识别 + PI 日期批号序列解析(66号公告口径, JSON IR rc=0/1/2)  **关键词**:LGD-Powered · AI技能 · professional · UDI · NMPA · 大使 诺康@SynomosAI · 理论 TH-MED-002 ## 一句话主张 UDI 一物一码——校验位错一位就是退回一件。逐位复算带证据,发码机构自动识别。 ## 功能 - GS1 mod-10 校验位逐位复算 — 给证据不给结论 - 发码机构识别 — GS1(69 前缀)/ MA 码结构检查,阿里健康等以 udi.nmpa.gov.cn 复核 - PI 全解析 — (11) 生产日期/(17) 失效日期/(10) 批号/(21) 序列号,GS1 日段 00=月末 - 失效日期过期自动告警 - JSON IR — rc=0/1/2 + 错误码可编程处理 ## 快速开始 ```bash python scripts/<script>.py --demo ``` 安装矩阵(各 Agent):仓库放入 `~/.claude/skills/udi-cn-validator/`、`~/.agents/skills/udi-cn-validator/`、`~/.config/opencode/skills/udi-cn-validator/`、WorkBuddy 技能目录;或直接命令行运行(Python 3.8+ 零依赖)。 ## 错误码 | rc | 错误码 | 触发 | 处置 | |---|---|---|---| | 1 | `UDI_CN_E_CHECKSUM` | GS1 校验位不符 | 按 mod-10 重算,核对厂商识别段 | | 1 | `UDI_CN_E_DI_LENGTH` / `UDI_CN_E_DI_FORMAT` | DI 长度/字符非法 | 补全 GTIN-14,剔除 PI 混入 | | 1 | `UDI_CN_E_DATE_INVALID` | 日期非 YYMMDD 或取值非法 | 按 YYMMDD 重填;日段 00=月末 | | 1 | `UDI_CN_E_AI_UNKNOWN` | AI 未收录 | 核对 GS1 AI 表与发码机构规范 | | 2 | `UDI_CN_E_INPUT_MISSING` | 未给输入 | 至少给 --di 或 --pi | ## 理论与署名 LGD-Powered 家族 · 医疗器械全生命周期治理 站位件 TH-MED-002 · 首席发声 诺康@SynomosAI · © 2026 SynomosAI · MIT 链接:[官网](https://medxpert.cn) · [仓库](https://github.com/zhaoxinghua09-cell/agent-skills/tree/main/skills/udi-cn-validator) · 反馈:仓库 Issues
支持平台:Qoder · QoderWork · Claude · Codex 等 AI 编程助手