跳到主要内容

4.1基础模块

基础模块是整个FHIR规范的基本结构,无论以何种方式使用FHIR都会用到基础模块的内容。基础模块包含基础框架、内容管理和数据交换三个类别的资源,涵盖绝大多数的基本文档用于说明规范的使用,如数据类型、扩展等。下面将分别介绍基础模块的内容。

4.1.1 数据类型

FHIR规范定义了一组数据类型并将其分为四种类型:简单数据类型、通用数据类型、元数据类型和专用数据类型,这四种数据类型均继承自Element,为数据类型提供了扩展的基础,下面对几种数据类型进行了简单介绍。

4.1.1.1 简单数据类型

简单数据类型是FHIR中最基础的数据类型,它仅有一个值并且没有子元素,如string、boolean类型等。下图展示了FHIR声明的简单数据类型及其关系。

图片

以Patient.active(患者状态)、Patient.birthDate(出生日期)元素为例,分别展示boolean和date数据类型的表示格式:

{

"resourceType" : "Patient",

... ...

"active" : "true"

"birthDate": "1974-12-25"

... ...

}

4.1.1.2 通用数据类型

通用数据类型是复杂数据类型的一种,它具有多个子元素及后代元素,其子元素或后代元素的数据类型可以是简单数据类型,也可以是复杂数据类型。通用数据类型是可重用的元素簇,基于常用的应用场景定义。FHIR中声明的通用数据类型及其关系如下图所示。

图片

其中,CodeableConcept是一种编码类型,称为编码概念,常常用于表示绑定了ValueSet(值集)的编码元素,它的子元素coding的数据类型Coding也是一种编码类型,称为编码,其结构如下表所示。

结构定义(CodeableConcept)
节点标志约束数据类型节点说明
CodeableConceptΣ
/codingΣ0..*Coding术语系统定义的编码
/textΣ0..1uri附编码的简单描述
结构定义(Coding)
:----:----:----:----:----
/systemΣ0..1uri术语系统标识(值集)
/versionΣ0..1string系统版本
/codeΣ0..1code编码
/displayΣ0..1string编码描述
/userSelectedΣ0..1boolean是否用户选择

表示通用数据类型的元素时,其子元素与数据类型的子元素定义保持一致。这里以Patient.maritalStatus(婚姻状况)元素为例来表示CodeableConcept,如下所示。

{

"resourceType": "Patient",
... ...
"maritalStatus": {
"coding": [
{
"system": "http://terminology.hl7.org/CodeSystem/v3-MaritalStatus",
"code": "M",
"display": "Married"
}
],
"text": "已婚"
},
... ...

}

4.1.1.3 元数据类型

元数据类型是用于传递知识资源的元数据,主要用于术语、一致性和临床定义资源。元数据类型也是一种复杂数据类型,在结构上与通用数据类型相同。FHIR声明的元数据类型及其关系如下图所示。

图片

4.1.1.4 专用数据类型

专用数据类型是指为特殊用途而定义的数据类型,该数据类型主要与FHIR的基础规范有关,目前在FHIR中已经定义了8种特殊用途数据类型,这些数据类型分别定义了资源间的引用规范、资源结构的扩展规范、资源的基础信息等。以下是FHIR中声明的专用数据类型及其关系图。

图片

其中,Reference定义了资源之间如何引用及其引用结构;xhtml和Narrative用于表示人类可读的叙述性文本;Extension用于表示扩展结构;Meta为资源提供技术和工作流上下文的元数据;BackboneElement和ElementDefinition规定元素如何定义及结构;Dosage通常称为剂量,定义了一般的剂量说明信息的结构,通常用于药医嘱/处方/申请、发药配药和用药状态资源中。关于专用数据类型的使用见官网。

4.1.2 资源

4.1.2.1 资源简介

