# FHIR Condition 擴充延伸討論-陳奕翔 ### 以下是一些常見的身心健康問題和狀況,這些狀況可能會在民眾端的PHR(個人健康記錄)中記錄: 1.頭痛: 包括偶發性頭痛和慢性頭痛,如偏頭痛。 2.噁心: 可能是由於消化問題、食物不耐受或情感壓力引起的。 3.焦慮: 包括一般性焦慮症、社交焦慮症等。 4.壓力: 日常生活中的工作、學習、家庭壓力等。 5.消化問題: 包括腹痛、胃部不適、腸道問題等。 6.飲食習慣: 個人的飲食習慣和食物選擇,可能與健康有關。 # 在PHR端的FHIR Condition記錄: 1.較簡化的紀錄: PHR中的Condition紀錄通常較為簡化,主要用於追蹤和記錄一般的身心問題和狀況,如頭痛、噁心、焦慮等,而不是具體的醫學診斷。 2.自我報告: PHR通常會讓患者自己報告身心問題和狀況,以便他們能夠記錄自己的感受和症狀,並追蹤健康趨勢。 3.生活方式和預防措施: PHR可能包括有關生活方式和預防措施的信息,例如飲食、運動、睡眠習慣和藥物使用情況,以幫助個人更好地管理身心健康。 ### 討論擴展了FHIR Condition資源在處理特定症狀時的應用,有助於更全面地記錄、管理和了解患者的健康狀況。這種精細的記錄對於提供個性化的照護和更好地了解患者需求非常重要。 ### 這是目前症狀表單完整的程式碼: ![image](https://hackmd.io/_uploads/H1aP4GQV6.png) ![image](https://hackmd.io/_uploads/BJ_i4zXVT.png) ![image](https://hackmd.io/_uploads/SJfpVz7Na.png) ![image](https://hackmd.io/_uploads/rk8Grf7ET.png) 如何擴充症狀表單的內容? 如果想要擴充症狀表單的內容,可以根據以下步驟擴充 以「發燒」為例: 以下是發燒的FHIR Condition JSON 範例: { "resourceType": "Condition", "subject": { “reference”: “Patient/91baf575-b0ed-46cb-9793-071a94ecc2d2” // 病人 ID替換為實際病人的ID }, "recordedDate": "2023-11-14", // 記錄日期為填寫表單的日期 "code": { "coding": [ { "code": "386661006", // 發燒的 FHIR 標準代碼,這裡使用了 SNOMED CT 的代碼 "system": "http://snomed.info/sct", “display”: “發燒(Fever) ” // 顯示症狀名稱 "severity": { "coding": [ { "code": "24484000", // 用戶選擇的嚴重程度的編碼,這裡使用了 SNOMED CT 的代碼 "system": "http://snomed.info/sct", “display”: “Moderate” // 顯示中度嚴重程度 }, "onsetDateTime": "2023-11-14T08:00:00Z" // 症狀發生的時間,這裡假設是2023-11-14早上8點 } ### 步驟一:增加HTMLtable 標籤在 table 標籤中增加以下程式碼:id、 name 和value需要增加發燒相關的屬性 <tr> <td align="center" bgcolor="#DDDDDD">發燒(Fever)</td> <td align=“center”><input type=“radio” id=“fever_none” name=“fever_severity” value=“none” onclick=“toggleTimeInput(‘fever’)”></td>//這是一個單選按鈕(radio button)當這個按鈕被點擊時,onclick事件會調用JavaScript函數toggleTimeInput(‘fever’),以下三個td標籤也是如此 <td align="center"><input type="radio" id="fever_mild" name="fever_severity" value="mild" onclick="toggleTimeInput('fever')"></td> <td align="center"><input type="radio" id="fever_moderate" name="fever_severity" value="moderate" onclick="toggleTimeInput('fever')"></td> <td align="center"><input type="radio" id="fever_severe" name="fever_severity" value="severe" onclick="toggleTimeInput('fever')"></td> <td align=“center”><input type=“datetime-local” id=“fever_time” style=“display: none;”></td>//這是另一個表格資料,內容是一個日期時間輸入欄位,none表示這個欄位初始時是隱藏的 </tr> 這段程式碼描述了一個表格,用於評估發燒症狀的嚴重程度。使用者可以選擇不同的發燒程度(無、輕微、中度、嚴重),並且在需要時可以點擊來顯示輸入發燒時間的欄位。 也針對JavaScript函式toggleTimeInput(symptom)做說明。 toggleTimeInput(symptom)完整程式碼如下: function toggleTimeInput(symptom) { const severity = document.querySelector('input[name="' + symptom + '_severity"]:checked').value; const timeInput = document.getElementById(symptom + "_time"); if (severity === "none") { timeInput.style.display = "none"; } else { timeInput.style.display = "block"; } } 這段JavaScript函式toggleTimeInput(symptom)是用來控制發燒症狀表格中輸入發燒時間的欄位是否顯示的。 toggleTimeInput(symptom): 這是一個接受一個參數的函式,參數symptom代表症狀的名稱,比如"fever"。 const severity = document.querySelector('input[name="' + symptom + '_severity"]:checked').value;: 這一行程式碼使用document.querySelector來選取被選中的特定名稱的單選按鈕,這個名稱是由symptom和_severity組成的,比如"fever_severity"。.checked表示已經被選中,.value表示它的值,也就是使用者選擇的選項,比如"none"、"mild"、"moderate"或者"severe"。 const timeInput = document.getElementById(symptom + "_time");: 這一行程式碼根據symptom的值來獲取對應的發燒時間輸入欄位,比如"fever_time"。 接下來的if-else語句根據所選的發燒嚴重程度來控制時間輸入欄位的顯示: 如果severity為"none",表示沒有選擇發燒症狀,則timeInput的style.display被設置為"none",使其隱藏不可見。 如果選擇了無之外的的發燒嚴重程度,則將timeInput的style.display設置為"block",使其顯示出來,允許使用者輸入發燒時間。 這個函式的主要目的是根據選擇的發燒嚴重程度來控制發燒時間輸入欄位的顯示或隱藏。 ### 步驟二:增加 symptomsData 物件:在JavaScript中,將新增的「發燒」症狀相關資訊添加到 symptomsData 物件中,以便在提交表單時處理這個症狀的資料。在 postData 函式中,找到 var symptomsData = ,在其後新增以下程式碼: fever: { severity: document.querySelector('input[name="fever_severity"]:checked').value, time: document.getElementById("fever_time").value } 這個程式碼片段的目的是獲取使用者在表單中選擇的「發燒」症狀的嚴重程度和發生時間。這些資料將被整理到 symptomsData 物件中的 fever 屬性下。 ### 步驟三:更新 postData 函式修改 conditionResources:在 postData 函式中,需要更新 conditionResources 陣列,加入「發燒」的相關資訊。在 conditionResources 陣列中,新增以下程式碼: { resourceType: 'Condition', subject: { reference: 'Patient/' + document.getElementById("ID").value }, recordedDate: Time, code: { coding: [{ code: '386661006' }] }, // SNOMED CT 中代表「發燒」的代碼 severity: { coding: [{ code: symptomsData.fever.severity }] } } 這段程式碼的目的是建立一個 FHIR Condition 資源,表示病人出現了「發燒」症狀。這個資源包含了病人資料、紀錄日期、疾病代碼和嚴重程度,這樣就能清楚地描述患者的健康狀態。 ### 這些修改步驟將使您能夠在表單中新增「發燒」作為一個新的症狀,並確保相應的 JavaScript 函數和 FHIR 資源處理這個新的症狀。根據實際需求進行調整。