IG Analyzer top level design ==== 1. IG 解析與分析 (輸入處理) * 應用程式首先讀取並解析一個 .tgz 格式的 IG 套件。 透過 IGClass 和底層的 IGService,它載入 IG 中所有的 StructureDefinition 資源,以理解其定義的 Profile、邏輯模型等。 * 最關鍵的步驟是,它會從「邏輯模型」中生成一個名為 QList 的內部對應表。這個列表建立了邏輯欄位 (例如 TWBPatient.Name) 與其在 FHIR Profile 中的具體路徑 (例如 Patient.name) 之間的映射關係。這個 QList 是所有後續處理的基礎。 2. 範例資料轉換 (中介處理) StagingService 負責將 IG 中的範例 FHIR 資源轉換為其他格式。它有兩種主要模式: * Staging 模式: 產生一個扁平化的、基於 FHIR 原始結構的 JSON,用於資料預處理。 * FUME 模式: 這是更核心的模式。它會將範例資料轉換成一個鍵值對的 JSON。其鍵 (key) 不是直接使用 FHIR 的欄位名,而是透過 IGClass.GetApplyModelByPath 方法,查詢 QList 對應表,將 FHIR 欄位路徑轉換為目標邏輯模型的欄位路徑(例如,Patient.birthDate 會被轉換成 TWBPatient.BirthDate)。 3. FUME 映射腳本生成 (輸出處理) 這是應用程式最主要的功能。IGClass 透過以下步驟生成 FUME 腳本: * 建立結構樹 (BuildTreeView): 根據所選 Profile 的 StructureDefinition 建立一個完整的元素樹。 * 補全與修復樹 (FixFumeTreeView): 遞迴地補全樹中缺失的節點(例如 CodeableConcept 的 coding 和 system),確保結構的完整性。 * 生成 FUME 文本 (GetFUMEText): 走訪修復後的樹,將其轉換為 FUME 語法。在此過程中,它同樣使用 GetApplyModelByPath 方法查詢 QList,將每個 FHIR 元素映射到其在目標邏輯模型中的對應欄位,並寫入 FUME 腳本中。
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up