系統架構設計師論文---架構風格 2021 系統架構設計師備考分享

-- 摘要

       2019年8月,我司承接了某市醫療集團,智慧藥房項目,該項目主要爲集團下屬36家社區衛生服務中心提供藥品統一目錄管理、藥品集中採購、庫存管理、處方合理用藥審覈、藥品配發、自動化發藥設備驅動提供軟件支撐。在該項目中我擔任了軟件架構設計師一職,主要負責該項目的軟件架構設計工作。本文以智慧藥房項目爲例,主要論述了架構風格在項目中的具體應用,在處方審覈模塊中,採用了基於規則的系統風格,將18萬種藥品合理用藥規則作爲基礎規則庫供處方審覈調用,在自動化發藥設備協同中,採用了隱式調用風格,將處方配發任務和設備驅動進行解耦,在藥品採購和配發模塊中,採用了B/S+C/S的混合架構風格,通過使用這些架構風格,提高了軟件設計質量和開發效率,最終項目成功上線,並獲得了用戶一致好評。
 
-- 背景
       根據深化醫藥衛生體制改革規範藥求,推進藥品集中採購,增加藥品的供應保障能力,嚴格監督管理,保障藥品的用藥安全,所有醫療機構開出的處方,必須通過處方審覈後,方可進入劃價計費環節,未經審覈的處方,不得進行計費和配發。2019年8月,我司承接了某醫療集團智慧藥房項目,該項目爲醫療集團下屬36家社區衛生服務中心提供軟件支持,主要分爲藥品供應模塊、藥房管理模塊、處方用藥審覈模塊、藥品配發模塊、設備協同模塊。藥品供應模塊負責藥品庫存預警,供社區衛生服務中心藥房對藥品進行集中採購,並將藥品發送到省採招平臺;藥房管理模塊主要進行一些基礎信息的維護,及關注藥品的庫存管理,藥品批號跟蹤;處方用藥審覈模塊,負責對醫生開出的藥品進行合理用藥審覈,將不合理的處方審覈結果返回給醫生,提醒醫生修改處方;藥口中配發模塊,負責將處方中的藥品進行調配,打印用法用量標籤,確認發藥後扣減相應的庫存;設備協同模塊主要是驅動藥房中的一些自動化發藥設備,將要藥品信息發給設備上位機,根據設備藥品的效期進行排序,通過上位機程序調用下位機,驅動設備出藥。在該項目中我擔任軟件架構設計師職務,主要負責軟件的架構設計及中間件等技術的選型工作。
 --問題回答,根據提幹來
       軟件架構風格描述了某一特定領域中的系統組織方式和慣用模式,反映了領域中衆多系統所共有的結構和語義,並指導如何將各個構件有效地組織成一個完整的系統,提高了架構的複用性,架構風格定義了用於描述系統的述語表和一組指導構建系統的規則,一般分爲數據流風格:批處理、管道-過濾器;調用/返回風格:主程序/子程序、面向對象、層次結構;獨立構件風格:進程通信、事件驅動(隱式調用);虛擬機風格:解釋器、基於規則的系統;倉庫風格:數據庫系統、超文本系統、黑板系統。可以爲從多項目提供通用的解決方案,能夠極大的提高軟件設計的重用方法和加快開發的進程。
--簡介
       在智慧藥房項目中,我使用了虛擬機風格、獨立構件風格以及B/S+C/S混合架構模式;虛擬機風格中的規則系統,能夠在你預先定義好的規則下,執行符合規則的一些行爲,獨立構件風格包括進程通信和隱式調用,減少系統的耦合度,提供了系統的可擴展性。B/S架構風格是基於瀏覽器和服務器的軟件架構,他主要通過HTTP協議進行通信和交互,降低了維護升級的成本,C/S架構風格使得客戶端程序能夠處理更多的業務邏輯,更容易驅動硬件設備。以下正文將重點描述架構風格的應用實施過程和效果。
