Arden Syntax簡單的說就是把醫師的臨床決策思維,用結構化、電子化方式表達出來。既然可行,此決策所需的臨床資料當然是數位化。
若是直接從資料庫的話,那也就沒什麼好討論的。此篇是想用一個MLM來看看,要怎麼從FHIR或CDA R2中取得資料。或許我想表達的是臨床資料是時間性的。
===== MLM =====
title: "Heart Rate Rhythm Monitoring"mlmname: "HeartRateRhythmMonitoring"
version: "1.0"
institution: "Example Hospital"
author: "Dr. Jane Smith"
specialist: "Cardiology"
date: "2024-12-10"
validation: testing
purpose: "To monitor the heart rate rhythm of a patient and provide recommendations"
explanation: "This MLM checks the patient's heart rate and rhythm, and provides recommendations based on the results."
knowledge:
type: data-driven
data:
heart_rate: numeric
heart_rhythm: text
recommendation: text
logic:
evoke:
if exists(heart_rate) and exists(heart_rhythm)
data:
heart_rate := getField("heart_rate")
heart_rhythm := getField("heart_rhythm")
action:
if heart_rate < 60 then
recommendation := "Bradycardia detected. Consider further evaluation and possible intervention."
else if heart_rate >= 60 and heart_rate <= 100 then
recommendation := "Heart rate is within the normal range. Continue regular monitoring."
else if heart_rate > 100 then
recommendation := "Tachycardia detected. Consider further evaluation and possible intervention."
if heart_rhythm == "irregular" then
recommendation := recommendation + " Irregular heart rhythm detected. Consider further evaluation and possible intervention."
message:
"The patient's heart rate is {heart_rate} and the rhythm is {heart_rhythm}. Recommendation: {recommendation}."
<templateId root="2.16.840.1.113883.10.20.22.2.4.1"/>
<templateId root="2.16.840.1.113883.10.20.22.2.4.1" extension="2015-08-01"/>
<code code="8716-3" codeSystem="2.16.840.1.113883.6.1" codeSystemName="LOINC"
displayName="Vital signs"/>
<title>Vital Signs (Last Filed)</title>
<text>
<table>
<thead>
<tr>
<th>Date</th>
<th>Pulse</th>
<th>Heart Rhythm</th>
<!-- other vitals signs could exist here-->
</tr>
</thead>
<tbody>
<tr>
<td>05/20/2014 7:36pm</td>
<td ID="Pulse_1">80 /min</td>
<td ID="Pulsequalifier_1">Heart irregularly irregular</td>
<!-- other vitals sign values could exist here-->
</tr>
</tbody>
</table>
</text>
<entry typeCode="DRIV">
<!-- When a set of vital signs are recorded together, include them in single clustered organizer-->
<organizer classCode="CLUSTER" moodCode="EVN">
<templateId root="2.16.840.1.113883.10.20.22.4.26"/>
<templateId root="2.16.840.1.113883.10.20.22.4.26" extension="2015-08-01"/>
<id extension="21688133041015158234"
root="2.16.840.1.113883.3.42.126.100001.19"/>
<code code="46680005" displayName="Vital Signs" codeSystem="2.16.840.1.113883.6.96"
codeSystemName="SNOMED CT">
<translation code="74728-7"
displayName="Vital signs, weight, height, head circumference, oximetry, BMI, and BSA panel "
codeSystem="2.16.840.1.113883.6.1" codeSystemName="LOINC"/>
</code>
<statusCode code="completed"/>
<effectiveTime value="20140520193605-0600"/>
<!-- Each vital sign should be its own component. -->
<component>
<observation classCode="OBS" moodCode="EVN">
<templateId root="2.16.840.1.113883.10.20.22.4.27"/>
<templateId root="2.16.840.1.113883.10.20.22.4.27" extension="2014-06-09"/>
<id extension="216881330410151584"
root="2.16.840.1.113883.3.42.126.100001.19"/>
<code code="8867-4" codeSystem="2.16.840.1.113883.6.1" codeSystemName="LOINC"
displayName="Heart rate"/>
<text>
<reference value="#Pulse_1"/>
</text>
<statusCode code="completed"/>
<effectiveTime value="20140520193605-0600"/>
<value xsi:type="PQ" value="80" unit="/min"/>
</observation>
</component>
<component>
<observation classCode="OBS" moodCode="EVN">
<templateId root="2.16.840.1.113883.10.20.22.4.2"/>
<templateId root="2.16.840.1.113883.10.20.22.4.2" extension="2015-08-01"/>
<id extension="216881330410151"
root="2.16.840.1.113883.3.42.126.100001.19"/>
<code xsi:type="CE" codeSystem="2.16.840.1.113883.6.1"
codeSystemName="LOINC"
code="8884-9" displayName="Heart rate rhythm"/>
<text>
<reference value="#Pulsequalifier_1"/>
</text>
<statusCode code="completed" />
<effectiveTime value="20140520193605-0600" />
<value xsi:type="CE" codeSystem="2.16.840.1.113883.6.96"
codeSystemName="SNOMED CT" code="248651005"
displayName="Heart irregularly irregular (finding)"/>
</observation>
</component>
</organizer>
</entry>
</section>
這時候情境就要確認:
(1)醫師當時是要處理什麼事情。
有可能就是正要寫Progress Note。然後有收集了一些Vital Signs (也許是從FHIR來),然後一股腦地都丟給MLM(當然不是本篇所示,可以更複雜),然後得回一堆的建議,之後複製到病歷中,產生一份Progress Note。從Progress Note的建議內容來說,是可以有Vital Signs區段。這時候,所有的建議是匯集在同一份臨床文件上。
不管用誰,都得搞定實做。CDS HOOK要怎麼基於MLM來實做呢?這是接著要克服的東西。





