2. 样本标识与编码体系设计
样本进入实验室之后,真正决定它能否被长期、跨系统、跨机构追踪的,不是贴纸本身,而是贴纸上承载的编码体系。一个合格的样本标识方案要同时回答四个问题:用什么载体承载数据、遵循哪套标准组织数据、唯一标识如何生成、以及如何防止录入和扫描错误。本章围绕这四个问题展开,重点讲清一维码、二维码、RFID 的选型逻辑,GS1、HIBC、ISBT 128 三类标准的适用边界,以及 UID 生成规则与校验位设计。
一、三种载体的选型对比
一维码(如 Code 128、Code 39)通过条空宽度编码,容量通常在几十个字符以内,成本极低,适合冻存管、玻片、血袋等小面积标签。它的短板是只能横向读取、容错差,标签磨损或弯曲后容易读失败。二维码(如 Data Matrix、QR Code)在同样面积内可容纳数百字符,并带纠错能力,Data Matrix 在样本管底部、蜡块表面等微小区域应用广泛,即使局部污损仍可解码。RFID 则把数据存在芯片中,通过射频非接触读取,可批量、穿透读取,适合整架样本盒、冷链箱的快速盘点,但成本高、对金属和液体敏感,且需要专门的读写器。
选型时不能只看单价,而要看“读取场景”。单管手工操作、预算敏感,选一维码或二维码;需要整盒盘点、频繁出入库,RFID 优势明显;样本要长期冻存且标签面积小,Data Matrix 往往是唯一可行解。实际工程中常见组合是:管身贴 Data Matrix 作为主标识,管架或冻存盒贴 RFID 作为层级标识,两者通过数据库关联。
二、三类标准体系的适用边界
载体决定“怎么读”,标准决定“读出来是什么”。GS1 是通用商业标准,用 GTIN 标识产品、SSCC 标识物流单元、AI(应用标识符)组合批号与有效期,例如 (01)06901234567892(10)LOT2024A(17)260630 表示 GTIN、批号、有效期。它适合样本作为“商品化耗材”或跨机构流转的场景,通用性强但医疗语义弱。
HIBC(Health Industry Bar Code)面向医疗器械与药品,采用 LIC(Labeler Identification Code)加产品号与批号,结构紧凑,适合标签面积受限的试剂、耗材。ISBT 128 则是血液与细胞治疗领域的专用标准,用 DIN(Donation Identification Number)标识献血编号,配合产品码、ABO/Rh、有效期等,语义最丰富,但只适用于血液与组织类样本。
选择逻辑是:血液、细胞治疗样本必须用 ISBT 128;医疗器械、试剂类样本优先 HIBC;需要与医院供应链、物流系统对接时用 GS1。三者并非互斥,同一实验室可对不同样本类型分别采用,但必须在数据库层建立统一映射,避免“同一样本两套编号”造成追踪断裂。
三、UID 生成规则与校验位设计
UID 的核心要求是全局唯一、可解析、可校验。一个可落地的结构是“机构码 + 日期 + 序列号 + 校验位”。例如机构码 LAB01(5 位)、日期 240630(6 位)、当日序列 000123(6 位),主体共 17 位,再加 1 位校验位。校验位常用模 10 加权算法:从右向左对主体数字交替乘 3 和 1,求和后取 (10 - sum % 10) % 10。
以主体 LAB01240630000123 为例,先将其中的字母按 A=10、B=11 映射为数字,再逐位加权。假设映射后数字序列为 11 10 11 0 1 2 4 0 6 3 0 0 0 0 1 2 3,从右向左交替乘 3、1 后求和,得到校验位。实际实现时建议直接写一段校验函数,扫描端在解码后立即调用,校验失败则拒绝入库并提示重扫。
def calc_check_digit(body: str) -> int:
# 字母映射 A=10 ... Z=35
digits = []
for ch in body:
if ch.isdigit():
digits.append(int(ch))
else:
digits.append(ord(ch.upper()) - ord('A') + 10)
total = 0
for i, d in enumerate(reversed(digits)):
weight = 3 if i % 2 == 0 else 1
total += d * weight
return (10 - total % 10) % 10
uid_body = "LAB01240630000123"
check = calc_check_digit(uid_body)
print(uid_body + str(check)) # 输出带校验位的完整 UID
四、落地时的关键检查点
第一,标签材质要与存储条件匹配:液氮冻存需用耐低温标签,避免脱落。第二,二维码打印分辨率建议不低于 300 dpi,Data Matrix 模块尺寸不小于 0.25 mm,否则冻存后读取率下降。第三,UID 一旦打印就不可复用,样本销毁后该号应标记为“已注销”而非重新分配。第四,扫描端必须做校验位验证和重复号检测,重复号直接拦截。第五,跨机构流转时,在 UID 之外附加 GS1 或 ISBT 128 的兼容字段,保证外部系统可解析。