解鎖HL7

解鎖HL7

來自專欄健康信息管理5 人贊了文章

HL7,全稱Health Level-7,是健康信息行業中最為重要的數據傳輸標準集合。不論行業內外,很多人估計對其都是聽說過沒見過,所以今兒就稍微扒一扒,快速解鎖一下。

傳輸標準vs術語標準

互通性(Interoperability)的核心分為兩部分:傳輸標準和術語標準。入前所述,HL7是傳輸標準的集合。之所以說是集合,不是因為它制定了不同類別的標準,而是因為它有太多的版本。

所謂傳輸標準,其功效是制定信息在不同系統間或同一系統中流動的時候以何種格式來傳遞。狹義的來講,它定義的是數據的格式,而不是數據的內容(定義內容是術語標準的任務)。打個比方,傳輸標準好比是語法,術語標準好比是辭彙。語法負責成句,辭彙負責達意。

廣義上來講,HL7自身,尤其是在第二版中,也定義了包括性別、證件類別等一部分術語/編碼。因此,有人使用HL7定義的這部分術語/編碼作為其術語標準也不無奇怪。但這部分編碼的功用主要是為了支撐HL7數據傳輸中的基本功能。

定位

HL7標準的制定和維護由總部在美帝的HL7 International負責,在全球多個國家和地區有與其存在曖昧關係的機構團體進行本地化。HL7自身的定位是要做整個健康信息行業的傳輸標準大哥。隨著幾十年的發展,像PIT等各國的很多個土生傳輸標準都紛紛凋謝,HL7的確是越做越強。幾乎是成了臨床信息交換的南霸天。

不過我們稍微回顧一下歷史,健康信息的互通性在數年前其實還是個冷門的東西,真正使用的多集中在實驗室檢驗和影像學檢驗方面的數據交換。而HL7的主要應用場景在前者,DICOM則專門為後者服務。延續至今,HL7仍然無法撼動DICOM在影像學的地位。因此,我們可以說HL7是專註於健康信息非影像學部分的主要傳輸標準。

雜亂

HL7成氣候是在1989年第二版發布之後。從年代可以看出,第二版的格式註定採用了ASCII文本為基礎,使用固定分隔符來區塊話信息的格式。接下來便一個勁的更新,真可謂新三年,舊三年,縫縫補補又三年。二十幾年的功夫從2.1一直弄到了2.8.2。雖然HL7說版本升級是向下兼容,但由於每個版本都需要詳盡都本地化實施細則,所以很多機構都原則了夠用就行的原則而忽略不必要的版本升級。因此,在行業內真正廣泛使用的版本集中在了2.3,2.3.1和2.4。

1995年,XML開始流行,HL7為了趕時髦便開始了第三版的開發,也就是HL7 v3。與之配套專門提供術語服務的Reference Information Model(HL7 RIM)。可惜這個版本並沒有被行業接受。其具體原因很多,不過簡單點說還是和第二版一樣,大家認為夠用就行,XML相比純文本格式除了犧牲效率外還有什麼特殊的優越性嗎?已經可以滿足我們需求了,為啥還要改呢?

那麼在那個時候大家的需求是什麼呢?很簡單,就是用於實驗室檢查結果的傳輸。系統內部需要傳輸預約、財務、病案信息嗎?需要,但是系統內部絕大時候直接讀取這些數據就可以,不要把數據編碼再解碼做脫褲子放屁的事情。那麼系統間需要傳輸非實驗室檢查的數據嗎?答案是否。在那個年代,數據互通性在健康信息系統之間其實是個禁忌,數據壁壘是比較嚴重的問題。

第三版推廣失敗之後,HL7經歷了一段低潮期,接下來痛定思痛,推出了基於第三版XML格式的專用衍生品:用於文檔傳輸的Clinical Document Architecture(HL7 CDA),用於病案小結傳輸的Continuity of Care Document(CCD),用於藥品等傳輸的Structured Product Labeling(SPL)等。由於產品線拉的太長,多出來的應用場景並不多,且隨著信息交換內容細化需求的增加,HL7在2014正式轉向,傾盡全力開始Fast Healthcare Interoperability Resource(FHIR)的推廣。

第二版

我們通常稱其為HL7 v2.x,為純文本格式。下面我們通過實例講解一下:

MSH|^~&|ADT1|MCM|LABADT|MCM|198808181126|SECURITY|ADT^A01|MSG00001-|P|2.3EVN|A01|198808181123PID|||PATID1234^5^M11||JONES^WILLIAM^A^III||19610615|M-||C|1200 N ELM STREET^^GREENSBORO^NC^27401-1020|GL|(91-9)379-1212|(919)271-3434||S||PATID12345001^2^M10|123456789|9-87654^NCNK1|1|JONES^BARBARA^K|WIFE||||||NKPV1|1|I|2000^2012^01||||004777^LEBAUER^SIDNEY^J.|||SUR||-||ADM|A0-OBX|1|NM|^Body Height||1.80|m^Meter^ISO+|||||FOBX|2|NM|^Body Weight||79|kg^Kilogram^ISO+|||||FAL1|1||^Penicillin||Produces hivesAL1|2||^Cat dander|Respiratory distress

首先,每一行代表一個信息段,每一段內使用豎線(|)作為欄位分隔符來劃分信息段(Field)。每一段都是由三個字母起始,用於表明該信息段的內容。上面這個HL7文件共九行七類,分別是:

  • 文件頭(MSH)
  • 事件信息(EVN)
  • 患者信息(PID)
  • 直系親屬信息(NK1)
  • 診療時間(PV1)
  • 查體信息(OBX)
  • 過敏信息(AL1)

從上可以看出,如果統一類別的信息項目超過一個的話,可以重複使用信息段。

MSH|^~&|ADT1|MCM|LABADT|MCM|198808181126|SECURITY|ADT^A01|MSG00001-|P|2.3

我們再分析一下第一行。這一段被分隔符劃分成了12個信息段:

  • MSH 表示這一段為信息頭,是每個HL7信息的開始部分。
  • | 表示欄位分隔符
  • ^~& 這是個字元為設定的組件分隔符、重複分隔符、escape character(中文啥意思來著?)、子組件分隔符
  • ADT1 信息發出方應用程序代碼
  • MCM 信息發出方機構代碼
  • LABADT 信息接收方應用程序代碼
  • MCM 信息接收方機構代碼
  • 198808181126 為信息發出的時間,為1988年8越18日11點26分
  • SECURITY 表示這個信息為保密信息
  • ADT^A01 為信息內容的分類,這個信息使用了組件分隔符(^)分成了兩部分,ADT表示入院、出院、轉診(Admission,Discharge,Transfer),A01表示接診(Admit/Visit)。也就是說這個HL7信息為患者在接診後採集的信息。
  • MSG00001- 為信息標識號碼
  • P 為信息處理代碼,P代表正式產品信息(Production)
  • 2.3 表示這段信息使用的HL7版本號

其餘信息也是按照這個格式進行解析,每一信息段的具體格式在HL7制定版本的標準中有詳細說明。新版本會在既往版本的基礎上添加信息類別或信息段。

第三版

HL7的第三版並沒有像第二版出現那麼多的變化,其原因主要有兩方面:首先就是採用了XML格式之後,文件中信息段的位置和長度限制等都更加靈活,不需要進行細調。其次就是這東西沒有被廣泛的接納,所以也就沒有了繼續更改的必要。下面是一個HL7 v3的文檔:

<?xml version="1.0" encoding="UTF-8"?><POLB_IN224200UV01 xmlns:hl7="urn:hl7-org:v3" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" ITSVersion="XML_1.0"> <templateId extension="VS_RM200901CO01" assigningAuthorityName="HospitalJorgeHUribe"/> <id extension="MSG0000001"/> <creationTime value="20100511220525"/> <interactionId root="2.16.840.1.113883.1.6" extension="POLB_IN224202UV01"/> <processingCode code="P"/> <processingModeCode code="T"/> <acceptAckCode code="NE"/> <receiver typeCode="RCV"> <device classCode="DEV" determinerCode="INSTANCE"> <id extension="HIS001"/> </device> </receiver> <sender typeCode="SND"> <device classCode="DEV" determinerCode="INSTANCE"> <id extension="VSM001"/> </device> </sender> <controlActProcess classCode="CACT" moodCode="EVN"> <code code="POLB_TE004202UV01" codeSystem="2.16.840.1.113883.1.11.20299" codeSystemName="LaboratoryTriggerEventType" displayName="Result Complete"/> <languageCode code="es-co" codeSystem="2.16.840.1.113883.1.11.11526" codeSystemName="HumanLanguage" displayName="Espanol Colombia"/> <subject typeCode="SUBJ" contextConductionInd="false"> <observationBattery classCode="BATTERY" moodCode="EVN"> <id extension="VS12340000"/> <code code="28562-7" codeSystem="2.16.840.1.113883.6.1" codeSystemName="LOINC" displayName="Vital Signs"/> <statusCode code="complete"/> <recordTarget typeCode="RCT" contextControlCode="OP"> <patient classCode="PAT"> <id extension="6537077"/> <patientPerson classCode="PSN" determinerCode="INSTANCE"> <name> <given>ANDRES FELIPE</given> <family>FERNANDEZ CORTES</family> </name> <administrativeGenderCode code="M" codeSystem="2.16.840.1.113883.5.1" codeSystemName="AdministrativeGender"/> <birthTime value="19860705"/> </patientPerson> </patient> </recordTarget> <author typeCode="AUT"> <time value="20100511220525"/> <assignedEntity classCode="ASSIGNED"> <assignedDevice classCode="DEV" determinerCode="INSTANCE"> <id extension="VSM001"/> <manufacturerModelName code="VSM" codeSystem="BiomedicalDevice" displayName="Vital Signs Monitor"/> </assignedDevice> </assignedEntity> </author> </observationBattery> </subject> </controlActProcess></POLB_IN224200UV01>

由於HL7 v3本身真正實施的場景不多,所以就不過多的介紹。從上我們可以看出HL7 v3相較v2在結構上變得更加複雜。雖然也是通過信息段來定義傳輸的信息,但是加入了大量的附加信息。同時在v3中,URN開始被大量的使用。另外就是隨著HL7 RIM的使用,編碼系統(codeSystem)這個概念被引入了進來,這也是術語標準被嵌入到傳輸標準中的正式開始。

HL7 CDA

由於使用HL7 v3替代v2的努力失敗,所以HL7鳥槍換炮的重新包裝一下,推出了專門用於傳輸臨床文件的CDA。因為CDA的文件比較大,這裡只截取部分作為演示:

<ClinicalDocument xmlns="urn:hl7-org:v3" xmlns:voc="urn:hl7-org:v3/voc" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" templateId="2.16.840.1.113883.3.27.1776"> <id extension="c266" root="2.16.840.1.113883.3.933"/> <code code="11488-4" codeSystem="2.16.840.1.113883.6.1" displayName="Consultation note"/> <title>Good Health Clinic Consultation Note</title> <effectiveTime value="20000407"/> <confidentialityCode code="N" codeSystem="2.16.840.1.113883.5.25"/> <setId extension="BB35" root="2.16.840.1.113883.3.933"/> <versionNumber value="2"/>........... <component> <StructuredBody> <component> <section> <code code="10164-2" codeSystem="2.16.840.1.113883.6.1" codeSystemName="LOINC"/> <title>History of Present Illness</title> <text> Henry Levin, the 7th is a 67 year old male referred for further asthma management. Onset of asthma in his <content revised="delete">twenties</content> <content revised="insert">teens</content> . He was hospitalized twice last year, and already twice this year. He has not been able to be weaned off steroids for the past several months. </text> </section> </component> <component> <section> <code code="11502-2" codeSystem="2.16.840.1.113883.6.1" codeSystemName="LOINC"/> <title>Labs</title> <text> <list> <item>CXR 02/03/1999: Hyperinflated. Normal cardiac silhouette, clear lungs.</item> <item>Peak Flow today: 260 l/m</item> </list> </text> <entry> <Observation> <id root="10.23.4573.15877"/> <code code="282290005" codeSystem="2.16.840.1.113883.6.96" codeSystemName="SNOMED CT" displayName="Imaging interpretation"/> <value xsi:type="CD" code="249674001" codeSystem="2.16.840.1.113883.6.96" codeSystemName="SNOMED CT" displayName="Chest hyperinflated"/> <reference typeCode="SPRT"> <ExternalObservation classCode="DGIMG"> <id root="123.456.2557"/> <code code="56350004" codeSystem="2.16.840.1.113883.6.96" codeSystemName="SNOMED CT" displayName="Chest-X-ray"/> </ExternalObservation> </reference> </Observation> </entry> </section> </component> </StructuredBody> </component></ClinicalDocument>

