• 沒有找到結果。

醫療門診資訊系統

N/A
N/A
Protected

Academic year: 2021

Share "醫療門診資訊系統"

Copied!
117
0
0

加載中.... (立即查看全文)

全文

(1)

逢 甲 大 學

資 訊 工 程 學 系 專 題 報 告

醫療門診資訊系統

生: 余長華(四丙)

授 : 謝京華老師

中華民國九十一年十二月

(2)

目錄

目錄••••••••••••••••••••••••••2 圖表目錄••••••••••••••••••••••••4 摘要••••••••••••••••••••••••••7 專案動機••••••••••••••••••••••••8 第一章 導論 1.1 資訊系統•••••••••••••••••••11 1.2 資訊系統構成要素•••••••••••••••11 1.3 資訊系統的商業型態••••••••••••••12 1.4 系統發展生命週期•••••••••••••••15 第二章 系統計畫 2.1 SWOT •••••••••••••••••••19 2.2 系統計畫的步驟••••••••••••••••19 第三章 系統分析 3.1 系統分析的階段步驟 ••••••••••••••26 3.2 需求模組的方法 ••••••••••••••••26 第四章 資料和程序模組

(3)

4.2 利用 DFD 來實作門診資訊系統 ••••••••• 37 第五章 系統設計 5.1 使用者介面 ••••••••••••••••••46 5.2 輸入設計 •••••••••••••••••••49 5.3 輸出設計 •••••••••••••••••••50 5.4 資料設計 •••••••••••••••••••51 5.5 系統架構設計 •••••••••••••••••56 第六章 系統製作 6.1 後端之資料庫系統•••••••••••••••59 6.2 前端之應用程式••••••••••••••••64 6.3 網路上存取 •••••••••••••••••74 第七章 測試 7.1 測試的議題••••••••••••••••••83 7.2 測試的設計••••••••••••••••••83 7.3 測試結果•••••••••••••••••••85 7.4 測試結果討論•••••••••••••••••86 結語••••••••••••••••••••••••••89 參考資料••••••••••••••••••••••••91

(4)

圖表目錄

圖 3-1 三軍總醫院組織架構圖••••••••••••••30 圖 3-2 長庚醫院組織圖•••••••••••••••••31 圖 3-3 澄清醫院組織圖•••••••••••••••••31 圖 3-4 醫療系統主要功能分解圖•••••••••••••32 圖 4-1 處理符號••••••••••••••••••••34 圖 4-2 資料流向符號••••••••••••••••••35 圖 4-3 資料儲存符號••••••••••••••••••36 圖 4-4 外部實體符號••••••••••••••••••36 圖 4-5 門診資訊系統 Context Diagram•••••••••••38 圖 4-6 Diagram 0 •••••••••••••••••••40 圖 4-7 Diagram 1 •••••••••••••••••••41 圖 4-8 Diagram 4 •••••••••••••••••••42 圖 4-9 Diagram 5 •••••••••••••••••••43 圖 5-1 功能鍵介面 •••••••••••••••••••46 圖 5-2 DataCombo 介面•••••••••••••••••47 圖 5-3 錯誤提示 ••••••••••••••••••••47

(5)

圖 5-5 Combo Box•••••••••••••••••••48 圖 5-6 Check Box •••••••••••••••••••48 圖 5-7 Option Button••••••••••••••••••48 圖 5-8 Command Button•••••••••••••••••48 圖 5-9 DataGrid••••••••••••••••••••48 圖 5-10 病患基本畫面••••••••••••••••••49 圖 5-11 掛號畫面••••••••••••••••••••49 圖 5-12 報表畫面••••••••••••••••••••50 圖 5-13 Enterprise Manager •••••••••••••••52 圖 5-14 資料表編輯•••••••••••••••••••52 圖 5-15 資料表編輯結果•••••••••••••••••53 圖 5-16 門診資訊系統 ERD •••••••••••••••54 圖 5-17 概念層資料圖••••••••••••••••••55 圖 5-18 主從式架構•••••••••••••••••••56 圖 5-19 三層式架構•••••••••••••••••••57 圖 6-1 Enterprise Manager(預存) •••••••••••••60 圖 6-2 新增預存程序 ••••••••••••••••••60 圖 6-3 建立新專案 •••••••••••••••••••64 圖 6-4 系統功能階層圖 •••••••••••••••••65

(6)

圖 6-5 功能編輯器 •••••••••••••••••••65 圖 6-6 編輯結果 ••••••••••••••••••••66 圖 6-7 門診時間表管理 Form•••••••••••••••67 圖 6-8 員工資料維護 Form••••••••••••••••67 圖 6-9 掛號 Form••••••••••••••••••••67 圖 6-10 診斷治療 Form •••••••••••••••••68 圖 6-11 專案總管視窗••••••••••••••••••68 圖 6-12 點選 Dataenvironment1 之後畫面••••••••••68 圖 6-13 選擇資料庫引擎•••••••••••••••••68 圖 6-14 選擇資料庫•••••••••••••••••••69 圖 6-15 選擇資料表•••••••••••••••••••69 圖 6-16 診間網頁.htm ••••••••••••••••••74 圖 6-17 Time.asp ••••••••••••••••••••76 圖 6-18 Order.asp••••••••••••••••••••78 圖 6-19 Result.asp••••••••••••••••••••79 圖 7-1 嵌入式寫法 •••••••••••••••••••85 圖 7-2 預存程序寫法 ••••••••••••••••••86

(7)

摘要

理論與實務上的結合是此專題報告的精神所在,從開始選擇專案 的動機,接著如何依照題目廣泛的蒐集各方面資料,〝好的系統分析 是整個資訊系統成功的第一步〞,在系統分析中藉由訪談親自瞭解整 個作業流程,這些都是寶貴的經驗。經由訪談所取得的資料運用〝資 料流程圖(DFD)〞把資料在系統中穿梭的抽象化概念把它具體化描 述出來,這些準備工作都已齊全,接下來就是系統設計。在系統設計 必須不斷的來回參考系統分析來設計使用者介面,輸入、輸出的是那 些資料或資訊,最重要的是設計者本身要以使用者的角色切入,與使 用者結合,設計出來的東西如此才方便使用者操作。系統分析與系統 設計階段完成後,最後進入製作階段,也就是程式碼的撰寫,醫療門 診資訊系統是採主從式架構,所以分為後端資料庫管理系統(MS SQL SERVER 2000)的預存程序撰寫,前端應用程式(MS VB 6.0)的撰 寫,另外也實作網路預約掛號,資料庫在 Web 上存取。一連串下來 系統計畫、系統分析、系統設計、系統製作、系統測試、系統維護也 就是整個系統開發(SDLC)的生命週期,道理也在此。

(8)

選擇此專案的動機

伴隨著二十一世紀的來臨,服務業可說是未來的主流,而金融與 醫療這兩大領域和每個人生活密不可分,最重要的是這些行業資訊化 程度要高,而全民健保的實施,對於各診所推動資訊化工程可說是一 大動力。綜觀醫療資訊化可讓我們資訊人員從三大方面來著手: (一)行政(Administration)方面 醫療診所在行政管理上,關於病患包括掛號、批價、住院、出院、 給藥等,另外關於醫療診所的經營,包括人事、會計、出納、採購等。 (二)醫療方面 醫生在診斷方面運用人工智慧時,如專家診斷系統,應用資訊科 技 , 結合 知識庫 ,包 括專業知識準則 , 進行系統性評估 ,即 時 (Real-time)提供醫護相關人員臨床診斷或醫療上的建議。可應用在 用藥、預防保健、醫療診斷、特殊疾病、檢驗需求或結果解釋等方面。 (三)教育方面 資料庫方面的應用,如醫學文獻資料庫,蒐集來自世界上的醫學 文獻資料,建立起資訊流通,像線上檢索(On-line reference )的功 能可提供最新的資訊。

(9)

基於上述三方面,各醫療診所的共通性及普遍性原則,於是專題 選擇了醫療管理系統即病患看病整個流程,包括掛號、診療等,也是 一般醫療診所的基本功能來實做。另外觀察目前的各診所仍以 DOS 版本為主,未來勢必走向視窗介面,也因此成為選擇關於這方面題材的 重要因素。

(10)

第一章

導論

1.1 資訊系統

1.2 資訊系統構成要素

1.3 資訊系統的商業型態

1.4 系統發展生命期

(11)

1.1 資訊系統( Imformation System)

藉由輸入一些原始資料經由運算、邏輯推論的規則來產生所需的

