Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

三个月学SNOMED-CT系列 #51

Open
wanghaisheng opened this issue Mar 6, 2015 · 12 comments
Open

三个月学SNOMED-CT系列 #51

wanghaisheng opened this issue Mar 6, 2015 · 12 comments

Comments

@wanghaisheng
Copy link
Owner

原文刊登在 -净琉璃- 同学也就是不倒翁同学的新浪微博中,这里只是为了方便学习放在一起,版权归原作所有。

@wanghaisheng
Copy link
Owner Author

三个月学SNOMED-CT系列 - 何以为临床术语(一)
2015年2月19日 14:05
今年二月份开始,IHTSDO从进行几个波次的SNOMED-CT的培训活动,从而把我们这些菜鸟们正式的引入这个既耳熟又陌生的临床术语世界。从今天开始,我想用三个月的时间断断续续的和盆友们一起分享进阶SNOMED-CT的过程。

【为避免版权等法律纠结,所分享内容均为个人理解,如有偏薄,还望海涵。所诉内容,请勿转载,违者必究。】

闲话少说,步入正题。首先我们就是从IHTSDO实施和培训主管David Markwell讲解的《Why Clinical Terminology Matters》开始......

何以为临床术语?(一)

【NEHTA对临床术语的解释为『在临床实践中准确描述患者护理和治疗的结构化词汇』,『临床术语涵盖复杂的概念,例如疾病、手术、处置、药品等』。】

如果你今天使用谷歌搜索中文『临床术语』的话(知道亲们很多都被谷歌抛弃了,好桑心),第一个搜索结果是『临床术语服务器』,第二个就是『SNOMED CT』。人们口中的『临床术语』已经和SNOMED-CT实现了无缝衔接。但SNOMED-CT却又并非简单的等同于临床术语。想要了解SNOMED-CT,我们首先要了解临床术语。

Markwell先生在介绍临床术语的时候首先引入的是Clinical Ideas(临床思路)这个概念。他认为临床思路是成为个人健康档案的基石,它涵盖『我们通过临床、科研、经验、流行病学调查等累积已知的关于健康、疾病、预防、检查、治疗的所有东西』。这个定义看起来的确很广泛,而重中之重在于临床思路是『链接医疗服务的基础』。医患、医护间只有通过交换临床思路才能够提供有效的介入和共享患者信息从而提供完善的诊疗并积累临床经验和传授知识。

既然临床思路如此重要,那么问题就出现了。我们要共享这些信息,那么怎么样才能共享呢?我觉得首先就是对临床思路的认识统一。当一个人说左下腹隐痛的时候,听者不应该有小腿痉挛的感觉。说都能听得懂的人话,就是共享临床思路的基础,而这个大家共识的『人话』就成为了临床术语。在现在国内广泛使用的西医科学中,大量的存在着拉丁文、英文、中文等的专业词汇和缩写。能够真正的『说人话』也的确是个不容忽视的客观问题。

其次,就是如何采集和利用这些写下来的人话。Markwell先生在讲解中介绍了英国临床信息系统从上世纪七十年代到现在的发展历程,其核心就是计算机系统从纯文本录入到模块化信息编码的过程。在使用纯文本的信息系统时,如果我们要查询筛选的时候,我们要考虑多词同意和一词多意的问题。例如在查询急性腹痛的时候,必须要考虑到急腹症这个词的同时存在。而在查询SCC的时候,我们又不得不考虑得到的结果到底是鳞状细胞癌还是小细胞肺癌。当临床词汇不断扩展的时候,单纯依靠无关联的词汇查询就有些相形见绌了。

为了解决这些问题,英国医生James Read在1984年发明了READ编码。这个编码系统从根本上解决了可能出现的词不达意问题。【未完待续...】

@wanghaisheng
Copy link
Owner Author

三个月学SNOMED-CT系列 - 何以为临床术语?(二)
2015年2月19日 19:27
【为避免版权等法律纠结,所分享内容均为个人理解,如有偏薄,还望海涵。所诉内容,请勿转载,违者必究。】
【...继续上回】
READ编码是一种树型单继承关系编码系统。每个编码为五位字符组成,首位必填,其余位数如果不足使用逗点(.)补全。同一序列的编码存在继承关系,即五位码是四位码的子码,四位码为三位码的子码。例如:

SE2.. 躯干挫伤
SE3.. 上肢挫伤
SE30. 上臂或肩部挫伤
SE300 肩部挫伤
SE301 肩胛骨区挫伤
SE302 腋下区挫伤
SE304 锁骨区挫伤