從這個例子中我們可以看出,CDA完全繼承了HL7 v3的結構特性,但是在其內容上主要包括了text段的純文字信息以及附帶了被編碼細化的信息。HL7 CDA內容可以涵蓋從患者病史、查體、用藥到實驗室檢查、病理報告等所有可以記錄在紙質病志上的信息。因為其適用範圍廣,所以被作為區域健康信息交換的標準大量使用在HIE中。

HL7 FHIR

隨著健康數據精準分析和交互性需求的不斷增加,用戶對於基於文本內容的信息交換不再滿足。2014年,HL7正式開始了FHIR的開發道路。今年年初,FHIR第三版,也就是正式意義的成品版本發布。有別於之前的HL7自定義傳輸格式,FHIR制定的是數據格式和應用介面。

由於FHIR定義的是數據格式,所以其具體的文件格式可以多種多樣,XML、JSON、Turtle等都是官方支持的。FHIR採用基於面向對象數據模式,更加符合現在的編程理念。

由於FHIR定義了基於Web API的標準應用介面,提供查詢、添加、修改、刪除等功能。由此,用戶可以更加便捷進行產品開發,尤其是更加有利於基於Web用戶界面的客戶端實施。

下面是一個JSON格式的患者信息FHIR文檔示例:

{ "resourceType": "Patient", "id": "example", "text": { "status": "generated", "div": "<div xmlns="http://www.w3.org/1999/xhtml">
<table>
<tbody>
<tr>
<td>Name</td>
<td>Peter James
<b>Chalmers</b> (&quot;Jim&quot;)
</td>
</tr>
<tr>
<td>Address</td>
<td>534 Erewhon, Pleasantville, Vic, 3999</td>
</tr>
<tr>
<td>Contacts</td>
<td>Home: unknown. Work: (03) 5555 6473</td>
</tr>
<tr>
<td>Id</td>
<td>MRN: 12345 (Acme Healthcare)</td>
</tr>
</tbody>
</table>
</div>" }, "identifier": [ { "use": "usual", "type": { "coding": [ { "system": "http://hl7.org/fhir/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" ] } ], "telecom": [ { "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, "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" } } ]}

目前FHIR已經成為了HL7的主打產品,在很多國家已經被廣泛接受。目前可以說,FHIR就是明確的健康信息傳輸標準的未來。

版權

HL7在開發之初是收取版權費用的。由於這個原因,其推廣收到了一定的限制,特別是在開發v3的過程中。後來HL7痛定思痛,終於在2013年的愚人節開始取消收費。所以現在全世界人們可以放心大膽的使用HL7標準了。

本地化

本地化是任何信息系統實施中不可避免的問題,HL7也是如此。雖然在HL7中定義了具體的格式,但是具體那些數據項是必須使用的,數據項的內容又是如何定義的,編碼系統是哪些等等這些具體信息都需要在本地化過程中制定。沒有本地化,沒有實施細則的HL7是無法真正達到其功能要求的。

術語服務

術語標準作為傳輸標準的搭檔,其關係已經變得越來越緊密。從HL7 v3開始,沒有術語就無法解釋HL7中數據項目的正確含義。特別是在FHIR中,所有的數據項都需要使用URN來指定其使用的術語標準。那麼有人會問目前常用的術語標準有哪些呢?這個問題的答案需要從本地化的實施細則中查找,裡面規定了什麼,就可以使用什麼。

從另一方面來說,現在大部分的術語服務都採用基於FHIR的應用構架。

在文章結束前,筆者需要特彆強調一下雖然FHIR已經成了飛起來的豬,但是在實驗室檢查數據交換這個領域,HL7 v2仍然是主力軍。就如同DICOM依舊把持影像學檢驗領域一樣,它們是不會在短期內被替換掉的,長期看也沒有被替換的必要。在健康信息行業,「夠用就行」是一個不變的法則。


推薦閱讀:

TAG:醫療衛生信息化 | HL7 | 標準 |