Basic UDI校验码算法
2022-07-29杨建明
杨建明/文
在欧盟医疗器械法规(2017/745) MDR 中增加了一个新概念,叫做Basic UDI。此代码采用全球型号代码GMN 格式,是企业基于GS1 编码规则自己定义的一类产品的代码。该代码与UDI 不同,它不会标识在产品上,但与证书、符合性声明、技术文档以及安全和临床性能总结、自由贸易证书等关联,用于欧盟UDI 数据库的主索引。当前,企业主要用于产品注册。
Basic UDI数据结构
Basic UDI采用全球型号代码GMN 格式,用25位不定长表示,包括厂商识别代码(数字)+产品识别代码(字母、数字)+两位校验码,具体如下:
厂商识别代码采用GS1 编码,由数字组成;产品识别代码由字母数字组成;厂商识别代码和产品识别代码字符长度不超过23 位,即m+n≤23。校验码由2 位字母或数字组成。总字符长度不超过25位。
校验码算法
1.将GMN 的每个字符按表一换算成相应的值,表1(见下页);
表1
2.每个GMN 字符按其位置(从右到左)分配加权因子,加权因子为100 以内的23 个质数,分别是2,3,5,7,11,13,……83;
3.将步骤1的值与步骤2的加权因子相乘;
4.将步骤3的乘积相加;
5.将步骤4的和按1021取模数;
6.将步骤5 的值按除以32,取整数,将该整数值对照,见表2,换算成相应的字符,即得到校验符C1;
7.将步骤5的值按32取模数,将该模数值对照,见表2,换算成相应的字符,即得到校验符C2。
表2
校验码算法示例
示例1:计算6901234GS1-China1234567 的校验码,因此,6901234GS1-China1234567 的Ba⁃sic UDI 校验码为E, H,即6901234GS1-Chi⁃na1234567EH,表3(见下页)。
表3
示例2:计算6901234GS1-China123 的校验码,所以,“6901234GS1-China123”的Basic UDI的完整编码是“6901234GS1-China1235R”,表4(见下页)。计算步骤,表5(见下页)。
表4
表5
其它说明
产品识别代码编码产品识别编码中,部分字符不能参与编码,包括:`、~、@、#、$、^、[、]、{、}、|、等11 个可见字符,以及空格符(能够编码的字符详见表1)。如6901234GS1[China],由于该编码含有字符“[、]”,而“[、]”不能参与编码,所以,编码“6901234GS1[China]”是不正确的。在线计算会有明确提示。
校验字符校验码字符不包括数字“0和1”以及字母“I和O”,字母都是大写。
换算技巧依据表1,由于“!”对应值为“0”,所以,当GMN 字符不足25 个字符时,在计算校验码时,可以在字符前用“!”补足25个字符。
如“6901234GS1-China123”有19 个字符,在计算校验码时,可以变成“!!!!6901234GS1-Chi⁃na123”进行计算,其结果是一样的。该变换特别适合用EXCEL 计算校验码,但不适合在线计算校验码。
用EXCEL 计算校验码不能直接套用查找函数(如lookup)查询字符对应的值,因为这些函数不区分大小写字母,建议结合函数find,以便精确查找字符对应的值。