READ编码的产生对于统一疾病定义,优化信息检索,实现数据交换等方面起到了积极的作用。之后相继又出现了ICD,ICHI,OPCS等编码系统并广泛使用到临床信息系统和疾病统计系统中。与此同时,编码的内容也从单纯的疾病扩展到处置、手术、病理等多个方面。相对于早期的纯文本化计算机系统而言,这类编码体系的使用的确产生了质的飞跃。但如果我们抛除程序化的东西而回到人类的思维模式中时就会发现,有些东西好像是错了。

树型单继承关系编码的最重要缺点就是每一个子编码有且只有一个父代码。而在真正的临床实践中,每一个临床术语间却是存在着交叉关联。拿上面的例子来说,当我们在谈及『腋下区挫伤』的时候,它的父代码可以延展到『上肢挫伤』。可如果我们从解剖的角度来考虑腋下区的时候,它却是上臂和躯干交接的地方。因此,如果将腋下区划归到上肢以后,我们在查询躯干部位挫伤的时候就无法得到腋下区的结果。

树型单继承关系编码的另一个缺点就是一旦修改了编码,其原有的含义便会产生改变。还是拿『腋下区挫伤』来说,如果我们把它划归到躯干部挫伤下以SE2为编码起始以后,它就失去了同上肢的联系。

类似READ编码这样的树型单继承关系编码体系,由于其编码的内容只注重于疾病的诊断,从而剥离了疾病定义与病理学及解剖学之间的直接联系。虽然后来与ICD相辅相成的中出现了肿瘤的病理学编码和ICD-O编码,但这样的混合编码形式就显得臃肿且容易出现差错。

为了让编码体系更加符合临床实践的实际,让临床术语间存在多重,多维的关系,一种多继承关系的编码体系就应运而生。它就是SNOMED-CT。【未完待续...】

@wanghaisheng
Copy link
Owner Author

三个月学SNOMED-CT系列 - 何以为临床术语?(三)
2015年2月23日 11:58
【为避免版权等法律纠结,所分享内容均为个人理解,如有偏薄,还望海涵。所诉内容,请勿转载,违者必究。】
【...继续上回】
READ编码在诞生之时为四位编码,由于数据扩展的需求在90年代初变更为第二版的五位码并与ICD-9-CM和OPCS-4实现了映射。与此同时,READ编码的第三个版本也逐渐浮出水面。第三版沿用第二版的五位长度编码,但与之不同的是不但编码内容实现了扩充,编码的树型继承关系也被移除到单独的关系表中,同时概念和名称实现了分离,而且开始使用编码累加来具体描述临床思路。在1999年,READ编码第三版同SNOMED-RT进行了合并,从而产生了今天的SNOMED-CT。

SNOMED-CT是Systematized Nomenclature of Medicine - Clinical Term的缩写,全称是医学系统化命名-临床术语。从命名上我们其实可以看出,SNOMED-CT中的字母"C"并不是Classification,也不是Code。它强调的重点并不在于编码,这是跟Read Code、ICD、ICPC、LOINC等的命名的一个本质区别。

SNOMED-CT的灵魂就在于不再把编码本身当作核心任务。不论是READ编码的第一和第二版本,还是ICD,由字母和数字合并而成的编码有着其特定的意义。这些编码是人类可以直接理解的东西,看到了编码的开头我们就可以想到结局。而对于READ编码第三版和SNOMED-CT而言,它们面向的对象是机器而不是人,当看到编码的头几位的时候,我们却绝对想不到结局。光说不练假把式,为了更直观的去体会编码系统和SNOMED-CT的区别,我将一个简单的临床『实例』翻译成编码进行说明:

『患者张噶子,1945年1月32日在放牛的时候掉下牛背,左边噶鸡窝正好刮一树杈上,老钟叔背着来白洋淀花里胡哨医院门诊就诊。诊断左腋下挫伤,清创、红药水消毒、包扎后回家修养。』

ICD-10:
S40.0 肩部和上臂挫伤
V80.0 跌落

ICPC-2:
S16002 表皮挫伤
A80002 跌落

READ编码V3:
X768D 男
SE302 腋下区挫伤
7NB32 左
XUNaO 腋下
X79r3 农场
T3241 骑动物跌落
XU9il 树
XaCG2 医院门诊
Ua1Cp 创面清洁
XU8oZ 红药水
X90lD 伤口包扎

SNOMED-CT:
248153007 男
53759006 腋下区挫伤
7771000 左
91470000 腋下
257609008 农场
215297007 骑动物跌落
22097005 树
310390009 医院门诊
225150002 创面清洁
19126005 红药水
262318008 伤口包扎

相较其它ICD等编码而言,SNOMED-CT和READ编码涵盖了更加全面的临床术语内容。由于SNOMED-CT是源于READ编码并同步更新,所以单纯从信息提取上来看,二者保持了一致性。

