ISBT 128来源于code 128条码,在条码系统中也可以直接用code 128或其他一维条码代替,但最终结果只要符合ISBT128的内容即可。如:
其中,,前五位字符(90003)[facility]由ICCBBA分配在全世界唯一的标识码,代表唯一的医疗机构或组织代码。05代表的年份[year],217134为序列号[sequential numer],然后两位图标或数字数列在那里是标识位(代表是管状或包等)[vertical #=process control code],最后一位H是检验码[check digit]。
检查码由计算机自动演算,可防止打印过程和读取过程的机械错误和人为差错。检验字符可以是数字、字母或星符组成的(37进制数)
字符 |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
A |
B |
C |
D |
E |
F |
G |
H |
I |
J |
K |
L |
M |
N |
O |
P |
Q |
R |
S |
T |
Y |
V |
W |
X |
Y |
Z |
* |
值 |
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
(1)计算加权权重。取ISBT128前13码,从右向左每位字符对应的值*2^位置 的累加。
∑=4*2^1+3*2^2+1*2^3+7*2^4+1*2^5+2*2^6+5*2^7+0*2^8+3*2^9+0*2^10+0*2^11+0*2^12+9*2^13=76204
(2)取模37。 76204 mod 37=21
(3)38减去第(2)的值再取一次模37。 38-21 mod 37=17
(4)从上表中可以查到值17对应的是H。H即为我们所想要的检验码。
由于我们中国的医疗机构或医疗组织标识为数字,所以可以在codesoft简单实现:
ICCBBA的ISBT 128编码标准 检验码在codesoft的实现
原文地址:http://blog.csdn.net/csui2008/article/details/43482455