从从 HL7 第 2 版消息规范到 FHIR 资源,医疗保健领域的每个建模计划都将医疗保健领域分解为更小、更易于管理的子域或信息模型片段。资源在本质上都是更大医疗保健信息领域的一个片段。作为FHIR最基本的构建块,资源具有以下特征:

  • 拥有可用于其寻址的标识(URL)
  • 将自身标识为规范定义的资源类型之一
  • 包含资源类型定义的结构化数据
  • 具有随资源内容变化而变化的明确版本
  • 具有多种表现形式(XML、JSON、RDF)
  • 资源可以互相引用
  • 具有下列可选元素和属性
    • 标识符
    • 元数据
    • 基本语言
    • “隐含规则”的引用

资源主要包括标识符、元数据、人读部分、扩展和结构化数据,以Patient资源为例,如下图所示。

图片 1

这些资源可以单独使用,也可以组合使用,通常通过使用资源引用将资源组合在一起来实现特定的用例。

4.1.2.2 资源分类

FHIR将资源分成5个层级:基础(Foundation)资源、基础(Base)资源、临床资源(Clinical)、财务(Financial)资源和专业(specialized)资源。在本书2.1.4中已介绍。

在这些层级的资源中,包含与临床或医疗业务最相关的资源,我们把它分为管理类(Administration)资源、临床类(Clinical)资源、诊断(Diagnostics)资源、药品类(Medications)资源、工作流(Workflow)资源和财务类(Financial)资源。

管理类资源通常由一组基础资源组成,如Patient(患者)、Organization(组织)等,这些基础资源包含了医疗场景中的各类主数据。将在临床、运营、工作流等场景中被其他资源引用;

临床类资源集中关注的是那些表示患者核心临床信息的FHIR资源。这些资源之中所包含的是医疗服务人员在临床医疗/照护服务过程中所经常记载、创建或获取的信息,如AllergyIntolerance(过敏)、Procedure(手术)等;

诊断类资源提供了FHIR中涉及临床诊断的医嘱和报告的相关内容与指南,包括实验室检验、影像检查和基因检测等;

药品类资源主要记录药物的订购、分配、给药和药物使用的记录报表、免疫接种和接种建议、药品信息,如;Medication(药品)、MedicationDispense(发药)、Immunization(免疫)等;

工作流资源主要包括3个类别,分别是requests(请求)、events(事件)和definitions(定义),每个类别的资源都有各自遵循的模式,这些模式为每个类别的大多数资源提供了典型的标准元素;

财务资源支持医疗保健提供者内部发生的成本核算、财务交易和计费,以及医疗保健提供者和保险公司之间发生的资格、登记、授权、索赔和付款,以及报告和保险公司与订户和患者之间的通知,如Account(账)、Claim(索赔)等。

4.1.2.3 资源定义

Resource是FHIR中最基础的资源,除Parameters、Bundle和Binary继承Resource之外,所有资源都继承于Resource,其余资源都继承于DomainResource,DomainResource又继承于Resource。因此资源的继承关系如下图所示:

图片

1)Resource

Resource的具体结构如下图所示:

图片

其中,Resource.id 表示资源的逻辑ID,由存储该资源的服务器分配,用来标识资源,常用于资源引用和REST API中。Resource.meta表示一组元数据,类型为“Meta”,为资源提供技术和工作流上下文。Meta类型的结构如下所示:

图片

其中,元数据每个元素含义如下:

  • Resource.meta.versionId表示资源的版本;
  • Resource.meta.Lastupdated表示资源的最后更新时间,该值等同于HTTP Last-Modified;
  • Resource.meta.source标识资源的源系统 uri,它提供了最少量的Provance 信息,可用于跟踪或区分资源中的信息来源;
  • Resource.meta.profile表示资源应该遵循的规则,是对资源定义(StructureDefinition)的引用;
  • Resource.meta.security 表示应用于此资源的安全标签 。这些标签以特定方式将资源连接到整体安全策略和基础设施,
  • Resource.meta.tag应用于此资源的标签。标签用于将资源与流程和工作流相关联。
  • Resource.implicitRules描述如何使用资源的自定义协议(例如,在构建资源时遵循的实施指南),必须知道并理解实施指南,以便安全地处理内容。