再看一下代码:在ICD-10中,S40为肩部和上肢表皮伤的父代码,V80为骑动物跌落的父代码。所以S40.0和V80.0从编码上讲都是继承了父代码的内涵。在ICPC-2中S16是挫伤的父代码,A80是外伤的父代码。所以S16002和A80002也都继承了父代码的内涵。而当我们在看READ编码第三版和SNOMED-CT的时候,他们的编码就显得杂乱无章,他们的首字母基本上并无对应的父代码。

接下来,我们看一编码所表达的临床思路:

由于ICD-10本身只是诊断编码,所以它需要和ICHI一起合用才能表达出完整的临床思路。单从ICD-10自身来看,S40.0+V80.0=因骑乘动物引起跌落而造成了肩部和上臂的挫伤。由于ICD-10本身编码的局限性,并不能明确表达出损伤的部位。由于ICD-10中始终没有腋下区挫伤的编码,即便是我们换用ICD-10-CM的话,也仅可得到S40.022A来描述左上臂挫伤首诊。ICD-10的编码的继承关系图如下:

S40.022|左上臂挫伤| -属于-> S40.0|上臂或肩部挫伤| -属于-> S40|上肢表皮损伤|
V80.018|骑其它动物跌落| -属于-> V80.01|骑动物跌落| -属于-> V80.0|骑动物或乘坐动物拉的车辆跌落(非交通事故)| -属于-> V80|骑动物或乘坐动物拉的车辆跌落|

在SNOMED-CT中,诊断为左腋下区挫伤,其定义为:
53759006|腋下区挫伤|:116676008|形态学|=308492005|挫伤|,363698007|体位|=(91470000|腋下|:272741003|偏侧|=7771000|左|),246075003|造成源|=22097005|树|,246297005|地点|=257609008|农场|,23981006|原因|=215297007|骑动物跌落|,.........

SNOMED-CT中的编码关系图如下:
腋下区挫伤 ——属于-> 上肢挫伤
腋下区挫伤 ——属于-> 躯干挫伤
腋下区挫伤 ——属于-> 腋下区损伤
腋下区挫伤 ——形态学-> 挫伤
腋下区挫伤 ——体位-> 腋下区

根据这个『实例』我们可以看出,更加丰富内容的SNOMED-CT可以通过多重的代码来表达复杂且真实的临床思路。而由于单一的编码存在着多维的关系,数据的筛选也将更加便利。【未完待续...】

@wanghaisheng
Copy link
Owner Author

三个月学SNOMED-CT系列 - 何以为临床术语?(四)
2015年2月24日 07:54
【为避免版权等法律纠结,所分享内容均为个人理解,如有偏薄,还望海涵。所诉内容,请勿转载,违者必究。】
【...继续上回】
事物的存在必然有其存在的道理,READ编码也是如此。而存在过的事物也会消亡,READ编码也是如此。READ编码第二版将于2016年愚人节最后一次更新,第三版将于2018年愚人节最后一次更新。两个版本都将于2020年愚人节正式退出历史舞台,全部由SNOMED-CT取代。个人认为READ编码的陨落主要有以下几个个原因:第一,READ编码一直都是在英国国内发扬光大,不像ICD、ICPC、LOINC等编码的使用范围广泛;第二,虽然READ编码第二版有所扩展,但由于其树型结构的约束,闲置编码浪费,其扩容空间还是有限的;第三,READ编码第三版的出现预示着临床术语编码新时代的开启,而当演变成为SNOMED-CT后,READ编码进行同步自身维护的必要性就逐渐消失了,取而代之是国际化的协同工作来共同推动这个庞大的工程前进的必然。

说着说着突然感觉有点要跑题了,所以稍微转一下方向盘,现在我们抛去编码,再从新回到临床术语这个话题。通过READ编码的变革,我们可以看出临床术语在试图表达临床思路的时候需要完成两个跨域。首先,临床术语需要有足够的容量来承纳临床思路可能要表达的含义。从计算机硬件发展的历程来看,内存存储从千字节到亿兆字节的攀升过程也是我们对信息精细度需求不断加深的过程。在早期出现的Abies系统中,仅有96个编码的术语用于记录常见临床思路。发展到现在,ICD-10包含了一万四千多编码的诊断术语,ICD-10-CM包含了六万八千多编码的诊断术语,ICD-10-PCS包含了八万七千多编码的处置术语......而SNOMED-CT包含了超过三十六万编码的概念术语和近百万条的术语描述。几十万、几百万对于现在的计算机系统而已简直就是个小儿科的数量级。但我们不要忘记,这些被编码的临床术语每一条都是经过精心的筛选、归类、校验由专业的审批机构核准而成,需要极其庞大的人力和物力才能得以实现。

