2024年10月27日 星期日

FHIR SDK(DotNet)- FHIR Type Framework - Choice Type

Choice Type是個美麗又邪惡的小女孩,她的彈性是種讓你無法承受的愛。想在密密麻麻的文件中尋得他的蹤跡,是件苦差事。當你揭開她的神秘面紗,你一定會深深的愛上他。

上一篇已經提到Choice Type 是該面對他的時候。

想要深入瞭解他,得從Extension這個資料型態的文件去瞭解他。


這個value[x] ,尤其是Type欄位的*,她帶著什麼樣的神秘事件呢?

他的意思是說,Extension有欄位叫value,他可以任意一種資料型態。能有多任意呢?以下的都可以。


有注意到了嗎?在JSON中,他的Tag Name(key) 是(欄位名稱+資料型態名稱)而資料型態名稱還得首字大寫。
其他資料型態也有此Choice Type的有Timing的repeat(這是個詭異結構)與Annotation。



謝天謝地,這兩個的Choice Type有限定資料型態。
Choice Type大部份都是出現在Resource中,還好解法皆相同。
==========

程式解法很單純,提供一個ChoiceType當父類別,來處理一切雜事。提供各種情境的建構元。


接著就是複寫來自DataType的函數與實做介面。

這時候,74: IsChoiceType()就得設成true了。

其他最重要的就是88:與89:這兩行。

89:宣告一個抽象函數,讓子類別來告訴父類別,目前這個Choice Type限定哪些資料型態。

88:然後有了GetSupportDataType()這個函數讓建構元來使用,確保抓到屬於這個Choice Type該有的Tag。

這就是子類別的樣子,其實差異只在於SupportType而已。



沒有留言:

張貼留言