2018年12月23日 星期日

HL7 FHIR 資源格式篇 - 說明與結構

在準備要寫Complex DataType時,有些要看懂文件的基本知識還是要先講解。所以只好轉頭來寫最基本的東西了。
==========
其實從UML角度,不管Resource 還是Complex Type,說穿了就是類別。類別就會有屬性,屬性也會參照別的類別,就這麼一直循環下去。HL7 FHIR有個統一的結構表達式,先要看懂這個,那對於Resource或Complex Type就沒什麼障礙了。你自認為要成為標準制定者,要就一定要看得懂。若是程式開發者,除非你想要開發API,否則用別人的SDK,說真的看不懂也沒有多大障礙。

Resoure 文件

所有的Resource文件,大致結構都差不多。主要就是描述這個Resource的應用情境範圍等。
若您是標準制定者,務必要仔細研讀。千萬不要因為欄位差不多,就隨便拿個Resource來用。
而整份文件中,對實作者最重要的就是Resource Content與Search Parameters。但是對標準制定者而言,其他的如編碼或者限制式都很重要。
下圖是以Patient Resource為例的Resource Content.

除了結構外,還包含了UML的類別圖,XML的範本、JSON的範本、Turtle的範例(RDF,另一種標準,但在HL7 FHIR中還沒成熟)。
這邊主要是講解Structure。

Structure


欄位定義

這個表格要先知道每個欄位是什麼意思。
  • Name
Element的名稱。不好意思,有講個沒講一樣。每一個Resource都會有一個獨立唯一的名稱,在這視為根目錄。然後接了一堆的Element(欄位)。有些Element還有sub-element,有些還有[x]符號。有些會有定義資料型態,有些卻沒有。這都得看看每個Element前面那個圖示了。後續會解釋。
  • Flags
這是最讓人討厭的地方。透過這裡的符號,讓每一個Element又多帶了一些資訊。
  • Card.
這個應該很熟悉了。設定最低與最高出現次數,min..max。min =1,是必要。min=0是可選。max >= 1或*(不限次數)
  • Type
這個Element的型態。注意,他有可能是另一個Resource。
  • Description & Constraints
描述說明與限制條件。

圖示定義

  • : 代表這個Resource的根元素。跟XML的概念一樣。
  • : 這個Element的Type會是BackboneElement。他會再定義一些sub-element。
  • : 代表這個Element可有多種Type。NameB[x]會因為應用情境不同,然後決定是nameBType1(Type是TypeB)還是nameBType2(Type是typeC)。
  • : 這個Element的Type是primitive type,他會有Value這個屬性。若是primitive type其名稱首字會是小寫。
  • : 這個Element的Type是complex Type(在R4應該是說非primitive者)。Type的首字是大寫。
  • : 這個的Type一定是Reference,也就是參照到其他Resource。一般會指定能夠參照到哪些Resource。
  • :這個Element的內容已經定義在其他Element了。這邊就不定義,改用連結方式。(上一個是連結到整個Resource,這個是連結到某個Element)
  • : 可以被分割出去的Element,尤其是Card.為[0..*]者,這個定義會放在Profile。在官方文件所舉得例子就很清楚。以Observation這Resource為例,他有個Component Element。我們可以定義這個Observation是血壓,但是在Component中,我們可以在提供限制式在實作標準書(Profile)中增加限制式,要求會有兩個Component,分別是收縮壓與舒張壓。 (see Slicing)

=====以下不好懂。以我現有功力還是無法作很好解釋(待補)=====
    • : A complex extension - one with nested extensions (see Extensibility)
    • : An extension that has a value and no nested extensions (see Extensibility)
    • : A complex modifier extension - one with nested extensions (see Extensibility)
    • : A modifier extension that has a value and no nested extensions (see Extensibility)
    • : The root of a logical profile

    Flage定義

    沒有留言:

    張貼留言