|
AGFA的汉字编码方式
据AGFA自己讲,他们采用ISO-2022-GBK保存病人姓名、医院名、科室名等中文信息。
ISO-2022-GBK估计是AGFA对ISO-2022-CN的变种,应该不是标准的格式。
[ISO-2022-CN的知识]
ISO-2022-CN属於7-bit编码, 将ASCII指定给G0、中文字指定给G1或G2。中文字 分
成三类: GB 2312-80、CNS Plane 1(相当Big 5中的level 1: 常用字)、和CNS Plane
2(相当Big 5中的level 2: 次常用字), ESC sequence如下:
字集 放在G0-G3 指定给G0-G3用的ESC sequence 使用时用的ESC sequence
-----------------------------------------------------------------------------
ASCII G0 "ESC ( B", 或0x1B 28 42 SI, 或0x0F
GB2312-80 G1 "ESC $ ) A", 或0x1B 24 29 41 SO, 或0x0E
CNS Plane 1 G1 "ESC $ ) G", 或0x1B 24 29 47 同上
CNS Plane 2 G2 "ESC $ * H", 或0x1B 24 2A 48 SS2
----------------------------------------------------------------------------
-
ESC sequence都符合ISO 2022的规定。 要注意的是, 每个文件要结束在ASCII" 每
行必须以ASCII开始, 也要以ASCII结 束。就像"交换"在GB中是0x3d3b3b3b、在CNS
Plane 1中是0x47285f50, 所以一行 为"交换(GB)交换(CNS)"的hex为:
1B242941 0E 3d3b3b3b 1B242947 47285f50 0F 0A
^^^^^^^^ ^^ ^^^^^^^^ ^^^^^^^^ ^^^^^^^^ ^^ ^^
G1为GB 用G1的字 GB码 G1为CNS Plane 1 CNS码 用G0的字 换行
(ASCII)
[AGFA的汉字编码格式]
AGFA的所谓ISO-2022-GBK采用和ISO-2022-CN相似的编码方式,但做了如下改动:
1. 不使用SI(即0E), SO(即0F)
A. 在进入汉字的ESC sequence(1B 24 29 41)后没有添加SI(即0E)。
B. 在进入ASCII的ESC sequence(1B 28 42)后没有添加SO(即0F)。
2.汉字使用的是机器内码(每个字节的最高位为1) ,而不是国标码。
[DICOM数据字节数规定]
DICOM规定数据的字节数必须是偶数,所以如果编码后字节数是奇数,则需要补0(数
值)或补空格(字符串)。
[医院名/部门名编码格式]
医院名(00080080)和部门名(00081040)的编码一般只包括中文,格式为:
1B 24 29 41 <中文机器内码> 1B 28 42 [如需要,补一个空格]
例如:
1b 24 29 41 b7 c5 c9 e4 bf c6 1b 28 42 20
是“放射科”的编码。
[病人姓名编码格式]
病人姓名或医生姓名(PN类数据)的编码包括拼音(或英文),也包括汉字。采用“=”
作为汉字前后的分割符号。格式如下:
[拼音或英文]3D 1B 24 29 41 <中文机器内码> 1B 28 42 3D [如需要,补一个空格
]
其中,在 1B 24 29 41 的前面和 1B 28 42后面各加了一个3D,即“=”。需要说明
的是,拼音(或英文)姓名格式根据DICOM一般为LastName^FirstName,AGFA把LastName和
FirstName都使用了全部拼音,例如zhao ru tang^zhao ru tang。
例如:3d 1b 24 29 41 cb ce d1 a7 c3 f4 1b 28 42 3d 20
本例中,没有保存拼音信息。
[部位/子部位编码格式]
部位(00081030)和子部位(0008103E)的编码里既包括:中文描述,“(”,英文,
“)”。注意两个括号都是全角的汉字。即:
例如:
1b 24 29 41 d0 d8 b2 bf a3 a8 1b 28 42 63 68 65
73 74 1b 24 29 41 a3 a9 1b 28 42 20
表示:
胸部(chest)
|
|