2024年10月26日 星期六

FHIR SDK (DotNet)- 思考

 什麼是SDK(Software Development kit, 軟體開發套件),他與API的差異在需用於特定的軟體套件、軟體框架、硬體平台與作業系統。所以,這次開發的SDK僅能在DotNet平台下使用。

目前還沒打算開源,先以介紹SDK開發為主,等因緣具足時再來思考這個問題。

===============

FHIR SDK的目的就是協助軟體開發者,能透過一組元件輕鬆駕馭FHIR Resource。R5的Resource有157個,照趨勢發展未來可能還會更多。而SDK就是提供這些Resource的結構,能夠從XML/JSON的字串類型的資料,與物件相互對應。畢竟程式開發中,以物件形式來操作是比較容易的事情。

雖然有157個,其結構是類似的。所以這塊其實有寫了另一個專案,利用T4技術弄個程式產生器,利用程式來產生程式。也就是說未來有了R6,只要結構沒有重大變化,這個SDK可以馬上支援最新版本的FHIR。至於這部份的技術,就看這系列文章的發展,是否有機會也來介紹。

回來原點,雖然Resource有157個,其實他們有遵循了FHIR Type Framework。而SDK的重要核心技術,就是如何在你選定的程式語言下來實踐這個Framweork。


圖中看這個架構,好像一切理所當然,實際套映在程式語言時,有許多關鍵技術需要被克服。例如他的相互錯換宣告模式,下層繼承上層,而上層卻使用用到下層、FHIR資料型態與程式語言資料型態對應等等問題都需要克服。

首先,要先知道這個架構分成兩大部份,一個是基礎的資料型態系列,另一邊是Resource系列。Resource端比較容易理解,其實就是欄位屬性的宣告與使用。

資料型態端其實要分成四大類型。分別是Primitive Type、General-Purpose Datatypes、Metadata Types與Special Purpose Datatypes。但實踐上只有兩大類,Primitive Type與Complex Type。

Primitive Type就是最底層的值,而這個值就是要對應到程式語言的資料型態。他是沒有欄位,只是值的物件。
Complex Type就是有欄位的物件。
從C#程式語言的角度來說,Primitive Type就是「實質類型」,而Complex Type就是「參考類型」。
Resource類型原則上與Complex Type類似,屬於「參考類型」。
========
講到這,如何覺得很簡單,那你就錯了。
因為FHIR這個Extension架構,讓Primitive Type變得很複雜。因為Primitive Type繼承了Element,他卻是Complex Type結構。這部份FHIR有了新的定義。細節就留待下一篇了。



沒有留言:

張貼留言