Complex Type這個字眼在R3之後,就不存在了,但我還是習慣用這個字眼。他代表著參考型態,是一堆欄位組合類別。現在是分成了General-Purpose DataTypes、Metadata Types與Special Purpose Datatypes。
先舉個最簡單的範例Coding,下圖是其結構。
他繼承了Element,所以會有id與extension。(實際上他應該是繼承DataType,但他是空的,而FHIR文件都習慣寫繼承於Element)
他有五個欄位,所幸,所有欄位的資料型態都是Primitive。
其程式結構如下圖。
7: 他繼承了ComplexType<T>,其實所有Complex Type除了欄位結構不同外,所有行為模式都是一樣的。
9-13: 宣告Coding所用的欄位,其資料型態都是Primitive。
14-22: 公開屬性可以取值與設值。要注意的是20,他定義了當有屬性內容值變更時,要去呼叫OnPropertyChanged函數,目的是要去更新放在Base類別的_Properties屬性的內容。
23-51: 其他欄位的處理方式跟前者一樣。
60-62: 是建構元,原則上都是丟給父類別來處理。
看過Coding,應該會想到那CodeableConcept是長什麼樣子。其實,架構對了,都是同樣的處理手法。
沒有留言:
張貼留言