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
Sign in via Google
Sign in via Facebook
Sign in via X(Twitter)
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
Continue with a different method
New to HackMD?
Sign up
By signing in, you agree to our
terms of service
.