其次,临床术语必须要通过精密的衔接才能描绘出临床思路。如今火星探测器可以在自控下工作,智能机器人可以实现复杂的工作指令。但到目前为止,纸质病志和文本化的记录仍然在临床工作中扮演着重要的角色。真实的临床实践不会是约定俗成,所以临床术语必须通过各种可能的搭配来展示其丰富多彩的内涵。太多抽象的、不确定的、模糊不清的信息无法使用格式化的信息手段加以采集、表述和分析。因此,简单的树型关系结构仅适合用于数据定向统计和呈报,无法用于临床思路的有效交换。我们需要更加人性化思维的模式来把这些临床术语整合起来,让那些枯燥的代码衍生出活力来。

不论是READ编码第三版还是SNOMED-CT,我觉得其推广历程都是比较艰辛的。截至2011年,在使用READ编码的英国临床系统中仅有10%采用了第三版,其余的90%仍然使用的是第二版。复杂的结构造成了实施的困难。因此,在Markwell先生讨论这个问题的时候,他提出的建议就是小步走,一步一步来,先引进编码,进行编码替换,然后再考虑实施编码间的关系。我们在实施的过程中要确保最终用户不会因编码系统的复杂而产生对应用系统的抵制。就好比我们驾车一样,绝大多数司机们更关心的是内饰和仪表盘而不是发动机和齿轮箱。好像又要跑题,不过在学习SNOMED-CT的时候,我们也需要小步走,一步一步来。所以从下一篇开始,我们从零开始,正式进入SNOMED-CT的世界。【未完待续...】

@wanghaisheng
Copy link
Owner Author

三个月学SNOMED-CT系列 - 丑话说在前面
2015年2月25日 06:11
【为避免版权等法律纠结,所分享内容均为个人理解,如有偏薄,还望海涵。所诉内容,请勿转载,违者必究。】

在正式学习SNOMED CT之前,有几点东西必须要说明白,这样才能够有利于读者决定是否要浪费时间跟下去。

第一点就是SNOMED CT身份问题。我查了国内的一些关于SNOMED或SNOMED CT的文章,有一些文章中将SNOMED认为是Systematized Nomenclature of Human and Veterinary Medicine的缩写,我觉得这一点是需有探讨的。我在前面那篇小文里一直是在说READ编码而不是SNOMED。这和我本身属于英系有一定的关联,所以在这一点上同国内很多学者通过SNOMED来引出SNOMED CT是不同的。SNOMED CT是在1999年开始的SNOMED RT和READ编码第三版(英国那时候已经把它改名叫做Clinical Terms)的整合项目,它现在的名字就是两个编码体系的整合。因此我们在追寻其中的SNOMED的含义也就是在对SNOMED RT进行溯源。在1965年的时候,美国病理学院(CAP)开发了Systematized Nomenclature of Pathology (SNOP)。1975年的时候CAP将SNOP与New York Academy of Medicine's Standard Nomenclature of Diseases and Operations (SNDO)整合成为Systematized Nomenclature of Medicine (SNOMED)。1979年,CAP发布了SNOMED II。到了1993年的时候,CAP再次将SNOMED扩充添加了兽医内容,发布了SNOMED International 3.0。也就是在这个版本,CAP将SNOMED的名称更改为Systematized Nomenclature of Human and Veterinary Medicine。不过在1997年,SNOMED-RT横空出世了。很遗憾的是在Spackman先生对于SNOMED RT的介绍文章(SNOMED RT: a reference terminology for health care. PMID9357704)中并没有对这个缩写进行明确的解释。不过,在目前SNOMED CT的拥有者IHTSDO的很多文件中,均是使用Systematized Nomenclature of Medicine Clinical Terms作为全称的,他们对于兽医并不十分感兴趣。Systematized Nomenclature of Human and Veterinary Medicine这个名称在SNOMED的五十年历史中仅仅做为SNOMED III存在了五年时间。

第二点需要说的就是版权问题。SNOMED CT是有版权的,这一点非常重要,我们可以学习,但不能随便使用;我们可以发挥其精神,但不能使用其内容。SNOMED的版权一直都归属于美国病理学院。READ编码则是由英国NHS的产品。在1998年二者进行洽谈之后,美国病理学院成为SNOMED CT的版权所有者并主导开发。2007年,新成立的国际合作组织IHTSDO取得了所有SNOMED产品的版权并采取会员国/地区的形式进行发行和使用。截至目前IHTSDO包含发起国美国、英国、加拿大、丹麦、澳大利亚、立陶宛在内的27个成员。中国香港于2013年加入IHTSDO。中国大陆目前不是IHTSDO成员。这也就是说,在中国大陆并没有使用完整SNOMED CT的资格。虽然IHTSDO已经放松了SNOMED CT概念集的使用限制,但对于SNOMED CT的关系集并没有开发。由于SNOMED CT中并无中文维护版本,所以开放的术语集对于国内应用而言几乎是无实际用处的。

