==========
其實從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定義
- ?!: This element is a modifying element - see Modifier Elements
- S: This element is an element that must be supported - see MustSupport Elements
- Σ:當你使用_summary這個查詢參數時,這個Element一定會出現。
- I: This element defines or is affected by constraints - see Constraints
- NE: This element cannot have extensions (some infrastructural elements only)
- TU: This element has a standards status of Trial Use (for discussion about mixing standards status in a resource, see Mixed Normative content)
- N: This element has a standards status of Normative
- D: This element has a standards status of Draft
沒有留言:
張貼留言