矛盾的觀察

2009 年 3 月 3 日

許多電腦系統建置於儲存資料,並將其轉換為對人類有用的資訊。在執行此動作時,我們自然而然地希望讓這些資訊保持一致。畢竟,一個對事物猶豫不決的電腦系統有什麼用呢?

但有時電腦系統應該記錄矛盾的資料,並協助人類處理這些資料。這個問題在我多年前於英國國家醫療服務體系從事醫療保健工作時,首先浮現在我腦海中。我們正在建構一個醫療保健交付的概念模型,基本上是一個電子病歷的概念架構。

回顧過去,我當然有很多事情現在會做不同的處理方式。但有一件事特別珍貴且重要,那就是這個模型是我、另一位軟體開發人員、兩位醫生和一位護士共同合作的成果。臨床醫生了解這個模型,並在開發過程中扮演舉足輕重的角色,他們不只是被動的審查者。因此,我認為我們發展出的想法在思考臨床從業人員希望在電子病歷中看到什麼方面特別有價值。

臨床醫生非常堅持的一件事是,需要擷取矛盾資訊。我可能有一份來自皇家希望醫院的備註,上面寫著我的血型是 A 型,而另一份來自豐盛姐妹會的備註則寫著我的血型是 B 型。這顯然是無稽之談,血型不會改變。但這並不表示我們無法記錄這兩則資料。在未進一步調查前,我們不知道哪一個是正確的。即使我們再次檢測並確認其中一個,我們也不能隨意丟棄錯誤的那一個,因為它可能是進一步臨床行動的依據。當然,有很多情況下矛盾並不明顯。我們可能永遠無法找出兩則矛盾資料中哪一個是錯誤的,或者可能會發現隨著時間推移而發生的變化極不可能,但並非不可能。

處理此問題的關鍵是,將我的血型表示為一個完全成熟的類別,而不是一個人員類別的屬性,我們稱之為觀察。每項觀察都適用於特定患者,但也會記錄何時進行、由誰進行以及如何進行等資訊。

我們還看到,觀察可以是關於事物的存在,也可以是關於事物的缺失。因此,在某些情況下,可能無法找出我的血型,但可以說它不是 O 型血。我們可以將此表示為對 O 型血不存在的觀察。(我不知道這個範例是否可能或合理,但快速想出實際範例可能會很棘手。)在診斷過程中,觀察事物的缺失通常至關重要。

使用觀察會改變我們確定患者資訊的方式。我們不會只詢問患者的血型,而是查看患者的所有血型觀察。如果它們都相同,那麼我們只需使用該值。如果它們不同,我們需要深入探討。在許多情況下,觀察會隨著時間推移而合理地改變,因此我們可能會查看我體重隨著時間推移的所有觀察,以繪製我的體重變化圖。

儘管我們需要保留矛盾的觀察結果,但我們也需要捕捉到我們認為其中一項是錯誤的情況。有些觀察結果,例如腿部骨折,會隨著時間而變為不正確,但上述的血型範例比較可能是錯誤的。在錯誤的情況下,我們有「拒絕」(或駁斥)一項觀察結果並以另一項取代的觀念。因此,我們可能在 Albion 醫院進行進一步的測試,發現我的血型為 A 型,這項觀察結果將會拒絕豐盛修女會的觀察結果。拒絕一項觀察結果表示我們相信它從未正確過。我們絕不會刪除舊的觀察結果,而是將其標記為已拒絕,並將其連結到 Albion 醫院的觀察結果。

資訊的一項重要特性是它用於指導行為。已拒絕的觀察結果可能已被用作進一步觀察結果的證據,或用於證明干預措施的合理性。在記錄中保留這些連結至關重要,因為一旦觀察結果被拒絕,我們就可以追蹤這些連結來調查後果。如果我們剛剛拒絕的觀察結果是另一項觀察結果證據中的關鍵部分,那麼該觀察結果也應該受到質疑,甚至可能被拒絕。因此,觀察結果形成了一個證據網,我們可以在進一步了解患者的過程中加以審查。

當然,在大部分情況下,我們並不會使用像這樣的複雜架構。我們大多會在我們假設一致的世界中進行程式設計。但有時我們必須擺脫這種舒適的假設。當這種情況發生時,明確的觀察結果就是一個有用的工具

(如果您有興趣進一步了解這部分內容,請參閱 分析模式 的第 3 章。我確信如果現在重新撰寫,我會寫得更好,但核心概念似乎仍然相當正確。我也想在此感謝我在這項工作中的同事:湯姆·凱恩斯、安妮·凱西、馬克·瑟斯和哈辛·提米米)