第三点需要说的就是学习SNOMED CT的目的。因为中国大陆并没有SNOMED CT的使用权,那么我们是不是就没有必要学习SNOMED CT呢?在我看来,SNOMED CT主要包含了三个层次的内容。首先就是目前已经开放了的概念集合。SNOMED CT中涵盖了近四十万的概念和近百万的描述,这些可以说是医学术语的超级融合。SNOMED CT目前有美式英语、英式英语、丹麦语、西班牙语、瑞典语的不同版本。而且SNOMED CT还与ICD-9CM、ICD-10、ICD-O-3、ICD-10-AM、LONIC、OPCS-4等编码实现了映射。有了这些东西,就可以进行术语的标准化。遗憾的是目前国内并没有机构对SNOMED CT进行同步翻译,这个层次的内容对我们而言有些期望但暂无实际意义。

其次就是目前还有版权限制的关系集。SNOMED CT之所以有别于其它的编码体系,重点就在这个关系集上。目前SNOMED CT有近一百五十万的关系,但我们没有版权无法使用。这就如同别人给你一辆自行车却没有车链子一样,推着还不如走着快,扔了还有点可惜,单买车链子还买不起。所以在这个层次上就是可遇而不可求了。

最后一个层次就是对于SNOMED CT数据模型的研究。目前国内已经借鉴SNOMED CT数据模型开发出了中医临床标准术语集,而澳大利亚也根据SNOMED CT模型开发出了临床药品术语集。这些衍生品的产生对于推动临床术语和数据标准化起到了很好的作用。但是,可但是,临床术语的最终级目标是用来表达可交换的临床思路。因此,仅仅进行编码标准化是不够的。SNOMED CT的精致所在是通过看似简单的多对多数据结构来勾勒出复杂的临床思路。Markwell先生在他的讲解中引用过爱因斯坦的一句名言是『Everything should be made as simple as possible, but not simpler』(以简示繁,简而不失)。由于兴趣方向的不同,我对这句话的理解也有所偏差。个人认为SNOMED CT尝试用多对多数据结构来为勾勒复杂多变的临床思路提供基础,对于它所要表达的内涵而言所有信息在三个表中得以简单实现。但是如果我们从数据结构的角度来考虑的话,用二位表格来表达四维关系却又是何其的复杂。这种简单中的复杂恰恰造成了SNOMED CT推广的困难。因此,我觉得如果能够通过对SNOMED CT数据模型的深入学习从而为建立更加优化的临床信息模块提供思路并将其应用到智能化临床信息系统之中的话,那才是我们需要达到的目的。

如果学习SNOMED CT的结果并非读者所期待,我倒是真的觉得没有必要继续看下去了。我一直认为成为临床术语专家并没有多大的前途。对于临床术语和术语编码的过细学习是比较枯燥且没有过多应用价值的,把学习SNOMED CT的任务留给做研究和开发的人,让他们去苦逼吧。

如果读者想苦逼一下的话,那我就把IHTSDO这次免费培训的课程时间表说一下。这次网络培训e-learning课程是去年发起的。原计划只开一个班。后来由于报名人数忒多,就分成几期。每期分为十二周课程。第一期今年二月份已经开课。由于笔者做什么事情都比较拖泥带水,所以被安排到了三月份的补习班。

课程的前四周主要是讲SNOMED CT的基础,历史呀,版权呀,学了有啥好处之类的。这四周的内容除了浏览SNOMED CT数据之外基本在前面的篇幅中都已经涉及了。接下来四周的内容从临床术语师的角度讲SONMED CT的数据模型、发布格式以及内容扩展。最后四周讲个性化、翻译、映射、实施等。

在2008年的时候,IHTSDO的首席术语师,也就是SNOMED RT的重要参与者Kent Spackman先生曾经在NEHTA做过两个关于SNOMED CT的讲座。由于我本人对于成为临床术语师并没有任何兴趣。所以在接下来的学习心得分享过程中将主要借用Spackman先生的一些内容在混合自己的理解从更多非临床术语师的角度去接近SNOMED CT。【未完待续...】

@wanghaisheng
Copy link
Owner Author

三个月学习SNOMED CT系列 - 到处都有三剑客(一)
2015年2月27日 11:55
哇咔咔,今天正式开始学习SNOMED CT啦。小伙伴们开心吗?SNOMED CT的入门第一课就是要知道它的最重要组成部分:概念、描述和关系。

作为术语集,SNOMED CT的直接面向对象是计算机系统而不是人类。因此,把变化无常的人类语言转换成计算机能够懂得的固定代码就是第一任务。在SNOMED CT中,所有的东西都会被安排一个长度不超过18位的数字代码。这个代码一旦分配了就是永久制,假使内容是错误的,也只能将这个代码作废而不是重用。