每个资源都可以有一个language元素,该元素使用BCP 47 中定义的代码指定内容的基本语言。提供语言元素以支持索引和可访问性(例如文本到语音使用语言标签)。

2)DomainResource

DomainResource继承于Resource资源,并且除了BundleParametersBinary之外,所有列出的资源都继承该资源,它的内容包含:

  • 具有资源内容的人类可读的 XHTML 表示
  • 可以在资源中包含其他相关资源
  • 可以有额外的扩展和修饰符扩展以及定义的数据

作为一个抽象资源,这个资源永远不会被直接创建;相反,会创建其后代资源。其资源结构如下图所示:

图片

元素的详细含义,见下表所示:

元数据项目类型用法
text(0..1)Narrative一种人可读的叙述,包含资源的摘要,可用于展示资源的内容。叙述不需要对所有结构化数据进行编码,但需要包含足够的细节供人阅读并保证“临床安全”。资源定义可定义叙述中应表示的内容以确保临床安全。
contained(0..*)Resource包含型资源。这些资源除了包含它们的资源之外没有独立的存在——它们不能被独立识别,也不能有自己独立的事务范围。
Extension(0..*)Extension表示不属于资源基本定义的附加信息。为了使扩展的使用安全且易于管理,有一套严格的管理用于扩展的定义和使用。尽管任何实施者都可以定义扩展,但作为扩展定义的一部分,有一组要求必须得到满足。详见扩展章节
modifierExtension(0..*)Extension可用于表示不属于资源基本定义的附加信息,并修改对包含它的元素的理解和/或对包含元素的后代的理解。通常修饰符元素提供否定或限定。为了使扩展的使用安全且易于管理,有一套严格的管理适用于扩展的定义和使用。尽管允许任何实施者定义扩展,但作为扩展定义的一部分,应满足一组要求。处理资源的应用程序需要检查修饰符扩展。修饰符扩展不应更改 Resource 或 DomainResource 上任何元素的含义(包括不能更改修饰符扩展本身的含义)。

4.1.2.4 资源格式

在实际交换中,资源可以用以下格式表示:XML、JSON和Turtle,其中最常用的是XML和JSON,具体的表示方式如下表所示:

XML模型

<ResourceType xmlns="http://hl7.org/fhir" >

<!-- 资源继承的元素:id、meta等 -->

<elementA value="value"></elementA> //简单类型-0..*

<elementA value="value"></elementA>

<elementB ><!-- 数据类型结构 --></elementB> //复杂类型-0.*

<elementB ><!-- 数据类型结构 --></elementB>

<elementC> <!-- 1..* -->

<elementD><!-- 1..1 相关元素 --></elementD>

</elementC>

</ResourceType>

XML示例

<?xml version="1.0" encoding="UTF-8"?>

<Patient xmlns="http://hl7.org/fhir">

  <id value="example"/> 

  <!-- 工作电话-ContactPoint-0..* -->

  <telecom> 

    <system value="phone"/> 

    <value value="(03) 5555 6473"/> 

    <use value="work"/> 

    <rank value="1"/> 

  </telecom> 

  <!-- 移动电话 -->

  <telecom> 

    <system value="phone"/> 

    <value value="(03) 3410 5613"/> 

    <use value="mobile"/> 

    <rank value="2"/> 

  </telecom> 

  <!-- 性别-0..1 -->

  <gender value="male"/> 

  <!-- 出生日期-0..1 -->

  <birthDate value="1974-12-25">

    <!-- 扩展-出生日期时间 -->

    <extension url="http://hl7.org/fhir/StructureDefinition/patient-birthTime">

      <valueDateTime value="1974-12-25T14:35:45-05:00"/> 

    </extension> 

  </birthDate> 

  <!-- 可选数据类型boolean|dataTime-0..1 -->

  <deceasedBoolean value="false"/> 

  <!-- 关联患者-0..* -->

  <link>

    <!-- 关联患者-1..1 -->

    <other>

      <reference value="Patient/123"></reference>

    </other>

    <!-- 关联类型-1..1 -->

    <type value="refer"></type>

