2010-10-01 48 views
0

我目前正在實施類似於醫院內部的網站,醫生可以在其中查看有關其患者的信息。如何更好地組織一個有很多領域的課程?

目前,我有信息的關於每個客戶很多:他的全名,出生年月日,血型,他在那裏生活的日期,疾病他不得不等

我第一次嘗試是形式的東西:

class Client { 
    private string fullName; 
    private Date dateOfBirth; 
    ... 

    public Get/Set FullName() 
    public Get/Set DateOfBirth() 
    ... 
} 

它基本上把一切放在同一個類下。

過了一段時間,我決定也許我應該把類似的概念打包成一個更一般的概念。例如,我可以將userNamepassword封裝爲相同的概念 - 例如,LoginInfo

  1. 如果這樣做,我應該提供客戶端類的所有getters/setter,將工作委託給正確的內部概念,或者我應該爲這些概念本身設置getter?第一種方法將屏蔽外部世界到客戶端類的實現,但也許,我們不會因擁有所有這些內在的概念而贏得那麼多。
  2. Client類之外的代碼應該知道內部使用的不同類型的概念嗎?
  3. 任何其他想法/方法?

我對Client這個班級還有什麼方法不太​​瞭解。也許如果有很多,使用小的內部概念來組合類似的方法,而不是像這樣一個鬆散的耦合大類,那將是一個明智的想法。

Client的數據將全部使用標準數據庫持續存在,如果這有什麼不同。

回答

1

我想說把相關的數據打包成普通的類是很有用的。儘管如此,我只會在Client中提供委託獲取/設置器,以便獲得非常常用的屬性(如果即使這樣,它應該是個案決定)。如果一個概念在問題領域中有意義,那麼也可以將它暴露給外部世界。你的LoginInfo在這方面是一個邊緣細節,但疾病史,健康檢查結果等等是這方面的主要候選人。

我也建議你看看馬丁福勒的優秀Analysis Patterns,它專門爲醫療保健模式寫了一章;你可能會從中得到一些有用的想法。

1

決定如何組織數據時需要考慮的事項:是否有任何跟蹤數據歷史記錄的要求。例如,你需要知道5年前患者的住址是什麼(當然除了知道他們現在的住址外)?如果是這樣,那麼將這個「歷史敏感」數據作爲自己的類別,可能會讓你在路上更容易。當然,有些數據不會「歷史敏感」 - 例如出生日期。 :)

需要考慮的其他事項:患者之間將共享什麼數據?如果您保存有關家庭病史的數據,是否應該在兄弟姐妹中共享這些數據?如果是這樣的話,那麼將這些數據封裝在它自己的對象中會在稍後爲您節省大量的複製/同步痛苦。

這些不是分析數據時唯一的考慮因素。但他們肯定是難題的一部分。