【概念】Concept
所谓的概念就是被结晶了的最小临床思路。在白话一点就是在整句中可以被拆分出来的表达临床意义的每一个名词的共同含义(老、贼、忒那样的形容词、副词啥的我们不考虑哟)。强调含义就是指这个所谓的概念只是一个概念而已,并没有固定化的名称。在SNOMED CT中,每一个概念即使一个数字代码。当我们想到『男人』的时候,那个概念的SNOMED CT表达就是248153007,仅此而已。概念自身没有名称,概念的在人类思维中的名称是在SNOMED CT的描述中。

上图内容为SNOMED CT概念表格中的真实数据。第一列是概念代码;第二列是起效时间;第三列是代码状态(1为生效,0为失效);第四列为模块代码,在这里都只可能有一个代码:900000000000207008,代表SNOMED CT核心数据;第五列为概念定义状态,这里只可能出现两个代码:900000000000073002表示已经充分定义的概念,900000000000074008表示必要但还未充分的概念定义状态(基本没啥实际使用意义的概念)。

在上面的数据中,1000004翻译成为人类语言是『西班牙』,它在2002年1月31日正式启用,到2003年1月31日正式废止。

我们如果仔细的观察一下在SNOMED CT中的代码就会发现,每一个代码的最后三位比较特别。其中最后一位数字是SNOMED CT的效验码,用来消减录入错误的产生。提到效验码,不得不多说一句。其实在分配患者病志号码或其它可见代码的时候,适当的引入Luhn、Verhoeff等末尾效验码是个很好的纠错措施,这样至少可以减少90%的人为录入差错。

倒数第二位和第三位是分区码。其中倒数第二位的含义如下:

0 代表概念
1 代表描述
2 代表关系
3 代表子集
4 代表映像
5 代表映像目标

倒数第三位的含义是:

0 代表核心集
1 代表扩展集

因此,在所有的核心概念代码中,最后三位数字一定都是由00开头的。由于SNOMED CT代码的后三位都有指定用途,所以原本的18位长度只有前面的15位可用,也就是可以最多有近千万亿的容量空间。这些代码应该是用不完吧。【未完待续...】

@wanghaisheng
Copy link
Owner Author

三个月学习SNOMED CT系列 - 到处都有三剑客(二)
2015年3月2日 12:05
【...继续上回】
SNOMED CT存在的一个重要应用就是将电子化病志进行升级。在这一点上,ICD等编码系统无法同SNOMED CT进行较量。其重要的一个原因就是SNOMED CT的概念涵盖的内容太过于全面。现在SNOMED CT中涵盖了疾病、处置、体征、器官、身体结构、医疗产品、事物、职业、事件、环境、病理等41类概念。由于SNOMED CT支持扩展集的延伸,因此即使没有出现在核心版中的概念也可以进行本土化的扩充增容。NEHTA开发的Austrailan Medicines Terminology(澳大利亚药品术语)就是建立在SNOMED CT的扩展集基础上,使用专属的域值添加了超过七万条药品概念。

由于SNOMED CT的数据量过于庞大,这就有几个事情需要注意。首先就是人为介入能力的缺失。对于一位经验的病志编码员而言,每当看到一型糖尿病的时候就会想到E10.9编码,但他们却很难记起313435000。因为,在SNOMED CT的实施过程中,一切都要以后台系统为支撑,坚决尽量避免人为介入编码的事情发生。

另一个问题就是SNOMED CT的编码长度。在数据库中,最长的数字类型为8字节的bigint,可以存储长度为19位的数字。但是在JavaScript中,最大的数字长度只有16位,必须使用字符格式。在C#中,int只有10位,必须使用long格式。所以,在使用SNOMED CT编码的时候,一定要注意数据类型的选用。

再有就是对于计算机而言,一个概念就是一个字符串。它所要表达的事情/事物是固定的,没有语种的分歧,没有方言的差异。但是,在人类思维中的概念常常会有多种不同的表达方式。为了实现人与计算机的无缝衔接,SNOMED CT引入了另一重要元素『描述』。
【未完待续...】

@wanghaisheng
Copy link
Owner Author

三个月学习SNOMED CT系列 - 到处都有三剑客(三)
2015年3月3日 15:03
【描述】Description
SNOMED CT中的描述并不是词典中说的『运用各种修饰手法对事物进行形象化的阐述』。它是用人类语言对于SNOMED CT所涵盖概念含义进行翻译的集合,等同于学生手中的英汉字典或汉英字典。