明確資訊,而這一整個關連性的整合過程模式稱為資訊系統,例如節 目表查詢系統,輸入日期頻道,可得知該頻道當天播放的節目。

1.2 資訊系統構成要素( Information System Components)

資訊系統構成要素有五,硬體(Hardware)、軟體(Software)、 資料(Data)、加工(Processes)、使用者(People),說明如下: 硬體(Hardware) 資訊系統的一些實體架構,也就是可見的實際設備,如電腦、網 路、掃描器、印表機、數位捕捉裝置(capture devices)等。 軟體(Software) 軟體指驅動實體架構的一些程式(program),有系統程式(system software)和應用程式(application software)這兩項。系統程式控制 電腦包括作業系統(operating system)及周邊硬體連接電腦的驅動程 式(device drivers),而遠端方面需要網路作業系統(network operating system 簡稱 NOS),主要控制資料流(data flow)。應用程式針對公

(12)

作效率。 資料(Data) 資料可說是一些事實的紀錄(raw facts),如員工的基本資料, 工作時數等,資訊系統就是把這些資料轉換成有用的資訊,員工資料 與工作時數經由薪資系統可得知員工的薪資資訊。 加工(Processes) 當資料轉換成有用的資訊時此階段為加工,必須要明確定出一些 規則,這些規則包括運算、邏輯推論法則,規則不一樣產生的資訊也 就不同。 使用者(People) 與資訊系統互動的一些使用者,這些使用者通常稱為終端使用者 (end users),包括員工、店家、顧客、管理者等,透過資訊系統來 達成這些終端使用者的需求,所以一個好的資訊系統必須要符合終端 使用者的需求。

1.3 資訊系統的商業型態( Type of Business Information

System)

(13)

能和特徵為導向,大致可分為下列幾種型態:

企業電腦化系統(Enterprise Computing Systems)

主要是針對企業主要營運的業務為需求,這些企業通常較具規模

且營運點分佈廣,例如鐵公路、航空公司的訂位系統以及信用卡給付 系統,都屬於企業電腦化系統。這些大企業藉由資訊系統來增進資料 存取的安全性和可靠性,另外企業資源規劃系統(enterprise resource planning systems 簡稱 ERP)是將企業內部各個部門 ,包括人事、會

計、生產、物料管理、品質管理、銷售與分銷、人力資源管理等,利 用資訊科技整合,可提供成本效益的資訊給企業的管理者幫助公司運 作。

交易系統(Transaction Processing Systems)

無論是交易系統或是線上交易系統都稱為操作型的系統包括顧

客的帳單、應收帳款和認證等過程,最明顯的例子是自動提款機 (Automated Teller Machine 簡稱 ATM),這類系統的特色是在交易 時不可中斷,也沒有分階段式的服務,一筆交易是一氣呵成。

公司支援系統(Business Support System)

公司支援系統主要針對公司內部管理,提供資訊給公司各階層相

(14)

者透過這些資訊來管理公司運作。正因為可產生有用的資訊,需要加 以管理運用,主要對象為公司高層決策主管,此系統稱為管理資訊系 統(management information systems 簡稱 MIS)。

知識管理系統(Knowledge Management Systems)

知識管理系統有時又稱為專家系統(expert systems),這一類系

統藉由連結知識庫和演繹規則來模仿人類如何推理及知識的應用。例 如水庫決策支援系統,提供水庫的蓄水狀況,並分析預測水庫未來一 段時間的流量,限水、休耕的警報。

使用者生產型系統(User Productivity System)

組織各階層的員工使用此類屬於較為寬廣的系統來當作工具,增

加工作產量及執行效率。如區域和廣域網路、視訊會議、文書處理等。

整合型資訊系統(Information Systems Integration)

結合上述各型態的系統。此類行系統最常見的就是售後服務,我

們常看在保固期內,正常使用情況下,產品若有損壞,可向廠商索賠, 而這些正常使用情況便是工程師運用假使哪些動作會有什麼情況發 生( what-if)分析法,對產品的品質控管,此例便包含了交易系統 ( transaction processing systems ) 和 知 識 管 理 系 統 ( knowledge

(15)

1.4 系統發展生命期( The System Development Life Cycle 簡

稱 SDLC)

資訊系統的開發我們常用結構化分析法(structured analysis), 結構化分析法的技術就稱為 SDLC,它是用來計畫和管理系統開發的 整個過程。SDLC 的模組包含下列幾個步驟: 1. 系統計畫(System Planning) 2. 系統分析(System Analysis) 3. 系統設計(System Design) 4. 系統製作(System Implementation) 5. 系統測試(System Test) 6. 系統維護(System Maintenance) 傳統的 SDLC 是屬於瀑布式(waterfall model),以紙上作業為依據, 等待每一階段產生結果稱為終端產物(end product),然後才進入下 一階段,瀑布式缺點無法與使用者需求產生互動,也無法有軟體再使 用的功能,基於如此在當下引進了原形(prototype)設計概念,屬於 互動式(interactive model),計畫、分析、設計能重複替代,使得使 用者、管理者、系統開發者產生互動。 系統計畫(System Planning)

(16)

在這個階段,會有專案(project)負責人,對於系統的需求來自 於高階主管、計畫小組成員或是部門主管,這些人所提出的一些問題 做一些可行性的研究(feasibility study)。 系統分析(System Analysis) 目的在於分析以便瞭解公司整體需求並建立具有邏輯的模組,建 構新的系統。系統分析運用許多模組,如需求模組(requirements modeling),透過面談、全面考察、觀察、樣品等技術來找出實際的 需要(fact-finding),就下來資料模組(data modeling)、程序模組 (process modeling)、物件模組(object modeling)運各式各樣的圖 解法來描述資料轉換的過程,最後彙整出系統需求文件(system requirements document),內容包括管理、替代方案、成本花費和建 議等。 系統設計(System Design) 根據系統分析的需求文件把這些需要區分為輸出有哪些、輸入有 哪些、要用什麼樣的介面格式及先後順序。系統設計也就是說把系統 分析的抽象化轉換成實際上電腦螢幕上秀出的各種型態。 系統製作(System Implementation)

(17)

的好與壞直接影響系統的效能,也是關鍵所在。 系統測試(System Test) 系統的使用情況,使用者實際操作的感覺如何?跟原先預期能夠 達成的目標差距多少?最後彙整成測試報告,作為改進的依據。 系統維護(System Maintenance) 使用者新的需求、更正新的錯誤、系統的升級來做系統的維護, 以適應環境不斷的改變,提高系統的效能。

(18)

第二章

系統計畫

2.1 SWOT

(19)

系統計畫(System Planning)

2.1 SWOT

在規劃一套資訊系統時,事前必須提出系統計畫,對於公司來進 行 SWOT 分析,那麼到底什麼是 SWOT?指公司的長處(strength)、 缺點(weakness)、機遇(opportunities)、面臨的挑戰(threats), 例如: • 公司的主要長處是什麼?是行銷、製造、內部完善管理等;那麼 要如何運用 IT 來加強原有的長處,當然包括人和 IT 基礎設施。 • 公司主要的問題在哪?是作業流程繁雜、資訊延遲等;那麼要如 何運用 IT 來克服這些問題?讓公司營運發揮應有的效能。 • 公司主要的機遇在哪?往往隨著環境的變遷,會出現利機,公司 的經營模式也要隨著變化,透過 IT 來支援面臨的機會。 • 公司主要的挑戰在哪?公司的轉型、環境的不景氣或著推行 IT 的 阻力等;那麼要如何排除這些問題?

2.2 系統計畫的步驟

經由上述的方法,我們可以歸納出下列幾個步驟,並用醫療資訊系統

(20)

來說明:

1.瞭解問題(Problem)或機遇(Opportunity)之所在

觀察目前的各大醫院或是小型診所,其所使用的是早期流通廣

泛的 Novell PC LAN 網路系統,資料庫則為 dBase,是由 Ashton Tate 公司發展出來,也就是 DOS 時期最廣為使用的資料庫管理程式。以 大醫院擁有需多分院,行政中心的資料庫(dBase 檔案)儲存全省各院 區的門診及營運等資料,而全省各院區則各自儲存當地的資料,每 天各分公司的資料必須利用 Batch的作業方式,匯整至行政中心。 隨 著過去幾年門診業務成長,每天大量的門診,或是跨院區、醫療藥 品管理等工作日益龐大,各院區只儲存當地資料且與行政中心的資 料並非同步,因此仍然必須由大量人工作業輔助業務的運作,用電 話溝通或利用傳真機交換及時資料,其衍生的問題也漸趨明顯。舉 例來說,繁瑣的人工文件處理不但耗費時間與人力延誤,並且因人 為疏失造成的問題增加了醫療品質。更重要的是,電腦處理與人工 作業的夾雜造成了工作流程的複雜化。此外,由於 dBase 檔案並不 具備先進資料庫系統的強大功能,它在備份處理、資料存取查詢的 效率及穩定性等方面亦常常造成困擾,影響業務的進行,這些都是 大的醫療院所碰到的問題,但如果是個人私人診所,問題也就單純 化多了。

(21)

2.確定專案的範圍(Scope)和限制(Constraints) 依照醫院的作業流程及架構,醫療資訊系統可從功能方面區分 為門診資訊系統:掛號、病歷、 醫生診間、 門診批價、門診藥局, 門診健保申報系統。住院資訊系統:住院管理、住院批價、單一劑 量、 住院申報、住院醫囑、護囑系統、通報,照會系統。部門系統: 檢驗、 放射線、核醫、病理、內視鏡、營養等系統。管理系統:人 事、 薪資、 庫存、採購、財產、會計、社工、成本會計。常常會 因為各診所的大小和管理的方式而有不同的需求,可大可小,也分 為診所內部(internal)指內部作業,另一是診所外部(external)指 網路預約掛號、取消等。 3.進行實情調查(Fact-Finding) 對於開發系統專案所需要哪些資訊實際去調查並取得,以醫療 資訊系統為例可分為下列幾個步驟: 訪問或蒐集的對象:陳耳鼻喉科、台中澄清醫院、行政院衛生署新 竹醫院、國軍新竹空軍醫院。 訪問或蒐集的題目:組織架構、門診流程、內部管理。 觀察操作情況:各終端使用者操作的情況。 4.決定可行性(Feasibility)

(22)

由於醫療資訊系統龐大,牽涉的層面寬廣,包括門診資訊系統、 住院資訊系統、部門系統、管理系統。衡量專題的時間、人數及軟 體工具的取得,達成的目標可分為: 近程:最少完成的目標,包括門診資訊系統的掛號、病歷功能。 中程:完成門診資訊系統全部功能。(不受專題發表限制) 遠程:完成醫療資訊系統。(不受專題發表限制) 5.基礎設施的估計(Estimate) 資訊系統必須對於軟硬體作一個評估,找出適合的搭配,大醫 療院的 IT 設施應包括: 平臺架構(Platform) 之系統 新醫療資訊系統之系統架構採主從式(Client/Server), 開放系統。 系 統配備如下: 伺服器單元(Server Component) 兩台伺服器 Cluster 方式配置 100GB RAID HD MS NT 系列 中文版 個人電腦單元(Client Component)

(23)

OS: Window 95 or Window NT WorkStation

Application Developing Tool: Visual Basic 5.0

網路單元(NetWorking Component) 乙太網路 + FDDI 光籤網路

資料庫管理單元(DataBase Management System) MicroSoft SQL Server 系列

中介軟體(Middle Ware) ODBC for SQL/Server

此一系統架構具主從架構橫向或縱向發展(Expansion)之能力,同時 亦具備整合 Internet 及 IntraNet 之功能。

一般來說 dbase 架構之三十台 PC 連線硬體約要 250萬, 醫療管理系 統約 250 萬,而 RDBMS & Window Base 架構之三十台 PC 硬體約 要 300 萬, 醫療管理系統約 350 萬以上, 資料庫系統則需 50 萬。 6.期望達到的效益(Benefits) 把 dBase 檔案簡化成 SQL Server 現代化關聯式資料庫後,業務 相關資料的處理規則可直接訂立於資料庫伺服端內,可將醫療院所 作業流程靈活配置於前端應用軟體或是後端資料庫伺服器。隨著系 統運行的成效及使用者的反應,逐步改善或簡化作業的流程 , Windows NT 與 SQL Server 的架構達成了資訊快速的交換與流通,

(24)

可提高下列醫療服務的內容: •提高作業環境品質-速度快(Speed)、準確性高(Accuracy)。 •便利病患資訊查詢-速度快、準確性高。 •改善病歷品質(病歷之完整性、記錄正確、節省時間):紙張病歷雖 為目前醫護人員所習慣使用,但有一些缺點,包括無法多人同時 共用資料、累贅無效率、不利於臨床研究之進行、較被動(病人 一 旦 出 現 異 常 值 時 , 醫 師 無 法 立 刻 知 悉 ) 。 電 子 化 病 歷 (Computer-based Patient Records,CPR)可以避免上述之缺點,然

而目前的問題,則是如何將病歷資料結構化,方便輸出及存取應 用。(此專題不考慮)

•門診掛號之方便性(提供病人多重選擇):門診直接掛號,確定回 診時間,可以幫助慢性病患的追蹤治療。

(25)

第三章

系統分析

3.1 系統分析的階段步驟(System Analysis Phase)

(26)

3.1 系統分析的階段步驟(System Analysis Phase)

系統分析主要是瞭解所建議的專案整體目標是什麼?並且確認

能夠符合系統使用者的需求,以及作為系統設計階段時的一個穩固根 基或是依據。系統分析階段的幾個步驟為:需求模組(requirements modeling)、資料與程序模組(data and process modeling)、物件模

組(object modeling)、臨時過渡到系統設計階段(transition to system design)。

3.2 需求模組(Requirements Modeling)的方法

•訪談(Interviews) 根據上一個階段系統計畫所列出的訪談計畫進行調查,以下是實 際的訪談記錄: 訪問摘要 對象:澄清醫院 時間:五月三日下午 內容:

(27)

1.醫院的組織架構 分為行政和醫療、資才和採購體系,行政下又有病歷室、醫療 收費室、人事、會計、健保。而醫療下有營養室、護理站、門診、 檢查、開刀。還有其他部門無電腦化作業所以不列出。 2.掛號批價 在現場觀察作業人員實際運作的情況,批掛室作業系統功能有 掛號、預約報到、更改時間、電話預約掛號、X 光登記輸入、批價 基本資料維護作業、批價繳費、門診患者基本資料維護。 3.初診的項目 建立病人基本資料,接著進入初複診掛號,項目有看診日期; 早、中、晚,看診醫生、病歷號碼、電話、患者身份、就依序號、 生日、收費別、看診號碼。 4.診間查詢 有些資料涉及醫院內部事務資料,因此不方便對外透露,故僅止於此。 對象:陳耳鼻喉科 時間:五月六日下午 內容: 診所的組織人員:院長、副院長、聘用醫生、代診醫生(屬機動人員)、 護士兼掛號人員。

(28)

診所的需求: 1. 掛號作業 初診:需要資料有姓名、生日、身分證、住址、電話、病歷號碼、 健保卡、體重、藥物過敏、血型、爽約。 複診:功能有查詢病歷方式、電話、健保卡、名子、身份證字號(身 分證輸入錯誤有警告)。 變更資料:新增一筆,刪除一筆 修正:作部份修正。 整理:每隔一段時間,對預約的病患作一整理,早、中、晚各一 次。 全部:顯示就診病患 2. 問診作業 主訴:給病人自我敘述症狀紀錄。 特別記載:藥物過敏。 組合藥物:給醫生自己組合藥物。 3. 員工管理 員工的資料建立管理。 4. 健保申報 六月一日

(29)

需要的資料 1. 病患基本資料檔的格式,即實體的病患資料表格式。 2. 掛號資料表的格式。 3. 員工資料表的格式。 4. 掛號人員實際作業檢視。 5. 病人掛號à看診à批價à拿藥整個流程檢視。 對象:國軍新竹醫院 時間:十月二十一日下午 內容: 1.組織:可分成行政和醫療,行政包括人事、會計、資訊、總務、公 務相關業務,醫療包括各科門診。 2.門診項目:內科、外科、婦產科、牙科、小兒科、眼科、耳鼻喉科、 復健科、精神科、放射科。

3.硬體設備:兩台 server,一台對外(external)屬 web server,一台

對內(internal),內部網路。

PC 在醫療方面,每一診間需兩部 PC,一部醫生,一部

護士,還需一台 printer。

作業系統:在行政方面作業系統是 MS WIN98,在醫療方面作業系統 是 NOVELL,資料庫系統為 dBase。

(30)

•功能分解圖(Functional Decomposition Diagrams 簡稱 FDD) 功能分解圖它是一個表示公司結構及運作方式由上而下的階層 圖,系統分析人員使用 FDD 來說明一家公司組織的結構並將其組織 細分成最小單位及各單位的功能運作。 圖 3-1 三軍總醫院組織架構圖 圖 3-1 為三軍總醫院的組織架構圖,頂端第一層最高管理者為院長, 其次第二層分為醫療和行政兩單位,醫療負責病患診療部分,分為外 科、內科、小兒和婦產部、其它專科等四大類,屬於組織第三層,而 這四大類再細分成診間科別。至於行政方面,分別為病歷室、政戰、 企劃管理部,而病歷室就是負責平日的門診作業。

(31)

另外再來看看其它組織的醫院,圖 3-2 為長庚紀念醫院的組織 圖,規模大了許多,各地區都有分院,組織最上層是決策委員會,其 次一層為行政中心,所掌管的業務與單一醫院行政單位的業務類似, 行政中心下一層為各地院區及兩個相關醫療的子公司汎航通運、長庚 醫療儀器公司,提供長庚醫院相關醫療器具和對外業務,最後是各地 院區有哪些醫院。 圖 3-2 長庚醫院組織圖

(32)

圖 3-3 澄清醫院組織圖 綜觀訪談及上述三家醫院的組織架構圖,我們可以找出共通性, 大致可歸納出門診、住院、部門、管理這四部分,也就是醫療資訊系 統的主要功能(main functions)架構,如圖 3-4 所示,詳細列出門診、 住院、部門、管理這四部分有些什麼功能,以利於在資料及程序模組 中分析資料流程,將會在下一階段介紹。

(33)

圖 3-4 醫療系統主要功能分解圖

(34)

資料及程序模組

4.1 資料流程圖( Data Flow Diagrams)

4.2 利用 DFD 來實作門診資訊系統

在結構化分析中,系統分析人員必須要使用一些虛擬的輔助工具 來 說 明 某 一 個 概 念 , 而 這 個 工 具 就 是 資 料 流 程 圖( data flow

(35)

4.1 資料流程圖( Data Flow Diagrams)

資料流程圖主要是顯示一個資訊系統中有哪些資料,以及這些資

料在系統中流動的情況包括資料怎麼流、流向何方,因此 DFD 並不 能表示出成是的邏輯性以及程序的優先次序,只著重於資料流動的概 念。DFD 有四個基本的符號即處理(process)、資料流向(data flow)、 資料儲存(data store)、外部實體(external entity)。

處理符號(Process Symbol) 處理包括接收輸入的資料,然後產生輸出,而輸出的資料與原先 資料在內容、格式不盡相同。畫法如圖 4-1 所示: 圖 4-1 處理符號 處理符號相當於一個黑盒子(black box),這個黑盒子存放著資料處 理的一些規則或是函數,例如華氏溫度經由計算產稱攝氏溫度,而計 算就是一個處理(process)。

(36)

資料流向符號表示資料移動的路徑,畫法如圖 4-2 所示: 圖 4-2 資料流向符號 資料流向符號常與其它三種符號(process、data store、entity)來搭配 使用,而起資料流向的方向也有所規定,例如與處理(process)符號 來搭配,必須要有一進一出的資料流向,輸入與輸出的資料必須符合 處理所需的資料,例如溫度換算,流入(輸入)的資料為華氏,結果 流出(輸出)為重量,這就不符合規則,輸出攝氏溫度才符合規則。

資料儲存符號(Data Store Symbol)

資料儲存符號主要是用於系統稍後或日後處理過程中必須再次

使用到相關資料,所以必須儲存相關資料,把它保留住,至於儲存的 格式也必須考慮在內。畫法如圖 4-3:

圖 4-3 資料儲存符號

(37)

存的資料,例如病人看病,經由掛號把資料儲存起來,產生掛號清單, 然後醫生看診時,再取出這些掛號清單。

外部實體符號(External Entity Symbol)

外部實體及系統的終端使用者(end user),可能是一個人、部 門或者其它系統,外部實體提供資料給系統或是接收系統產生的資 料、資訊。畫法如圖 4-4: 圖 4-4 外部實體符號 無論兩個實體間或是實體與儲存體間是沒有資料流向的,實體是提供 資料給處理(process)過程,或是接收經由處理所產生的資料或資訊, 例如提款,提款者輸入密碼、提款金額,經由確認處理,然後產生提 款金額及剩餘款項給提款者。

4.2 利用 DFD 來實作門診資訊系統

1. 決定有哪些實體及提供或接收哪些資料 門診資訊系統有四個過程,掛號、看診、批價、領藥,來依序決 定有哪些實體及哪些資料。

(38)

掛號 實體:掛號人員、病歷室 資料:初診病患基本資料(提供),掛號日期、時段、診間(提供), 健保卡、掛號證上有身份證字號和病歷號碼(提供),掛號清 單有病人看診日期、時段、診間、就診號碼(接收),掛號證 (接收),病歷號碼傳給病歷室調出病歷表(接收)。 看診 實體:醫生 資料:藥品參數(提供),疾病參數(提供),門診名單(接收), 國際疾病代碼(接收),藥品清單(接收)。 批價 實體:批價人員 資料:健保卡(提供),就診單(提供),看診金額(提供),病患 看診費(接收)。 領藥 實體:藥劑室 資料:領藥單(接收) 當我們知道實體及提供或接收哪些資料時,畫出如圖 4-5 所示:

(39)

圖 4-5 門診資訊系統 Context Diagram 上下文相關聯圖(Context Diagram) 上頁為何標示 context diagram?相信會有這個疑問,原因這是一 個上下文相關聯的圖,它所代表的意思是由單一的處理(process)可 演變成多個處理過程,也就是由高階(top-level)到低階(lower-level) 細分成最小單元,如此更能瞭解整個功能運作的情形。 2. 分析這些資料是由哪些處理過程產生

(40)

相關的所有資料已找出,接著來分析系統要如何處理這些資料, 分別依序來處理各實體相關資料。 掛號人員實體 初診病患基本資料,掛號日期、時段、診間,健保卡、掛號證,掛號 清單、就診號碼,掛號證這些都與掛號動作有關,因此找出第一個處 理為掛號,掛完號必須要記錄病人掛號資料,此時需要一個儲存體掛 號記錄。 病歷室實體 有了掛號紀錄,病歷室要送病人病歷表給醫生,因此第二個處理為調 閱,調出有哪些人掛號。 醫生實體 首先醫生必須了解自己的門診並患有哪些,所以第三個處理為門診, 透過這個處理把掛號病人區分哪一個門診,各門診醫生可得門診名單 資料。另外藥品參數,疾病參數,國際疾病代碼,藥品清單這些資料 與醫生看病有關,因此可得第四個處理為診斷治療。醫生看診的結果 必須要一個記錄,也就是儲存體處方記錄。

(41)

圖 4-6 Diagram 0 批價人員實體 健保卡,就診單,看診金額,病患看診費這些與批價有關,得第五個 處理批價,批完價必須記錄,有儲存體批價記錄。 藥劑室實體 藥劑師看領藥單上處方籤來配藥,此時需要第六個處理領藥來搭配哪 個病患。

(42)

整個過程如圖 4-6 所示,此為 diagram 0。 3. 細分成最小單元直到無法再分割 掛號 圖 4-7 Diagram 1 如圖 4-7 diagram 1 所示,這是一個掛號過程所分解而來,掛號這個動 作來可分為確認是初診還是複,若初診則建立基本資料,複診則進入 掛號登錄,掛號依看診日期又可分為預約或現場,最後完成掛號處理。

(43)

診斷治療 圖 4-8 Diagram 4 如圖 4-8 diagram 4 所示,這是由診斷治療分解出四個處理,首先經由 診療可區分為診斷和治療,診斷就是要找出病因判斷哪種疾病,而治 療就是對症下藥即開藥,最後經由匯集成為處方籤。 批價

(44)

圖 4-9 Diagram 5 如圖 4-9 diagram 5 所示,這是由批價動作分解出三個處理,費用分為 藥品價和醫療價,由處方籤先計算藥品價,在與醫療價相加即病患看 診費,需要儲存體病患看診費記錄,經由批價登錄可找出病患看診費。 以上是關於門診資訊系統整個 DFD 圖。想畫好 DFD 圖除了事先 的調查外,畫圖工具也是不可缺少,本專題所使用的畫圖工具為 MS VISIO 2002。

(45)
(46)

第五章

系統設計

5.1 使用者介面( User Interface)

5.2 輸入設計( Input Design)

5.3 輸出設計(Output Design)

5.4 資料設計(Data Design)

5.5 系統架構設計

(47)

系統設計根據之前的系統分析,使用者的需求來進行使用者介 (user interface)、輸入(input)、輸出(output)、資料(data)的 設計,以下分別說明。

5.1 使用者介面( User Interface)

在使用者為中心的系統,必須要區別輸入、輸出、介面自己本身 這三者的模糊關係,許多使用者工作在以系統為中心來執行他們每天 資料的輸入,資料顯示輸出到螢幕及資料查詢等工作,所以要能夠讓 使用者在執行工作時操作系統產生良好的互動,即人機互動(human computer interaction 簡稱 HCI),因此用者介面設計是系統設計的第

一步。 使用者介面設計原理 使用者介面設計大致可朝下列方向來著手: • 容易明白的介面 讓使用者容易明白這個圖示或是按鍵的功能是什麼?便於使用 者操作系統。如圖 5-1 所示: 圖 5-1 功能鍵介面

(48)

圖 5-1 總共有八個按鍵,每個按鍵都顯示其功能,讓使用者一目了然, 要離開便按下離開功能鍵。 • 資料輸入量要少 資料輸入量少,越能減少使用者在輸入資料時發生錯誤,如圖 5-2 所示: 圖 5-2 DataCombo 介面 這是一個下拉式選單,使用者只需選取想要的日期,不必輸入“星期 一”這三個字。 • 錯誤要能提示 有時使用者操作錯誤,若無操作錯誤提示,使用者並不能馬上明 白錯誤在哪?將導致工作停頓,若有提示,很快就可重新操作。如圖 5-3 所示: 圖 5-3 錯誤提示 圖為使用者操作錯誤的提示,即使用者沒輸入日期,此時只要再重新 輸入日期即可。 使用者介面控制項

(49)

一般較常使用的控制項如下: Text Box 如圖 5-4 所示,可在長條內輸入文字或數字。 圖 5-4 Text Box Combo Box 如圖 5-5 所示,可選擇所列出的選項。 圖 5-5 Combo Box Check Box 如圖 5-6 所示,打勾為選項。 圖 5-6 Check Box Option Button 如圖 5-7 所示,圈點為選項。 圖 5-7 Option Button Command Botton 如圖 5-8 所示,按鍵都具有其功能性。 圖 5-8 Command Button DataGrid 如圖 5-9 所示,以行列式顯示資料。 圖 5-9 DataGrid

(50)

5.2 輸入設計( Input Design)

考慮到系統本身需要輸入哪些資料,不同的資料會有不同的輸入 方式。大致有下列幾種方式: 鍵盤 使用鍵盤打字的方式來輸出資料,在 text box 中以鍵盤方式輸入 資料,如圖 5-10 所示,紫色即輸入的位置。 圖 5-10 病患基本資料畫面 滑鼠 游標點選功能鍵,如下圖所示,滑鼠點選牙科。

(51)

觸摸式螢幕 使用者藉由觸摸螢幕點選所需要的功能鍵。 掃描器 透過掃鼻器來捕捉實體本身的資料。

5.3 輸出設計(Output Design)

指系統會產生哪些資訊或著是資料,這些又要以何種方式輸出, 最常見的就是報表,或直接由螢幕輸出。 報表設計原理 圖 5-12 報表畫面 如圖 5-12 所示,報表包含幾種要素: 報表表頭(Report Header)

(52)

報表的標題、日期等,如上圖的逢甲診所、掛號清單、製表日期 屬之。 報表結尾(Report Footer) 報表上若為一列列單價金額,最後總計金額即為報表總計。 頁表頭(Page Header) 每頁都有欄位來識別各欄位資料的屬性,如上圖的姓名、看診日 期、時段、診間、醫生、看診號碼。 頁結尾(Page Footer) 最底下有顯示第幾頁即為頁長度。

欄位排列方式(Column Heading Alignment) 每一個欄位的資料是靠左、中、右標齊。

5.4 資料設計(Data Design)

一個檔案所代表許多資料的紀錄,這些資料包含人、地、物、事 件,而這些資料便與資訊系統產生互動,關於資料的設計,我們可運 用資料庫系統 SQL SERVER 2000 來達成。 建立資料表 首先必須要回顧前面的 DFD 圖,圖中標示著資料即我們將要建 立的資料表,由 DFD 圖可知需建立病患資料表,操作為開啟資料庫

(53)

開始→程式集→Microsoft SQL Server→Enterprise Manager 最後如圖 5-13 所示: 圖 5-13 Enterprise Manager 游標移至資料表按下滑屬右鍵→新增資料表,結果如圖 5-14: 圖 5-14 資料表編輯 接著決定病患資料表要有哪些欄位,一個病患資料表必須要有病歷號

(54)

碼 paint_no;資料為整數型態長度為 4,病患姓名 paint_name;資料 型態為不固定字元長度為 10,生日 paint_birth;資料型態為日期長度 為 8,身份證字號 identify_code;資料型態為固定字元長度為 10,戶 籍地址 address_alwaya;資料型態為不固定字元長度為 60,聯絡地址 address_now;資料型態為不固定字元長度為 60,電話 tel_no;資料 型態為不固定字元長度為 10,血型 blood;資料型態為不固定字元長 度 為 4, 性 別 sex; 資料型態為固定字元長度為 2, 先 天 疾 病 nature_paint;資料型態為文字敘述長度為 16,藥物過敏 medicine;資 料型態為文字敘述長度為 16。把這些欄位分別輸入到資料行名稱中, 最後結果如圖 5-15: 圖 5-15 資料表編輯結果

(55)

其中第一欄位有鑰匙標誌表示主鍵(primary key)。

實體關係圖(Entity-Relationship Diagrams 簡稱 ERD)

實體關係圖主要是描述系統中實體與實體間有什麼關係,其中矩 形圖形代表實體,菱形看作動詞,表示實體與實體間的動作關係,實 體與實體間關係有一對一(1-1)、一對多(1-M)、多對多(M-N) 這三種。 圖 5-16 門診資訊系統 ERD 圖 5-16 為門診資訊系統 ERD,病人與掛號單是掛號關係,一個病人 可以有好幾筆的掛號記錄。病人與門診時間的關係是查詢動作,病人

(56)

可以查詢好幾筆的門診時間,而一筆門診時間有可能很多病人查詢。 病人與處方籤的關係是領取動作,一個病人可領取許多的處方籤即看 兩診以上。醫生與處方籤的關係是開立動作,一個醫生開許多的處方 籤。醫生與門診時間是看診的動作,一個醫生有好幾個門診時間,診 間與門診時間是開診動作,一個診間有好幾個門診時間,診間與醫生 是多對多關係。

概念層資料圖(Conceptual Data Diagram)

與 ERD 十分類似,只不過實體的表示方式更進一步顯示其有哪

些欄位。

(57)

5.5 系統架構設計

主從式架構(Client-Server Architecture)

圖 5-18 主從式架構

隨著個人電腦的更能越來越強,價格也便宜,也就越顯主從式架

構的優點,在主從式架構中,如圖 5-18,每部電腦可從事自己單一的 工作,基於此種模式,把資料庫管理系統(database management system 簡稱 DBMS )分離開來,形成用戶端和伺服器端,用戶端存放著應 用程式,伺服器端存放著 DBMS。

三層式模型(Three Tier Model)

兩層式是用戶端與資料庫直接聯繫,而三層式是把用戶端應用程

式的商業規則獨立開來,存放在一個伺服器中,此伺服器稱為應用伺 服器,總共分為用戶端、應用伺服器、資料庫伺服器,如圖 5-19。 用 戶 端 :使用者服務程式,直接與使用者產生互動,來呈現給

(58)

使用者所需要的資訊。 應用伺服器 :商業應用程式存放著商業運算規則,一些經由用戶端 傳來的參數在此計算,進一步確認與資料庫資料更 新,保持一致性。 資料庫伺服器:存放著 DBMS,接受來自用戶端一些查詢的指令。 圖 5-19 三層式架構 醫療資訊系統等到完成應用程式開發之後,再將應用程式中相關商業 規則抽離開來放在應用伺服器,使資料庫伺服器的負荷降低。

(59)

第六章

系統製作

6.1 後端之資料庫系統製作

6.2 前端之應用程式製作

(60)

系統製作可分為兩部分,後端和前端,後端指伺服器端存放著資 料庫系統 SQL SERVER 2000,前端則是客戶端,通常是一些應用程 式,以 MS Visual Basic 6.0 為應用程式之開發工具。

6.1 後端之資料庫系統製作

後端 我們除了把原始資料定義,並利用資料庫系統把這些資料建成資 料表,再來就是處理資料表與資料表間相互的關係,此時必須建立預 存程序(stored procedure)。 預存程序(Stored Procedure) 預存程序是一個利用 SQL 敘述所撰寫的程式,經過事先編譯之 後,儲存在資料庫中。我們在前端對於後端資料庫進行查詢時,在撰 寫應用程式時,SQL 語法是以嵌入的方式到程式中,預存程序的好處 是對於資料庫做相同的動作時如查詢,在前端應用程式中呼叫預存程 序,把一些參數傳入預存程序,把執行結果傳回即可,不必在應用程 式中寫一大堆的命令式,浪費空間,而且要更改也只需更改預存程序 即可,另一方面預存程序不僅可在伺服器端執行,也可透過網路來執

(61)

行遠端 SQL SERVER 上的預存程序,如此便可減少網路的流量。 撰寫預存程序 1. 打開 SQL順序為開始→程式集→MicroSoft SQL Server→Enterprise Manager。直到如圖 6-1 所示: 圖 6-1 Enterprise Manager(預存) 2. 點選預存程序→滑鼠右鍵→新增預儲程序,直到如圖 6-2 所示:

(62)

圖 6-2 新增預存程序 3. 此時可開始寫預存程序,預存程序的基本語法如下: CREATE PROCEDURE [預存程序名稱] @參數名稱 資料型態 AS . . 此區間為 SQL 敘述 GO 門診資訊系統之預存程序 門診資訊系統之預存程序依序為: 1.deptime 預存程序

CREATE PROCEDURE deptime

@num integer, @num1 integer, @num2 integer, @num3 integer output AS

select @num3 = doctor_no from timetab where

(63)

(dayth = @num ) and (block_time = @num1) and (dep_no = @num2) GO 此 預 存 程 序 主 要 是 從 timetab 資 料 表 中 找 出 醫 生 的 代 碼 (doctor_no),四個參數分別為@num 資料型態為整數,表示星期 幾(星期日到六)。@num1 資料型態為整數,表示時段(上午、 下午、晚上)。@num2 資料型態為整數,表示診間。@num3 資料 型態為整數,輸出的值,表示醫生的代碼。 2.deptime1 預存程序

CREATE PROCEDURE deptime1

@num datetime, @num1 integer, @num2 integer, @num3 integer output

AS

select @num3 = count(doctor_no) from otake

where (see_date = @num) and (block_time = @num1) and (dep_no = @num2) GO 此預存程序是從 otake 資料表中找出醫生,用 count 來找出來記數有 幾個人掛相同的醫生,即可知道診間有幾人,參數所代表的意思跟 低各預存程序一樣。 3.checkpaint 預存程序

CREATE PROCEDURE checkpaint

@num datetime, @num1 varchar(6), @num2 varchar(10) AS

select * from take

where (@num = see_date) and (@num1 = block_time) and (@num2 = dep_name)

GO

(64)

所有掛號病患,一一檢查看有沒重複掛號。 4.corder 預存程序

CREATE PROCEDURE corder @num integer

AS

select * from take

where (@num = paint_no) and (see_date > (getdate()-day(1/2))) GO

此預存程序從資料表 take 中查詢預約資料(排除當天日期之前的預 約),看診日期要大於查詢的日期。

5.deptime2 預存程序

CREATE PROCEDURE deptime2

@num datetime, @num1 varchar(6), @num2 varchar(10) AS

select * from take

where (@num = see_date) and (@num1 = block_time) and (@num2 = dep_name) order by see_no GO 此預存程序跟第三個預存程序一樣,但是是依照看診號碼(see_no) 排序。 6.selnet1 預存程序

CREATE PROCEDURE selnet1

@num integer, @num1 integer, @num2 integer AS

select * from timetab

where (dep_no = @num) and (dayth = @num1) and (block_time = @num2)

(65)

用於網路掛號,找出相同診間,相同日期,相同時段之門診時間資 料。

7.mno 預存程序

CREATE PROCEDURE mno

@num datetime, @num1 varchar(10), @num2 varchar(10), @num3 integer

AS

select m_no from painting

where( @num = see_date ) and (@num1 = dep_name) and (@num2 = doctor_name) and (@num3 = paint_no)

GO

此預存程序從 painting 資了表中找出某一病人的藥單編號。

8.register 預存程序

CREATE PROCEDURE register

@num datetime, @num1 varchar(6), @num2 varchar(10), @num3 integer output

AS

select @num3 = max(see_no) from take

where (see_date = @num) and (block_time = @num1) and (dep_name = @num2) GO 此預存程序是從 take 資料表找出相同日期和相同時段和相同診間之 看診號碼為最大,以便看診號碼之累計。

6.2 前端之應用程式製作

前端 主要是指客戶端,終端使用者(end user)所使用應用程式,而 應用程式的開發工具為 VB 6.0,開發過程說明如下:

(66)

建立新專案

圖 6-3 建立新專案

如上圖所示,首先我們先要建立一個新專案,順序為開始→程式

集→Microsoft Visual Basic 6.0→Microsoft Visual Basic 6.0→選擇 Data Environment 專案。

建立主選單

(67)

圖 6-4 為系統功能階層圖,根據此圖來建立主選單,在專案視窗中→ 選擇工具→選擇功能表編輯器,結果如圖 6-5: 圖 6-5 功能編輯器 標題鍵入掛號作業,名稱隨自己命名的方式,在此取名為 cust,按照 此原則依序建立診斷治療作業、員工管理、報表列印、系統維護,所 的結果如圖 6-6: 圖 6-6 編輯結果 建立 Form 根據系統功能階層圖,有掛號作業(病患資料管理、掛號)、診

(68)

斷治療作業(診斷資料維護)、員工管理(門診時間表管理、員工資 料維護)、報表列印(病患名冊、掛號清單)、系統維護,每一個功 能就是一個 Form,也就是一個視窗。

在系統設計階段提過使用者介面控制項,現在建立 Form 時正好

派上用場,使用的控制項有 textbox、 label、 combobox、datagrid 、 listbox、command button、option button。

1.門診時間表管理 Form,如圖 6-7:

圖 6-7 門診時間表管理 Form 2.員工資料維護 Form,如圖 6-8:

圖 6-8 員工資料維護 Form 3.掛號 Form,如圖 6-9:

(69)

圖 6-9 掛號 Form 4. 診斷治療 Form,如圖 6-10: 圖 6-10 診斷治療 Form 與資料庫中各資料表相連 在專案總管視窗中,點選設計師→點選 DataEnvironment1 圖 6-11 專案總管視窗 圖 6-12 點選 DataEnvironment1 之後畫面 圖 6-12 為點選之後出現的畫面,游標停在 connection1 按下滑屬右鍵

(70)

→屬性,如圖 6-13 所示:

圖 6-13 選擇資料庫引擎

提供者選擇 Microsoft OLE DB Provider for SQL Server,因為資料庫系 統是用 SQL Server,按下一步,出現如圖 6-14: 圖 6-14 選擇資料庫 此時鍵入資料庫伺服器名稱,再選擇所要連線的資料庫,按下測試連 線,沒問題則會顯示連線成功。 接 著 在 connection1 按下滑鼠右鍵→ 新增指令,此時會出現 command1,游標移至 command1 按下滑屬右鍵→屬性,出現如圖 6-15

(71)

所示: 圖 6-15 選擇資料表 資料庫物件選擇資料表— Table,物件名稱可看到資料庫中所有建立 的資料表,一個 command 就是連接一個資料表,如此按照上述幾個 步驟,一一建立資料表連線。 加入程式碼 Form 與資料庫連線都建立完成後,接著就是在各控制項中寫入 程式碼,撰寫程式碼依其功能說明如下: 資料表的查詢 假設要讀取資料庫中關於病人掛號資料表 take,而連線 take 資料 表的命令物件為 command1,程式碼如下: Dim cn As New ADODB.Connection

Dim rs1 As New ADODB.Recordset

Set cn = DataEnvironment1.Connection1 Set rs1 = DataEnvironment1.rsCommand1

rs1.Open "select * from take" , cn, adOpenDynamic, adLockOptimistic 第一行宣告 cn 是一個 connection 物件,第二行宣告 rs1 為 recordset

(72)

一個資料集。

第三行把 connection 物件指定為 cn,第四行 rsCommand1 即整個 take 資料表集指定為 rs1。

第五行使用 open 方法來開啟 recordset 資料表,其中 select * from take 是 SQL 語法,用" "包住這就是前面所說把 SQL 語法嵌入到應用程式 中。

adOpenDynamic 這是設定游標的型態(cursor type),可使 recordset

新增、修改、移動,cursor 是指向第幾筆資料。adLockOptimistic 主 要是預防多人同時做相同的動作如新增、修改、刪除時,必須要鎖定, 只有取得編輯權才能更動,如此確保編輯資料完整成功。 資料指標的移動 我們常要讀取第一筆或是下一筆或是上一筆獲釋最後一筆資 料,程式碼要如何撰寫,說明如下: rs1.MoveFirst 表示第一筆資料 rs1.MoveNext 表示下一筆資料 rs1.MovePrevious 表示上一筆資料 rs1.MoveLast 表示最後一筆資料 資料的新增、修改、刪除 資料庫最常見的就是新增、修改、刪除這幾個動作,程式碼如下:

(73)

cn.BeginTrans DataEnvironment1.rsCommand1.AddNew : : DataEnvironment1.rsCommand1.Update cn.CommitTrans rs1.AddNew 表示新增一筆資料,BeginTrans 表示異動開始但暫不寫 入資料庫,直到 CommitTrans 才更新資料庫。 rs1.Update 表示修改資料表 cn.BeginTrans DataEnvironment1.rsCommand1.Delete : : cn.CommitTrans rs.Delete 表示刪除一筆記錄。 如何呼叫預存程序 在前端的應用程式中要如何呼叫後端的預存程序,這點滿重要 的,下面為 register 預存程序: CREATE PROCEDURE register

@num datetime, @num1 varchar(6), @num2 varchar(10), @num3 integer output

AS

select @num3 = max(see_no) from take

where (see_date = @num) and (block_time = @num1) and (dep_name = @num2)

GO

前端應用程式呼叫預存程序 register 程式碼: Dim cn As New ADODB.Connection

(74)

Dim cmd1 As ADODB.Command Dim param1 As ADODB.Parameter

Set cmd1 = New ADODB.Command

With cmd1

cmd1.CommandText = "register"

cmd1.CommandType = adCmdStoredProc

cmd1.ActiveConnection = DataEnvironment2.Connection1

Set param1 = New ADODB.Parameter param1.Name = "@num"

param1.Type = adDate

param1.Value = DateSerial(Year(Date), Text1(3), Text1(4)) param1.Direction = adParamInput

cmd1.Parameters.Append param1

Set param1 = New ADODB.Parameter param1.Name = "@num1" param1.Type = adVarChar param1.Size = 6 param1.Value = DataCombo1(1).Text param1.Direction = adParamInput cmd1.Parameters.Append param1

Set param1 = New ADODB.Parameter param1.Name = "@num2" param1.Type = adVarChar param1.Size = 10 param1.Value = DataCombo1(0).Text param1.Direction = adParamInput cmd1.Parameters.Append param1

Set param1 = New ADODB.Parameter param1.Name = "@num3"

param1.Type = adInteger

param1.Direction = adParamOutput cmd1.Parameters.Append param1

(75)

cmd1.Execute

最前面三行宣告 cn為 connection物件,cmd1 為 command 物件,param1 是一個參數。

第四行把 command 物件指定給 cmd1

第 六 行 cmd1.CommandText = "register" 呼 叫 預 存 程 序 的 名 稱 為 register , 第 七 行 cmd1.CommandType = adCmdStoredProc 說 明

command 物件型態為一預存程序,第八行 cmd1.ActiveConnection =

DataEnvironment2.Connection1 只連線的方式。

第九行 Set param1 = New ADODB.Parameter 把參數指定為 param1 第 十 行 param1.Name = "@num" 第 一 個 參 數 的 名 稱 , 第 十 一 行 param1.Type = adDate 只 參 數 的 資 料 型 態 為 一 日 期 , 第 十 二 行

param1.Value = DateSerial(Year(Date), Text1(3), Text1(4))所要傳入的

參數值,第十三行 param1.Direction = adParamInput 只這個參數為輸 入值。以此方式,後面幾個參數的寫法也是按照這種格式依樣畫葫蘆。

6.3 網路上存取

前面的製作都屬於對內(internal)組織內部,接下來是屬於對外

(76)

圖 6-16 診間網頁.htm

診間網頁.htm

如圖 6-16 為網路掛號第一個畫面,畫面中包含三個控制項,radio

button(即 VB 中的 option button),selection(即 VB 中的 combo box),

送出鈕(即 VB 中的 comand button)。寫法如下: Radio Button

<INPUT TYPE ="RADIO" NAME ="blocktime" VALUE =1>上午

<INPUT TYPE ="RADIO" NAME ="blocktime" VALUE =2>下午

<INPUT TYPE ="RADIO" NAME ="blocktime" VALUE =3>晚上

這是一個 radio button 組合,name 表示這個控制項的名稱,可指定值 value,選上午則 value 值為 1

Selection

<SELECT NAME="depno" style="HEIGHT:40px;WIDTH:130px"> <OPTION VALUE=1>內科一診</OPTION>

(77)

: :

<OPTION VALUE=15>骨科二診</OPTION>

</SELECT>

selection 是一個下拉式選單,顯示好幾列,select name 表示給這個控

制項取名稱,後面 style 是這個控制項的大小,接著是一列列的內容 用 option 包住,value 為指定的值,選內科一診即 value 值為 1,結束 時用</select>,標籤都是成對的。

送出鈕

<INPUT TYPE="SUBMIT" NAME="cmdSubmit" VALUE=" 送 出 "

style="width:60px;height=25"> 送出鈕它的型態是 submit,此扭為觸發動作,準備傳<form></form> 所包住內所有控制項的值給下頁,value 為按鈕上出現的文字。 圖 6-17 Time.asp Time.asp 如圖 6-17 為網路預約掛號第二個畫面,在這個畫面要處理有

(78)

request 物件,session 物件,連接資料庫。

rquest 物件

request 物件是抓取遠端電腦由 http 傳給伺服器的值,此時必須

要抓取診間網頁.htm 中的 radio button 和 selection 這兩控制項的值, 只要是 VB script 需用<% %>包住,request 用法如下:

<% request.form(〝blocktime〞) %>

<% request.form(〝depno〞) %>

request.form 是一個 form(頁)的意思,blocktime 和 depno 這兩個分

別為 radio button 和 selection,分別存放著這兩控制項的值。

Session 物件 Session 物件就是當使用者連線上網站時,session 就會被建立, 直到使用者離線時才會結束,因此可利用 session 來儲存想要在網頁 中分享的資料,把 request 物件所抓取的值給 session,作法如下: <% session("dno")=request.form("depno") %> <% session("btime")=request.form("blocktime") %> 把時段和診間值儲存在 session 中。 連接資料庫 網頁中連接資料庫 VB script 如下: : <%

(79)

Dim Cn Dim Rs Dim cmd Dim param : : Set Cn = Server.CreateObject("ADODB.Connection") Cn.open"Provider=SQLOLEDB.1;IntegratedSecurity=SSPI;P alse;Initial Catalog=hospital;Data •••" : Set Rs = Server.CreateObject("ADODB.Recordset") Set cmd = Server.CreateObject("ADODB.Command") Set param = Server.CreateObject("ADODB.Parameter")

cmd.CommandText = "selnet1" cmd.CommandType = 4 cmd.ActiveConnection = Cn Set param=cmd.CreateParameter("@num",3,1,,session("dno")) Set Rs = cmd.Execute : : : %> : 上面用到預存程序 cmd.CreateParameter(),括號內@num 是參數名 稱,3 是預存程序,1 是輸入,session(〝dno〞)為輸入的值,最後把 結果存入 Rs 資料錄集。

(80)

圖 6-18 Order.asp Order.asp 如圖 6-18 為網路掛號第三個畫面,最後輸入病歷號碼,完成掛 號手續,程式碼如下: : : <% Dim cn1 Dim cmd1 Dim rs1 Dim param1 : : cmd1.CommandText = "deptime1" cmd1.CommandType = 4 cmd1.ActiveConnection = cn1

Set param1 = cmd1.CreateParameter("@num",7,1,,session("dayth")) cmd1.Parameters.Append param1

Set param1 = cmd1.CreateParameter("@num1",3,1,,session("btime")) cmd1.Parameters.Append param1

Set param1 = cmd1.CreateParameter("@num2",3,1,,session("dno")) cmd1.Parameters.Append param1

Set param1 = cmd1.CreateParameter("@num3",3,2) cmd1.Parameters.Append param1

(81)

session("num") = cmd1.Parameters(3).Value : %> : : 程式中預存程序 deptime1 是計數診間目前,前三個參數為輸入,分 別為日期、時段、診間,最後一個參數為輸出,即目前已有掛號的人 數。最後掛號鈕即 submit 把這些資料送到最後一個畫面。 圖 6-19 Result.asp Result.asp 如圖 6-19 為網路掛號最後一個畫面,程式碼如下: : : <% Dim cn1 Dim cmd1 Dim rs1 Dim param1 Set cn1 = Server.CreateObject("ADODB.Connection")

(82)

:

Set rs1 = Server.CreateObject("ADODB.Recordset") Set cmd1 = Server.CreateObject("ADODB.Command") Set param1 = Server.CreateObject("ADODB.Parameter") cmd1.CommandText = "checkpaint2" Set rs1 = cmd1.Execute : If NOT(rs1.EOF) Then response.write "重複掛號" Else Dim cn6 Dim rs6 Set cn6 = Server.CreateObject("ADODB.Connection") : Set rs6 = Server.CreateObject("ADODB.Recordset") rs6.open "take",cn6,1,3 rs6.AddNew : rs6.update rs6.close cn6.close : %> : 程式中預存程序 checkpaint2 主要是用來檢查是否重複掛號,如果有 資料錄則重複掛號,沒有就使用 rs.addnew 把資料寫進資料庫中。

(83)

第七章

測試

(84)

7.1 測試的議題

7.2 測試的設計

7.3 測試結果

7.4 測試結果討論

7.1 測試的議題

SQL 查詢往往因為撰寫的方式不同,會消耗不同數量的資源,例

如 LIKE 這個運算元會比=,IN,NOT IN,OR 查詢消耗更多的資源, 因此想探討〝使用預存程序〞和〝嵌入式〞這兩種寫法哪種執行時間 較快?可供以後在撰寫程式時的參考。

(85)

7.2 測試的設計

既然是談到執行時間,就必須用到 Timer()這個函數,意思是傳 回自前一個午夜算起到現在的時間間隔秒數,由此可設開始執行的時 間和結束的時間,兩個時間一減即可得執行的時間。接著以查詢日期 有哪些門診為例,來比較預存程序和嵌入式這兩種寫法的執行時間, 程式碼如下: 嵌入式 : : start = Timer() n = DataCombo1.SelectedItem : :

rs.open "select * from timetab where timetab.dayth = '" & n & "'" :

:

stop = Timer()

executetime = stop – start End Sub

使用預存程序

後端資料庫

CREATE PROCEDURE test @num integer

AS

select @num3 = doctor_no from timetab where dayth = @num

(86)

前端應用程式 : : start = Timer() : With cmd cmd.CommandText = "test" cmd.CommandType = adCmdStoredProc cmd.ActiveConnection = DataEnvironment2.Connection1

Set param = New ADODB.Parameter param.Name = "@num" param.Type = adInteger param.Value = DataCombo1.SelectedItem param.Direction = adParamInput cmd.Parameters.Append param Set rs = cmd.Execute End With : : stop = Timer()

executetime = stop – start End Sub 測試機器 所測試機器的配備如下: CPU:AMD Duron 1.00 GHz RAM:256 MB OS:Microsoft Windows XP

(87)

各查詢 100 次所的結果 嵌入式 圖 7-1 嵌入式寫法 執行最長時間: 0.140625 秒 執行最短時間: 0.015625 秒 100 次平均時間: 0.0228125 秒 預存程序

(88)

圖 7-2 預存程序寫法 執行最長時間: 0.0625 秒 執行最短時間: 0.015625 秒 100 次平均時間: 0.0221875 秒

7.4 測試結果討論

觀察這兩個測試結果,其中嵌入式寫法第一次執行時間 0.140625 秒偏高,其餘九十九次明顯降下,而預存程序第一次執行時間 0.0625 也比其餘九十九次要高,原因第一次執行傳資料錄集(recordset)所 花的時間較多,而且嵌入式寫法傳 SQL 敘述到後端,然後 SQL SERVER 在編譯執行,不像預存程序只需傳參數,自然嵌入式花時間

(89)

較多,不過平均下來兩著差距在千分之一秒內。

(90)

專題的核心精神與價值

加深對書本知識的認識

由訪談中增長見識

建議

未來展望

專題的核心精神與價值

在做專題時就一直思考這個問題,為什麼系上要安排專題這兩個 學分,如今專題也接近發表日,一個階段也算告一段落(但我還會繼 續開發此系統),這個答案也找出來了。平常我們在課堂上所學的知

(91)

識往往是屬於片段,而且少有運用的機會,但是經由專題的製作,一 方面可統整這幾年來所學的知識加以用,另一方面可看出自己所學夠 不夠紮實,夠不夠應付將來出社會所要面對的工作,這才是專題的核 心精神與價值。

加深對書本知識的認識

以前在學系統分析與設計並不瞭解書中作者為何會這樣寫?這 樣寫有些什麼道理?直到做專題按照書本一步步有階段的進行,漸漸 發覺到為何先要系統分析?在系統分析中先要瞭解硬體架構的需 求,之後才可決定要使用哪種開發工具,在專題實作初期時並沒很瞭 解硬體的架構,到了後期才改進,也因此恍然大悟,系統開發是講求 階段步驟的,漏一步就會產生瑕疵與錯誤,或許這就是經驗,經驗是 必須靠實際的嘗試而累積,專題實作也加深了自己對於理論的依據。

由訪談中增長見識

系統分析先後訪問了台中澄清醫院、新竹陳耳鼻喉科、行政院衛 生署新竹醫院、新竹空軍醫院。最初訪問時,由於對問題的瞭解不夠 透徹,有時很難精確的表達自己所想問的問題,回來看這些資料會發 覺有些不是自己想要的東西,基於這次缺失,以後訪談事先寫下所要 訪問的問題,照著劇本來,也就順利許多。另外,訪問時也需要技巧,

數據

圖 5-5  Combo Box•••••••••••••••••••48  圖 5-6  Check Box  •••••••••••••••••••48  圖 5-7  Option Button••••••••••••••••••48  圖 5-8  Command Button•••••••••••••••••48  圖 5-9  DataGrid••••••••••••••••••••48  圖 5-10  病患基本畫面••••••••••••••••••49  圖 5-11  掛號畫面•••••
圖 6-5  功能編輯器  •••••••••••••••••••65  圖 6-6  編輯結果  ••••••••••••••••••••66  圖 6-7  門診時間表管理 Form•••••••••••••••67  圖 6-8  員工資料維護 Form••••••••••••••••67  圖 6-9  掛號 Form••••••••••••••••••••67  圖 6-10 診斷治療 Form  •••••••••••••••••68  圖 6-11 專案總管視窗••••••••••••••••
圖 3-3  澄清醫院組織圖     綜觀訪談及上述三家醫院的組織架構圖,我們可以找出共通性, 大致可歸納出門診、住院、部門、管理這四部分,也就是醫療資訊系 統的主要功能(main functions)架構,如圖 3-4 所示,詳細列出門診、 住院、部門、管理這四部分有些什麼功能,以利於在資料及程序模組 中分析資料流程,將會在下一階段介紹。
圖 3-4  醫療系統主要功能分解圖
+7

參考文獻

相關文件

一、取得中央目的事業主 管機關核發之醫事 專門職業證書之醫 師、中醫師、牙醫 師、藥師、醫事檢驗 師、醫事放射師、物 理治療師、職能治療

利用 Microsoft Access 資料庫管理軟體,在 PC Windows 作業系統環境下,將給與的紙本或電子檔(如 excel

利用 Microsoft Access 資料庫管理軟體,在 PC Windows 作業系 統環境下,將給與的紙本或電子檔(如 excel

First, this research integrates academic literature from management information systems, strategic management, knowledge management, and organizational theories, based on

„ Complex Instruction Set Computers (CISC). „ complicated

利用 Microsoft Access 資料庫管理軟體,在 PC Windows 作業系 統環境下,將給與的紙本或電子檔(如 excel

 無線射頻識別 (Radio Frequency Identification, RFID) 系統近年來越來越普及,應用範圍如供

 無線射頻識別 (Radio Frequency Identification, RFID) 系統近年來越來越普及,應用範圍如供