</Patient> 

JSON模型

{

"resourceType": "ResourceType", // 资源类型

"elementA": "value", //简单类型-0..1

"elementB": ["value1","value2"], //简单类型-0..*

"elementC": {复杂类型}, //复杂类型-0..1

"elementD": [{复杂类型},{复杂类型}], //复杂类型-0..*

"elementE": {

"elementE-1": {CodeableConcept},

},

"elementF": [{

"elementF-1": {Reference(ResourceType)}

}]

}

JSON示例

{

  "resourceType": "Patient",

  "id": "example",

  "telecom": [

    {

      "system": "phone",

      "value": "(03) 5555 6473",

      "use": "work",

      "rank": 1

    },

    {

      "system": "phone",

      "value": "(03) 3410 5613",

      "use": "mobile",

      "rank": 2

    }

  ],

  "gender": "male",

  "birthDate": "1974-12-25",

  "_birthDate": {

    "extension": [

      {

        "url": "http://hl7.org/fhir/StructureDefinition/patient-birthTime",

        "valueDateTime": "1974-12-25T14:35:45-05:00"

      }

   ]

  },

  "deceasedBoolean": false,

  "link": [

    {

      "other": {

        "reference": "Patient/123"

      },

      "type": "refer"

    }

  ]

}

在XML和JSON模型中,element* 表示资源的标准化元素,在实例中用相应的名称替换即可;元素的子结构由数据类型决定。另外,FHIR不仅仅规定了资源的表示形式,也规定了相应的限制,详见官网。

4.1.2.5 资源引用

资源中定义的许多元素都是对其他资源的引用,引用把这些资源组合起来构建了一个关于医疗保健的信息网络。资源之间的引用通过资源标识符实现,根据标识符类型可以将引用分为两种类型,如下所示:

  • 资源引用(Reference)- 资源之间的一般引用
  • 规范引用(canonical)- 通过规范 URL 引用资源

4.1.2.5.1 一般引用(Reference)

一般引用是指资源元素的数据类型为Reference的引用。通常,至少包含一个reference(字面引用)、一个identifier(逻辑引用)和一个display(文本描述)。此外,它可能包含一个 type(目标类型)。Reference的完整结构如下所示:

图片

1)字面引用(Literal Reference)

reference是字面引用的关键元素-资源由其 URL 标识并寻址。如就诊资源中的subject元素-Encounter.subject对患者资源的引用,如下所示:

<subject>

<reference value="Patient/034AB16" />

</subject>

引用可以是特定于版本的——也就是说,引用可以指向资源的特定版本。例如:

<target>

<reference value="http://example.org/fhir/Observation/1x2/\_history/2" />

</target>

2)逻辑引用(Logical References)

在FHIR 的许多上下文中,应用程序可能知道引用目标的标识符,但应用程序无法将其转换为直接引用实际资源的文字引用。在这种情况下,源应用程序可以提供标识符作为对目标资源实体的逻辑引用。对 SSN 为 000111111的患者的逻辑引用:

<patient>

<identifier>

<system value="http://hl7.org/fhir/sid/us-ssn" />

<value value="000111111" />

</identifier>

</patient>

在处理资源时,应用程序可以直接使用标识符,因为它只需要标识符,或者它可以直接解析标识符。或者,它可能能够使用服务器将逻辑引用解析为对资源的文字引用。

当同时提供逻辑引用和文字引用时,首选文字引用。如果应用程序了解如何解析逻辑引用,则允许(但不要求)处理资源的应用程序检查标识符是否与文字引用匹配。将逻辑引用转换为文字引用的应用程序可以选择保留逻辑引用;或者可以删除它。

4.1.2.5.2 规范引用

许多资源类型都有一个定义的元素“url”,它是在所有使用上下文中始终标识资源的规范 URL。通常,术语一致性知识类资源具有规范URL。规范 URL是引用定义了规范URL的资源实例的首选方式。