上图为SNOMED CT描述的发行文件内容。第一列为标准的SNOMED CT编码,用来锁定这条描述;第二列为起效时间;第三列为状态,1为生效,2为失效;第四列为模块代码,这里还是只有900000000000207008来表示SNOMED CT核心数据集;第五列为对应的SNOMED CT概念代码;第六列为语言代码,en代表英文,在遥远的未来,很可能会出现cn代表中文;第七列为概念类别,其中900000000000003001表示全称,900000000000013009表示同义词;第八列就是人类语言对于这个SNOMED CT概念的文字定义;第九列为字母拼写的大小写要求,其中900000000000020002表示第一个字母要大写,900000000000017005表示区分大小写,900000000000448009表示不区分大小写。

文件中的第二行数据记录了:在SNOMED CT核心数据集中概念697990000的一个英文同义词为『味觉下降』,该描述从2014年1月31日起效,首字母需大写,该描述的索引代码为2968407015。

心细的同学可能会观察到了,和前面讲的SNOMED CT概念一样,为什么很多的代码都是900000000开头的呢?说到这,就必须顺带简单的说一下我现在给大家展示都是SNOMED CT在2011年之后的发行文件第二版格式。很多的新产生的内用核心编码就都用900000000开头了。等IHTSDO什么时候出了第三版格式的时候,我们再来几节收费的升级课程:)

接下来我们再从数据关系的角度来看待一下SNOMED CT概念和描述的关系,请看图: 哇噻,很简单吗,这就是个一对多的关系类型而已。不过这个一对多不只是一个概念对应至少一个描述,而是要对应至少两个描述。为什么会这样腻?

我们下回再说【未完待续...】

@wanghaisheng
Copy link
Owner Author

三个月学习SNOMED CT系列 - 到处都有三剑客(四)
2015年3月6日 09:57
SNOMED CT中对于每一个概念的描述主要分为两类:全称(fully specified name,FSN)和别名(synonym)。每一个概念必须至少有一个全称和别名。所以说,从概念到描述,至少要有两条线。我们看一下软组织挫伤(428800008)在SNOMED CT国际版中描述所对应的记录:

2688530015 Contusion of soft tissue (disorder) 【全称】
2692295017 Contusion of soft tissue 【别名】

所谓的全称(900000000000003001)是明确阐述概念内涵的短语。虽然是短语,但是却包含两部分,前面是对概念的阐述,后面有一个括号,里面有这个概念所代表的类别关系。全称是从最权威的角度对SNOMED CT概念使用人类语言加以解释。由于人类语言并非只有一种,所以这个全称的数量就会根据SNOMED CT适应语言的增加而变多。因此假如有中文版本SNOMED CT的话,那就会有一条新的记录为『软组织挫伤(疾病)』。但由于是最权威的解读,所以对于同一语言而言,每个概念的全称只会有一个。全称存在的意义是在于解释而不是表达,因此在实际应用中我们往往会把精力用在别名上。

别名(900000000000013009)是在实际工作和生活中人们对于概念进行的表达。这和我们喊二嘎子,张二狗一样,虽然不是大号,但和真实姓名代表了同样的意思。在SNOMED CT中,每一个概念必须会有一个等同于全称的别名记录。因此在我们看上面例子的时候会发现软组织挫伤的别名就是去掉括号中内容的全称。这也确保了每一个概念,至少会存在一个别名的要求。下面我们再看一下关于概念116241004的描述:

676410013 Pancreaticoduodenectomy (procedure)【全称】
184285013 Pancreaticoduodenectomy 【别名】
421107017 Whipple procedure【别名】
Whipple operation【别名】
Whipple operation, proximal pancreatectomy【别名】
保留幽门胰胃吻合胰十二指肠切除术(处置)【假想中文全称】
保留幽门胰胃吻合胰十二指肠切除术【假想中文别名】
胰十二指肠切除术【假想中文别名】
保留幽门的十二指肠切除术【假想中文别名】
保留胃幽门的胰十二指肠切除术【假想中文别名】
PPPD【假想别名】

在SNOMED CT国际版本中,目前一共有四个对于这个概念的别名。我这里假想了一下在中文病志中至少会有四个常用中文名称,一个常用英文名称和一个英文缩写。这跟之前的国际办吧加在一起就是九个别名。通过这么多的别名,我们便可以从用户输入中提取信息并映射到相同的概念上去,从而解决了人类语言中多词同意的问题。可是解决多词同意并非是SNOMED CT的发明,在ICD和其它编码体系中,也都是存在同义词这样的东西。但不同的是,SNOMED CT的作用不只是要采集数据汇总成概念,而且还要将概念通过适当的方法从新使用人类语言的形式反馈给用户。但当我们要将这些概念从新表达回用户的时候,如何去选择使用哪一个描述呢?

