醫(yī)院信息系統(tǒng)數(shù)據(jù)庫(kù)維護(hù)工具的開(kāi)發(fā)
何遠(yuǎn)源①
①中山市人民醫(yī)院計(jì)算機(jī)管理中心,528403,廣東省中山市孫文東路2 號(hào)
摘 要 為了提高醫(yī)院信息系統(tǒng)數(shù)據(jù)庫(kù)維護(hù)的工作效率,減少對(duì)數(shù)據(jù)庫(kù)執(zhí)行操作時(shí)的風(fēng)險(xiǎn),
開(kāi)發(fā)一個(gè)數(shù)據(jù)庫(kù)維護(hù)工具,對(duì)數(shù)據(jù)庫(kù)表的查詢、新增、刪除、修改操作集中在一個(gè)更具體、
直觀的窗體界面上,盡可能避免因sql語(yǔ)句錯(cuò)誤導(dǎo)致數(shù)據(jù)破壞。
關(guān)鍵詞 數(shù)據(jù)庫(kù)維護(hù) 表結(jié)構(gòu)分析 生成 系統(tǒng)關(guān)聯(lián)
1 前言
根據(jù)《中國(guó)醫(yī)院信息化發(fā)展研究報(bào)告(白皮書(shū))》,調(diào)查發(fā)現(xiàn)目前醫(yī)院信息
系統(tǒng)建設(shè)高速發(fā)展背后伴隨的是技術(shù)人才短缺,醫(yī)院信息系統(tǒng)應(yīng)用開(kāi)發(fā)自主創(chuàng)新
能力不強(qiáng),具有自主知識(shí)產(chǎn)權(quán)產(chǎn)品很少,大部分醫(yī)院采用市場(chǎng)提供的信息系統(tǒng)產(chǎn)
品并有系統(tǒng)供應(yīng)商實(shí)施建設(shè)工程,醫(yī)院自主應(yīng)用管理與運(yùn)行維護(hù)[1]。作為醫(yī)院信
息維護(hù)的員工對(duì)購(gòu)買系統(tǒng)的數(shù)據(jù)庫(kù)結(jié)構(gòu)并不完全了解和熟悉,存在人為失誤導(dǎo)致
數(shù)據(jù)破壞的風(fēng)險(xiǎn)。本系統(tǒng)是一個(gè)醫(yī)院信息系統(tǒng)數(shù)據(jù)庫(kù)維護(hù)工具,通過(guò)對(duì)數(shù)據(jù)庫(kù)表
結(jié)構(gòu)的分析,把平時(shí)書(shū)寫(xiě)的數(shù)據(jù)庫(kù)基本語(yǔ)句轉(zhuǎn)換為簡(jiǎn)單、直觀的窗體界面操作。
2 必要性
日常的數(shù)據(jù)庫(kù)維護(hù),對(duì)表進(jìn)行查詢,增加,修改,刪除是使用最為頻繁的基
本操作,而條件語(yǔ)句在其中最為關(guān)鍵,一條查詢語(yǔ)句,條件語(yǔ)句不當(dāng)可能會(huì)導(dǎo)致
查詢出大量非必須的數(shù)據(jù),無(wú)法得到想要的結(jié)果;修改,刪除的條件語(yǔ)句錯(cuò)誤,
更是可能導(dǎo)致數(shù)據(jù)的大量修改和破壞,甚至造成無(wú)法挽回的失誤。
在使用sql查詢分析器對(duì)數(shù)據(jù)庫(kù)表的數(shù)據(jù)進(jìn)行增,刪,改操作時(shí),作為數(shù)據(jù)維
護(hù)的工作人員通常都會(huì)在不需要執(zhí)行的sql語(yǔ)句前加入注釋,以防止執(zhí)行不必要
的sql操作,造成數(shù)據(jù)丟失或錯(cuò)誤。但這種方法并不能完全避免人為失誤,特別是
對(duì)剛上崗的數(shù)據(jù)維護(hù)人員,其人為失誤可能性更大。而且如果一個(gè)表字段較多,
數(shù)據(jù)維護(hù)人員對(duì)表字段不熟悉時(shí),手工輸入sql語(yǔ)句也會(huì)帶來(lái)不少的麻煩。
基于以上情況,開(kāi)發(fā)一個(gè)通用的醫(yī)院信息系統(tǒng)數(shù)據(jù)庫(kù)維護(hù)工具,,使對(duì)數(shù)據(jù)庫(kù)
的這些基本操作集中在一個(gè)簡(jiǎn)單、直觀的窗體界面上,利用該工具對(duì)表結(jié)構(gòu)進(jìn)行
分析,組合成所需要的sql語(yǔ)句來(lái)對(duì)數(shù)據(jù)庫(kù)表進(jìn)行操作,可減少不必要的麻煩,方
便維護(hù)人員對(duì)數(shù)據(jù)庫(kù)的維護(hù).
3 系統(tǒng)設(shè)計(jì)思路
首先根據(jù)用戶指定的服務(wù)器讀取服務(wù)器的數(shù)據(jù)庫(kù),進(jìn)而讀取其中的表,當(dāng)用
戶選定一個(gè)表時(shí),對(duì)其表結(jié)構(gòu)進(jìn)行分析,返回一個(gè)列表,列表應(yīng)包含如字段名,類
型,主鍵,是否允許空等基本元素。然后通過(guò)對(duì)窗體生成前的一些設(shè)置,如每個(gè)
對(duì)應(yīng)字段所應(yīng)生成的控件類型等,系統(tǒng)根據(jù)表結(jié)構(gòu)和窗體設(shè)置生成一個(gè)臨時(shí)窗
體,待用戶調(diào)整好控件位置后,保存當(dāng)前窗體的有關(guān)設(shè)置信息到自定義的文件格
式中,在注冊(cè)表寫(xiě)入系統(tǒng)與自定義文件格式的關(guān)聯(lián),待下次用戶打開(kāi)保存的文件
時(shí)就可以直接讀取配置信息構(gòu)建窗體,還原用戶當(dāng)時(shí)保存的窗體界面。
4 開(kāi)發(fā)環(huán)境與開(kāi)發(fā)工具
開(kāi)發(fā)環(huán)境: windows操作系統(tǒng)
開(kāi)發(fā)工具:vasual studio 2005 C#語(yǔ)言環(huán)境,sql2000數(shù)據(jù)庫(kù)。
5 詳細(xì)設(shè)計(jì)
5.1 分析表結(jié)構(gòu) 首先用戶設(shè)置好待連接的服務(wù)器,登錄名和密碼,服務(wù)器登陸
成功后讀取其數(shù)據(jù)庫(kù),返回一個(gè)列表,用戶選擇了數(shù)據(jù)庫(kù)后再讀取數(shù)據(jù)庫(kù)的表,
當(dāng)用戶選定一個(gè)表時(shí),對(duì)其表結(jié)構(gòu)進(jìn)行分析,查詢表結(jié)構(gòu)的sql語(yǔ)句如下:
StringBuilder sb = new StringBuilder();
sb.Append("SELECT");
sb.Append(" 字段序號(hào)=a.colid,");
sb.Append(" 表ID=a.id,");
sb.Append(" 字段名=a.name,");
sb.Append(" 標(biāo)識(shí)=case when COLUMNPROPERTY( a.id,a.name,'IsIdentity')=1 then
'√'else '' end,");
sb.Append(" 主鍵=case when exists(SELECT 1 FROM sysobjects where xtype='PK' and
parent_obj=a.id and name in (");
sb.Append(" SELECT name FROM sysind |
|