--以三個維度闡述 
     處方模塊模塊中,採用了虛擬機風格中的基於規則的系統風格,目前現有藥品目錄有18萬種,一個患者在不同的時間或不同的科室就診,每次就診會開出相應的處方藥品,判斷這些藥品之間是否存在相互作用,給藥方式是否正確,是一項巨大的工程,所以在處方審覈模塊中,我使用了虛擬機風格中的基本規則的風格,《中國藥典》、《臨牀藥物治療合理用藥原則》、《配伍禁忌》中對現有18萬種藥品間的合理用藥有明確使用規則說明,將這些藥品的相互作用做爲基礎規則庫,再加上藥品說明書中明確指出的用藥規則及藥師制定的一些自定義規則,規則數據量較大,因此我們選擇了適合處理大數據的非關係型數據庫MongoDB,在醫生開出處方後,將處方中的藥品本位碼和規則庫中的規則進行配對,如果發現有存在相互作用、用法用量有誤等不合理處方時,及時將審覈結果,不合理用藥的原因,發送到醫生工作站,讓醫生修改處方,處方審覈模擬中使用了基於規則的架構風格,大大提高了藥師人工審覈的工作效率,保障了患者的用藥安全。
       在發藥設備協同環節,我採用了隱式調用風格,來簡化構件間的交互,隱式調用風格的思想是構件不直接調用一個過程,而是觸發或廣播一個或多個事件,項目中有多種不同的發藥設備,如果在發藥管理中直接驅動設備出藥,增加了應用系統和設備之間的耦合度,降低了擴展性,新增一臺發藥設備時,不能快速對其進行擴展兼容,因此,項目中採用了開源的MQ消息中間件做邊連接構件,這個是Apache 基金下的核心開源項目 Kafka,配發系統在處方藥品調配時,作爲生產者,將處方中的藥品信息發送給 Kafka,發藥設備作爲消息的消費者,從Kafka中獲取發藥數據。這種方式相對於同步調用的好處就是,消息發送者將消息發給Kafka後,就可以去處理其它任務了,無需等任務處理結果,發藥設備如果在維護情況下,重啓了設備,不會因爲沒收到數據,造成出藥失敗,只需要在啓動後,重新到Kafka中再次消費數據即可,在上文中提到的,處方審覈時,碰到不合理的處方通知醫生,也同樣採用了隱式調用風格。
       在藥師配發藥和發藥設備出藥環境,我採用了B/S+C/S的混合架構風格,B/S的優點:維護方便,系統功能改造後,只需要服務器端程序更新,即可實現所有的用戶同步更新,簡化操作,客戶端只需要安裝瀏覽器,無需單獨安裝系統。輸入系統服務地址就可以打開系統進行操作。缺點:可操控性不強,客戶端不能處理太多的業務邏輯,大都邏輯是由服務端處理完成。所有用戶使用的是同一套WEB程序,很難實現個性化的需求定製。相比較而言C/S的個性化定製和操控性要優於B/S,因此,我們在設備上位機上,選擇了winform+應用服務器的C/S架構。不同的設備所具備的功能不同的,界面設置、功能也大不相同,C/S很好的滿足了個性化定製的需求,而且上位面程序在訂閱到Kafka消息時,會調用下位機PLC程序,驅動設備出藥,這是Web程序無法實現的。在藥房發藥窗口電腦上的配發系統,採用了B/S架構,院內業務需求經常發生變化,採用B/S架構能夠方便業務功能擴展和及時更新,降低了運維成本。
 
 -- 結尾
項目於2019年8月啓動到2020年10月曆時14個月,圓滿完成,順利完成驗收,並取得了客戶的一致好評,該項目運行一年多,也出現過一些小的問題,由於醫院使用的是集團內部局域網,與外網隔離,給排查問題及維護增加了困難,一次發藥設備上的上位機不心小被藥房老師刪除後,不會重新安裝操作,上報我司後,我們聯繫醫院信息科老師,在信息科的老師協助下,對軟件重新進行了安裝,此次事件,導致了設備停止工作了幾個小時,影響了藥房發藥效率。後來我司安排了1名售後維護該項目,這一年內也新增了一些發藥設備,由於選用了合適的架構風格,使得設備的接入及服務的擴展變得非常容易,在售後同事的協助下,系統至今運行穩定。該項目的成功,讓我意識到了使用了架構風格的作用和價值,堅定了我對架構風格應用的信心,合理選擇合適的架構風格,能夠大大的提高了軟件設計的複用方法,加快開發的進程,在項目中起到事半功倍的作用。經過這次項目,我也看到了自己身上的不足之處,在未來還會不斷地更新知識,完善本系統的設計,使系統能夠適應國家醫改的變化需要,這是作爲軟件從業的我爲之努力的動力和方向。
 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章