在选择使用描述的时候,我们一般会分两步走。第一,用别名而不用全称。因为在别名中,至少会存在一个不带括号的记录可以使用,所以我们完全木有必要去纠结全称这个问题。第二,就是一旦出现多条记录的时候肿么办。胰十二指肠切除术有九个别名,我们到底用哪个呢?为此,SNOMED CT引入了参考集(RefSet)这个东西。在这个参考集中,SNOMED CT通过语言参考集定义了不同语言中所使用描述的游戏规则。【未完待续...】

@jiangpan
Copy link

jiangpan commented Mar 9, 2015

好东西

@wanghaisheng
Copy link
Owner Author

三个月学SNOMED CT系列 - 到处都有三剑客(五)
2015年3月8日 18:28
SNOMED CT在语言参考集中对部分描述设置了认可代码(Acceptability ID),通过这个信息来标注哪个描述为首选(900000000000548007)或是可接受(900000000000549004)。我们通过下面这个ERD来看一下目前学到的SNOMED CT结构:

语言参考集合是作为SNOMED CT的参考集中的一个重要组成部分。在今后的章节中我会将其作为SNOMED CT扩展详细的给大家介绍。这里只想强调的是它不归属于SNOMED CT的核心数据组成,其使用根据SNOMED CT的实施具体而定。在不同的国家实施中,每个国家可以指定本国的语言参考集。如果在专科实施中,每个专科也可以对于同一个概念设置自己的描述。譬如说对于概念234254000而言,医院甲可以叫做腋下淋巴结扫荡,医院乙可以叫做腋下淋巴结清除。在SNOMED CT-AU的国家发行版本中,目前有104万的有效描述,但仅有59万9千的语言参考集信息。这说明有半数的描述不会在澳大利亚的SNOMED CT实施中实际使用。

除了上面这两类描述之外,目前还有一个叫做定义(definition 900000000000550004)的类别,这个感觉起来就有点相似字典中的名词解释了。至于这个类别最终会有什么用,这个暂时还不知道。至少在澳大利亚发行的SNOMED CT-AU中,还没有使用过。

描述中的文字定义(term)是SNOMED CT核心数据中唯一一个出现人类书写语言的数据项。文字定义采用UTF-8格式以便于支持多种语言。因此,在SNOMED CT中实施中文化从技术上讲是完全可行的。

SNOMED CT中通过概念与描述的关系,在其它的医学编码集中也是出现的,只是表达的方式不同而已。我们拿ICD-O-3中的形态学编码为例:

代码8000/3恶性肿瘤对应存在六种不同的英文表达形式,而Neoplasm, malignant作为首选项排在首位。我们通过下面这个图来看一下ICD-O-3和SNOMED CT的结构对应关系:

8000/3对应SNOMED CT概念86049000
Neoplasm, malignant对应SNOMED CT描述Neoplasm, malignant (primary)
那个对号对应SNOMED CT语言参考集中的首选标注。

相似的信息内容,ICD-O-3使用了一个表,而SNOMED CT却使用了三个表,为什么呢?关于这一点,一句两句还真的说不清。所以我们在今后的学习中,尤其是SNOMED CT的实施阶段慢慢去体会。现在已经初步介绍了SNOMED CT的概念和描述,接下来我们再来看一下SNOMED CT最与众不同的核心部分:关系。【未完待续...】

@wanghaisheng
Copy link
Owner Author

三个月学SNOMED CT系列 - 到处都有三剑客(六)
2015年3月9日 08:59
【关系】Relationships
SNOMED CT中的第三个重要组成成分就是关系。关系这个词有别于其它编码系统中常提到的层次(hierarchy)。至于差别在哪里,我们看下面这个图来加以说明:

图中左侧为层次结构,也就是传统的树型结构。右边是关系结构。两者的区别我们可以总结为:

层次结构每一个子节点一定会对应,且只对应一个父节点。而关系型结构,本身也存在继承关系,但每一个子节点可以对应多个父节点;
层次结构有比较清晰的层次关系。而关系型结构的层次可以出现参差;
层次结构编码系统一般都会在设计时规定好层数。而关系型结构的编码系统没有层次限定的问题;
层次结构的数据库实现为一对多的关系。关系型结构的数据库实现为多对多的关系。

如果我们用最简单的一个字来形容关系型结构的话,那个字我觉得就是『乱』。怎么个乱法呢?我们再看一下几种编码系统对于腋下区挫伤的处理:

相比之下READ编码和ICD-10-CM是多么的简洁明,而SNOMED CT又是多么的乱成一团麻呀。为什么会这样呢?我们还得套用爱因斯坦老先生的那就话:『Everything should be made as simple as possible, not not simpler』(以简示繁,简而不失)。因为SNOMED CT的设计目标和其它层次结构编码不同,所以,它只能简洁到这种『稀里糊涂』的地步了。【未完待续...】

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants