FHIR资源之中代码和术语集的使用

来自HL7ChinaWiki
Lin Zhang讨论2016年1月1日 (五) 09:08的版本 概述

(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)
跳转至: 导航搜索

本页面是FHIR技术规范关于在FHIR资源之中使用代码和术语集的描述。

概述

FHIR技术规范的临时徽标

FHIR资源之中的许多元素(或者说数据元)都采用的是代码类取值(coded value,编码类取值;注:为了区别于数据类型的名称,此处故意不采用“代码型取值”或“编码型取值”):也就是其他地方所指定的,用于标识特定明确“概念”的固定字符串(或者说,字符序列)。这些字符序列及其含义可以是在如下地方之一所定义的:

  • FHIR技术规范之中所定义的一套固定的取值
  • 互联网工程任务组(Internet Engineering Task Force,IETF)的RFC(Request For Comments,征求修正意见书)(如MIME类型、语种/语言)
  • HL7所定义的词表来源(v3代码系统、或v2代码表)
  • 外部术语集或本体,如LOINCSNOMED CT
  • 特定应用程序在本地所维护的字典/词典、对照表(查找表)、枚举列表

这里,将所有这些用来定义代码的方式统称为“代码系统(code systems)”。不过,上述列表还远不完整;用来定义代码系统的方式还有很多,而且它们在复杂程度和规模上也迥然各异。

在整个FHIR技术规范里面,将始终把代码类取值视为是由“系统(system,即代码系统)”和“代码(code)”所构成的对子(pair);其中,系统表示的是用于定义相应代码的那部代码系统的一条URL。

关于使用代码类取值的FHIR框架依据的是HL7 v3 核心原则(Core Principles)文档的第5小节当中所定义的基础框架。

当资源之中携带有代码的时候,将会采用如下三种数据类型当中的一种:

代码型数据类型code

实例仅仅表达有代码元素code。相应的系统system则被定义为相应数据元定义的组成部分,但在实例当中并不携带此信息。

编码型数据类型Coding

利用一个代码元素code和一个系统元素system来表示当前代码的定义究竟来自于何处的数据类型。

可编码概念型数据类型CodeableConcept

一种利用普通文本和/或一个或多个编码型数据类型Coding来表达特定概念的数据类型。

对于使用代码类取值的控制(原文章节:1.14.0.1 Controlling the use of Coded Values)

对于采用上述三种数据类型之一的元素(或者说数据元),其中所允许使用的那套代码类取值,被称为“取值集合(value set)”。 无论在何处使用这些数据类型,FHIR技术规范都会将一部取值集合“绑定”给相应的数据元。对于简单代码型数据类型(code)与复杂数据类型(Coding/CodeableConcept)来说,绑定的方法有所不同。

简单代码型数据类型(原文章节:1.14.0.1.1 Simple Code Data Type)

代码型(code)的简单元素要么被绑定到某部其中收录有一系列不同代码(来自某部指定的代码系统,且必要时还会指定相应的版本)的取值集合,要么被绑定到某项负责定义所能采用的那套有效代码的外部标准(关于引用的典型例子包括MIME类型Language Codes < 语言代码 >UCUM < 计量单位统一代码 >等等)。

在所有情况下,数据元的取值必须是上述取值集合或引用标准所定义的代码之一。

请注意下列关于此类代码的其他规则:

  • 当取值集合是由FHIR所定义的时候,其允许取值列表将会被固定在相应的XML Schema当中。
  • 代码之间的比较始终区分大小写,除非是由引用标准所定义的代码,且引用标准对此明确做出了其他规则(比如,不区分大小写)
  • 只有在FHIR技术规范的后续发行版次当中才能对可用代码的列表进行扩充
  • 用于规定在特定语境下将如何特定资源的FHIR概貌资源Profile,可以声明关于可以使用哪些代码的规则,但其不能为相应的数据元定义新增的或附加的代码。

复杂代码类数据类型(原文章节:1.14.0.1.2 Complex Coded Data Types)

CodeableConceptCoding类型的元素(数据元)则会被绑定到负责定义一系列可以使用的代码类取值的取值集合之上。鉴于此类取值集合的规模和复杂性,并不采用XML Schema来强制要求对于有效代码类取值的正确使用。不过,则会利用取值集合资源(Value Set)来为这些取值集合提供正式定义(formal definition,形式化定义);而且,层叠式的一套规则将会被用于控制取值集合对于那些实际的代码类取值的控制的严格程度。在基础的FHIR技术规范当中,绑定(binding)可分为不完全型绑定(incomplete binding)和 示例型绑定(example binding)。

不完全型绑定(原文章节:1.14.0.1.2.1 Incomplete Bindings)

在FHIR技术规范层次上,当对于所应当采用的代码类取值达成共识的时候,就会采用不完全型绑定。对于此类绑定:

  • 编码型数据类型Coding:系统元素和代码元素所构成的取值system/code 应当是相应取值集合当中的代码之一
  • 可编码概念型数据类型CodeableConcept:其中的一个编码型元素coding应当包含相应取值集合当中的一个system/code

当相应取值集合之中的任何代码类取值都不正确时,可以采用某种其他的代码类取值,或者,对于可编码概念型数据类型CodeableConcept可以提供一个文本型替代品(text alternative)。在认识到下列事实的情况下,实施者则可选用规定之外的其他代码:

  • 许可和法律方面的政策可能要求必须或者不能使用特定的代码类取值
  • 即使当可以采用所指定的取值集合时,FHIR也无法事先为所有已知的用例负责

示例型绑定(原文章节:1.14.0.1.2.2 Example Bindings)

当元素(数据元)的含义非常宽泛(如List.code)的时候,或者是当对于所要采用的正确代码尚未达成共识的时候,将会采用示例型绑定。对于此类绑定:

  • 编码型数据类型Coding:系统元素和代码元素所构成的取值system/code 可以是相应取值集合当中的代码之一
  • 可编码概念型数据类型CodeableConcept:其中的一个编码型元素coding可以包含相应取值集合当中的一个system/code

可以采用某种其他的代码类取值,或者,对于可编码概念型数据类型CodeableConcept可以提供一个文本型替代品(text alternative)。取值集合示例的提供旨在帮助实施者理解元素(数据元)的正确用法。基于SNOMED CT之类具有限制性许可协议条款的代码系统的那些取值集合,将仅仅作为示例型绑定来使用。

实施细节(原文章节:1.14.0.1.2.3 Implementation Details)

无论绑定是不完全型还是示例型,当采用特定的概貌资源Profile来描述本地使用方法时,Profile都可以将相应的元素(数据元)绑定到别的某部取值集合之上。当Profile重新定义特定绑定时,不但可以重新定义该绑定,而且对于相应的那些元素究竟能够采用那些代码类取值,Profile还可以做出精确得多的规定(详情请参见绑定控制 < Binding Control >)。

一般来说,期望管辖部门、项目和厂商会共同协作,挑选出那些实际上行之有效的取值集合。如果出现足够多共识,FHIR的后续版本则可能会采用完全型绑定(full binding)来取代示例型绑定。

系统元素system的取值始终区分大小写。关于自己所定义的那些代码究竟是否区分大小写,不同的代码系统会制定各自的规则。请注意,FHIR本身所定义的全部代码都区分大小写,且必须采用所提供的大小写形式(通常都是小写形式,但并非始终如此)来使用这些代码。

对于那些作为FHIR技术规范组成部分而提供的取值集合,对它们的绑定始终都专门针对的是随同FHIR技术规范所发布的相应取值集合的相应版本。通过定义由所枚举的若干代码而组成的简单列表,可以将相应的取值集合封闭起来;或者,也可以按照代码的属性(properties)来收录相应的代码,并同时提供一条非版本特异性的(或者说不依赖于具体版本的),对基础代码系统的引用,而此时,相应的有效代码列表可能会随着时间而增多或者发生变化。

原文链接

注释

下列是原文中用于表示约束强度的情态动词:

  • SHALL:必须
  • SHOULD:应当
  • MAY:可以、可能、可能会

请注意,在本页的中文翻译中,对于此类情态动词都进行了加粗。

参阅

外部链接