引用规范URL的元素通常是canonical类型,目标是引用的资源类型的url元素,如Resource.meta.profile元素,用于引用资源遵循的结构定义,目标资源是StructureDefinition,其值为StructureDefinition.url。结构如下所示。

图片

规范引用片段为:

<profile value="http://hl7.org/fhir/StructureDefinition/my-patient"/>

规范引用可以包含一个版本,以便准确地了解所引用的资源版本。使用“|”将版本附加到引用中,如下:

<profile value="http://hl7.org/fhir/StructureDefinition/my-patient|0.8"/>

请注意,这里的版本指的是StructureDefinition.version 不是StructureDefinition.meta.versionId。在 FHIR 服务器上可以像这样检索目标资源:

GET fhir/StructureDefinition?url=http://hl7.org/fhir/StructureDefinition/my-patient&version=0.8

请注意,如果对规范 URL 的引用没有版本,并且服务器为该值集找到多个版本,则使用引用的系统应选择目标资源的最新版本。服务器应该通过自动检测 |[version] 的存在并执行适当的搜索来支持对规范 URL 的版本特定搜索。一些引用规范 URL 的元素的 targetProfile 为 http://hl7.org/fhir/StructureDefinition/Resource ,在本规范中显示为 canonical(Any)。 此类引用应仅引用如下资源之一。

·ActivityDefinition ·CapabilityStatement ·ChargeItemDefinition ·CodeSystem ·CompartmentDefinition ·ConceptMap ·EffectEvidenceSynthesis ·EventDefinition ·Evidence ·EvidenceVariable ·ExampleScenario ·GraphDefinition ·ImplementationGuide ·Library ·Measure ·MessageDefinition ·NamingSystem ·OperationDefinition ·PlanDefinition ·Questionnaire ·ResearchDefinition ·ResearchElementDefinition·RiskEvidenceSynthesis ·SearchParameter ·StructureDefinition ·StructureMap ·TerminologyCapabilities ·TestScript ·ValueSet

4.1.2.6 Patient资源

资源是FHIR的基础框架,为了使用FHIR为集成需求创建解决方案,实施者必须了解资源的用途及结构,本节以Patient(患者)资源为例详细介绍。其他资源请参考资源列表:http://hl7.org/fhir/R4/resourcelist.html。

4.1.2.6.1 使用

Patient资源涵盖了涉及广泛健康相关活动的患者的数据,包括:

  • 治疗活动
  • 精神病护理
  • 社会服务
  • 孕期护理
  • 护理和辅助生活
  • 膳食服务
  • 跟踪个人健康和锻炼数据

资源中的数据涵盖了有关患者的“世卫组织”信息:其属性侧重于支持行政、财务和后勤程序所需的人口统计信息。由于地域和司法管辖区差异,Patient资源中并不包含患者所有信息(如种族、民族、国籍等),这些问题通过扩展和定义配置文件适应当地需求。

4.4.6.2 资源结构

Patient资源的数据结构如下表:

字段名基数数据类型描述
PatientDomainResource接受医疗服务的个人的信息,继承的元素: id, meta, implicitRules, language, text, contained, extension, modifierExtension
/identifier0..*Identifier业务标识符(例如:身份证号、健康卡号、城乡居民健康档案号)
/active0..1boolean患者记录是否属于激活状态
/name0..*HumanName患者姓名
/telecom0..*ContactPoint患者联系方式(可以是phone
/gender0..1code患者性别
/birthDate0..1date患者出生日期
/deceased[x]0..1boolean或dateTime[x]是Boolean或DateTime数据类型,表示该患者是否死亡或者死亡日期
/address0..*Address患者地址
/maritalStatus0..1CodeableConcept患者婚姻状况
/multipleBirth[x]0..1boolean或integer[x]是Boolean 或integer,表示是否是多胞胎以及多胞胎的出生顺序
/photo0..*Attachment患者的照片
/contact0..*患者的联系人信息
/contact/relationship0..*CodeableConcept患者与联系人之间的关系
/contact/name0..1HumanName联系人的姓名
/Contact/telecom0..*ContactPoint联系人的联系方式
/contact/address0..1Address联系人的地址
/contact/gender0..1code联系人性别
/contact/organization0..1Reference(Organization)与联系人相关的组织机构
/contact/period0..1Period联系人或组织机构的有效期
/communication0..*与患者沟通相关的语言列表
/communication/language1..1CodeableConcept语言编码
/communication/preferred0..1boolean优先选择标志
/generalPractitioner0..*Reference(OrganizationPractitioner)
/managingOrganization0..1Reference(Organization)患者登记机构
/link0..*与患者相关的其他患者或者相关人员
/link/other1..1Reference(PatientRelatedPerson)
/Link/type1..1code两个相关资源的链接类型

其中,Patient.deceased[x]和Patient.multipleBirth[x]分别表示死亡和多胞胎相关信息,[x]表示元素有多种数据类型,且元素的名称及含义随数据类型的变化而变化,如Patient.deceasedBoolean表示患者是否死亡,数据类型是boolean,Patient.deceasedDateTime表示患者死亡日期,数据类型是dataTime。

4.1.2.6.3 约束及注意事项

Patient资源中有以下约束:

ID等级节点描述表达
pat-1RulePatient.contact应该至少包含联系人的详细信息或对组织的引用name.exists()
或 telecom.exists()
或 address.exists()
或 organization.exists()

注意事项:

  • MultipleBirth可以表示布尔值(仅指示患者是否是多胞胎的一部分)或整数,指示实际的出生顺序;
  • 患者记录只能处于以下两种状态之一:使用中(active=true)和未使用(active=false)。正常记录处于活动状态,即它正在使用中。当记录被创建为重复或错误时,active设置为“false”;
  • Link元素用于确定两个或多个患者资源都是关于实际同一患者的;
  • 每种表达方式应该只有一种首选语言(language.preference=true);
  • 患者的联系人有一个organization元素,这仅适用于与组织相关的监护人或与业务相关联系人。

4.4.6.4资源示例

这是一个Patient资源示例,它的人读部分如下所示:

NamePeter James Chalmers ("Jim")
Address534 Erewhon, Pleasantville, Vic, 3999
ContactsHome: unknown. Work: (03) 5555 6473
IdMRN: 12345 (Acme Healthcare)

具体内容如下:

Patient示例

{
"resourceType": "Patient",
"id": "example",
"text": {
"status": "generated",
"div": "<div xmlns=\"http://www.w3.org/1999/xhtml\">\n\t\t\t<table>\n\t\t\t\t<tbody>\n\t\t\t\t\t<tr>\n\t\t\t\t\t\t<td>Name</td>\n\t\t\t\t\t\t<td>Peter James \n <b>Chalmers</b> (&quot;Jim&quot;)\n </td>\n\t\t\t\t\t</tr>\n\t\t\t\t\t<tr>\n\t\t\t\t\t\t<td>Address</td>\n\t\t\t\t\t\t<td>534 Erewhon, Pleasantville, Vic, 3999</td>\n\t\t\t\t\t</tr>\n\t\t\t\t\t<tr>\n\t\t\t\t\t\t<td>Contacts</td>\n\t\t\t\t\t\t<td>Home: unknown. Work: (03) 5555 6473</td>\n\t\t\t\t\t</tr>\n\t\t\t\t\t<tr>\n\t\t\t\t\t\t<td>Id</td>\n\t\t\t\t\t\t<td>MRN: 12345 (Acme Healthcare)</td>\n\t\t\t\t\t</tr>\n\t\t\t\t</tbody>\n\t\t\t</table>\n\t\t</div>"
},
"identifier": [
{
"use": "usual",
"type": {
"coding": [
{
"system": "http://terminology.hl7.org/CodeSystem/v2-0203",
"code": "MR"
}
]
},
"system": "urn:oid:1.2.36.146.595.217.0.1",
"value": "12345",
"period": {
"start": "2001-05-06"
},
"assigner": {
"display": "Acme Healthcare"
}
}
],
"active": true,
"name": [
{
"use": "official",
"family": "Chalmers",
"given": [
"Peter",
"James"
]
},
{
"use": "usual",
"given": [
"Jim"
]
},
{
"use": "maiden",
"family": "Windsor",
"given": [
"Peter",
"James"
],
"period": {
"end": "2002"
}
}
],
"telecom": [
{
"use": "home"
},
{
"system": "phone",
"value": "(03) 5555 6473",
"use": "work",
"rank": 1
},
{
"system": "phone",
"value": "(03) 3410 5613",
"use": "mobile",
"rank": 2
},
{
"system": "phone",
"value": "(03) 5555 8834",
"use": "old",
"period": {
"end": "2014"
}
}
],
"gender": "male",
"birthDate": "1974-12-25",
"_birthDate": {
"extension": [
{
"url": "http://hl7.org/fhir/StructureDefinition/patient-birthTime",
"valueDateTime": "1974-12-25T14:35:45-05:00"
}
]
},
"deceasedBoolean": false,
"address": [
{
"use": "home",
"type": "both",
"text": "534 Erewhon St PeasantVille, Rainbow, Vic 3999",
"line": [
"534 Erewhon St"
],
"city": "PleasantVille",
"district": "Rainbow",
"state": "Vic",
"postalCode": "3999",
"period": {
"start": "1974-12-25"
}
}
],
"contact": [
{
"relationship": [
{
"coding": [
{
"system": "http://terminology.hl7.org/CodeSystem/v2-0131",
"code": "N"
}
]
}
],
"name": {
"family": "du Marché",
"_family": {
"extension": [
{
"url": "http://hl7.org/fhir/StructureDefinition/humanname-own-prefix",
"valueString": "VV"
}
]
},
"given": [
"Bénédicte"
]
},
"telecom": [
{
"system": "phone",
"value": "+33 (237) 998327"
}
],
"address": {
"use": "home",
"type": "both",
"line": [
"534 Erewhon St"
],
"city": "PleasantVille",
"district": "Rainbow",
"state": "Vic",
"postalCode": "3999",
"period": {
"start": "1974-12-25"
}
},
"gender": "female",
"period": {
"start": "2012"
}
}
],
"managingOrganization": {
"reference": "Organization/1"
}
}

4.1.2.7 资源导向

FHIR规范定义了一套资源和用于处理资源的架构。用FHIR作为方案来解决集成问题必须将其映射到资源相关内容。

本节从功能性角度对相关资源进行详细的描述,以帮助实施者了解相关资源的作用、使用范围和相关框架。以下是现实概念FHIR规范中资源概念的映射表:

现实概念示例概念资源
临床所见
实验室检查结果血检,如血常规,肝功能等引用Observation的DiagnosticReport
影响检查结果CT扫描,MRI,X光,超声检查DiagnosticReport(一些会引用Observation)
诊断检查结果心电图,肺功能检查,脑电图Observation(可能是DiagnosticReport)
生命体征体温,血压,心率,呼吸Observation
其他检查结果听诊Observation
肺动脉导管数据肺动脉压Observation
患者相关:过敏和不良反应
过敏食物或药物过敏AllergyIntolerance
临床诊断糖尿病,充血性心力衰竭Condition
不良事件对药剂的不良反应,跌倒,不良手术事件,医院感染等AdverseEvent
病史
主诉咳嗽,疼痛,发烧,疲劳Condition
手术史阑尾切除术,疝修补术Procedure
既往史糖尿病,充血性心力衰竭Condition
既往用药史华法林5mg PO(口服)于2013年10月12日下午3点给药MedicationAdministration
家庭用药华法林5毫克,用药30天,于12/01/2013下达MedicationStatement
个人史性生活史,吸烟史,饮酒史,吸毒史Observation
家族史母亲患有糖尿病FamilyMemberHistory
体征和症状系统回顾-疼痛、发烧Condition
医嘱
实验室检查申请血检,粪便分析ServiceRequest
影响检查申请CT扫描,MRI,X光ServiceRequest
饮食口服饮食NutritionOrder
药物阿司匹林,赖诺普利MedicationRequest
供应轮椅,食品托盘SupplyRequest
护理
护理目标降低跌倒风险,减轻体重Goal(作为CarePlan的一部分)
护理措施护理评估ServiceRequest

4.1.3 扩展

4.1.3.1 扩展机制

FHIR规范的定义是基于整个医疗行业普遍认可的共同需求——它涵盖了不同辖区、不同领域甚至不同功能方法的内容。但对于具体的实施来说,有一些需求并不包含在这些通用的定义中,而且这种情况很常见。因此,FHIR将规范定义之外的需求作为扩展来实现。

FHIR可以从资源、数据类型两个方面进行扩展。在StructureDefinition资源中定义了各个资源之间的“继承”能力,FHIR的扩展性也拥有“继承”能力,也就是“父”一级扩展的能力,在“子”一级中也同样拥有。要注意的是,扩展性指的是可以扩展现有资源中的内容,不能扩展在规范中没有定义的资源,比如不能增加一个名为“Material”的资源。但是,未定义的资源并非完全不可表示,FHIR定义了Basic资源用于表示规范中尚未定义的任何资源类概念。

为了扩展的管理和安全使用,FHIR中的扩展都遵循下面的内容模型,也就是说,只要有Extension类型的元素就可以扩展。

图片

其中,url是一个必填属性,标识了一个可检索的扩展定义,定义了扩展的内容和含义;扩展应该具有值(value[x])或子扩展,但不能同时具有,value[x]中的x表示数据类型,如valueBoolean。

FHIR中的扩展主要分为资源扩展和数据类型扩展,其扩展性见下面章节。

4.3.1.2 资源的扩展

资源的扩展包含扩展新的资源元素和扩展已有的资源元素,两种扩展如下,

1)扩展新元素

在FHIR中,除了Binary、Bundle、Parameters资源,其他所有的资源都继承于DomainResource资源。DomainResource资源的结构如下图所示,我们可以看到其包含一个数据类型为Extension的元素extension,它的基数为0..*,也就是说在大多数资源中,可以添加任意多个extension元素,即可以添加扩展。

图片

如在Patient(患者)资源中添加国籍元素的扩展,其包括国籍代码和国籍有效期两个子元素,如下所示:

图片

在Patient实例中的表示形式为:

{

  "resourceType": "Patient",

  "extension": [

{

      "url": "http://hl7.org/fhir/StructureDefinition/patient-citizenship",

      "extension": [{

          "url": "code",

          "valueCodeableConcept": {

            "coding": [{

                "system": "urn:iso:std:iso:3166",

                "code": "DE"

              }]

          }

        },

        {

          "url": "period",

          "valuePeriod": {

            "start": "2009-03-14"

          }

        }]

    }

 ]

}

2)扩展已有元素

由StructureDefinition资源定义可知,资源中的元素都继承于Element。Element.extension元素赋予资源元素的扩展能力,其结构如下图所示:

图片

可以看到其中也包含了数据类型为Extension的extension字段,即数据类型具有扩展性,并且遵循同样的扩展定义。复杂数据类型扩展和简单数据类型扩展的写法有些不同,如数据类型为HumanName的Patient.name(患者姓名)元素中添加患者姓名类别的扩展,其表示形式如下:

在Patient实例中的表示形式为:

{
"resourceType": "Patient",
.......
"name": [
{
"extension" : [{
"url" : "http://hl7.org/fhir/StructureDefinition/iso-21090-EN-use",
"valueCode" : "I"
}],

"text" : "王康"
"family": "王",
"given" : ["康"]
},
]
}

对于基本数据类型的扩展(如date、boolean)等,同样需要增加extension节点,但是特别注意的是对于JSON格式的表达,我们在字段前添加了下划线_。如数据类型为date的Patient.birthDate(患者出生日期)元素,表示如下:

"birthDate": "1970-03-30",

"_birthDate": {

"id": "314159",

"extension" : [ {

"url" : "http://example.org/fhir/StructureDefinition/text",

"valueString" : "Easter 1970"

}]

}