莊紹燕,楊保衛(wèi)
中國(guó)人民解放軍第一八零醫(yī)院信息科,福建 泉州 362000
“軍衛(wèi)一號(hào)”數(shù)據(jù)庫(kù)字符集升級(jí)
莊紹燕,楊保衛(wèi)
中國(guó)人民解放軍第一八零醫(yī)院信息科,福建 泉州 362000
本文分析了“軍衛(wèi)一號(hào)”數(shù)據(jù)庫(kù)的US7ASCII字符集存在的不足,同時(shí)介紹了我院“軍衛(wèi)一號(hào)”數(shù)據(jù)庫(kù)升級(jí)字符集的總體設(shè)計(jì)方案和具體實(shí)施過(guò)程。
軍衛(wèi)一號(hào)信息系統(tǒng);Oracle數(shù)據(jù)庫(kù);ASCII編碼;GBK編碼
“軍 衛(wèi) 一號(hào) ” 系 統(tǒng) 自 1995 年 先 后 在 200 所軍 隊(duì) 醫(yī)院和 100 多家地方醫(yī)院成功運(yùn)行。最早部署數(shù)據(jù)庫(kù)時(shí)只支持US7ASCII字符集。隨著醫(yī)院數(shù)字化的進(jìn)一步發(fā)展,麻醉系統(tǒng)、心電系統(tǒng)、重癥監(jiān)護(hù)系統(tǒng)、移動(dòng)護(hù)士工作站、圖象歸檔與傳輸系統(tǒng)(PACS)、臨床檢驗(yàn)信息系統(tǒng)(LIS)等逐步加入“軍字一號(hào)”系統(tǒng)。同時(shí),隨著網(wǎng)絡(luò)和區(qū)域醫(yī)療的發(fā)展,數(shù)據(jù)庫(kù)間的通信已成為一種趨勢(shì)[1-3]。
“軍衛(wèi)一號(hào)”后臺(tái) Oracle 數(shù)據(jù)庫(kù)最早版本為 Oracle7.3,支持的編碼方案是 ASCII編碼。據(jù)不完全統(tǒng)計(jì),目前全軍92% 的部隊(duì)醫(yī)院和 45% 的地方醫(yī)院仍然使用 ASCII字符編碼的 Oracle 數(shù)據(jù)庫(kù)[5-6]。由于 ASCII支持的字符數(shù)量非常有限,因此隨后又出現(xiàn)很多的編碼方案。隨著數(shù)字化醫(yī)療的進(jìn)步,支持 ASCII字符集的數(shù)據(jù)庫(kù)在使用上出現(xiàn)越來(lái)越多的弊端。GBK 編碼是 1995 年發(fā)布的指導(dǎo)性規(guī)范編碼方案[7]。因此,數(shù)據(jù)庫(kù)字符集升級(jí)迫在眉睫。本文就我院“軍衛(wèi)一號(hào)”數(shù)據(jù)庫(kù)字符集升級(jí)的一些經(jīng)驗(yàn)與大家分享。
近幾年來(lái)新構(gòu)建的數(shù)據(jù)庫(kù)基本以國(guó)家標(biāo)準(zhǔn)的 GBK 字符集為基礎(chǔ),原來(lái)的 US7ASCII字符集已經(jīng)逐漸暴露出許多弊端:
(1)生僻字讀寫(xiě)困難。有的患者姓名為生僻字,在“軍衛(wèi)一號(hào)”數(shù)據(jù)庫(kù)系統(tǒng)中無(wú)法存取,只能存儲(chǔ)相近字并輔以文字說(shuō)明,使數(shù)據(jù)庫(kù)的唯一性和完整性管理極大不便。
(2)系統(tǒng)間數(shù)據(jù)通信問(wèn)題。近些年迅速發(fā)展的醫(yī)保、農(nóng) 保、區(qū) 域 衛(wèi) 生醫(yī) 療 系統(tǒng) 皆 適 用 GBK 數(shù) 據(jù)庫(kù) 字 符 集。“軍衛(wèi)一號(hào)”內(nèi)的相關(guān)系統(tǒng)與這些系統(tǒng)程序互相通信時(shí),無(wú)法通過(guò)系統(tǒng)默認(rèn)的字符集直接通信。多數(shù)單位使用時(shí),要通過(guò)文本文件交互的方式解決,降低了通信的效率。
(3)客戶機(jī)配置字符集困難。醫(yī)院內(nèi)部存在多種不同字符集的數(shù)據(jù)庫(kù)系統(tǒng)。當(dāng)客戶機(jī)同時(shí)訪問(wèn)醫(yī)院內(nèi)部的不同服務(wù)器系統(tǒng)時(shí),一臺(tái)客戶機(jī)同一時(shí)刻只能配置一種字符集連接模式,使客戶機(jī)配置字符集難度增加。
(4)影響 Web 瀏覽。近些年,數(shù)據(jù)庫(kù) Web 瀏覽訪問(wèn)成為趨勢(shì)。但基于“軍衛(wèi)一號(hào)”數(shù)據(jù)庫(kù)開(kāi)發(fā)基于 JAVA 的Web 瀏覽系統(tǒng),應(yīng)用 ASCII字符集轉(zhuǎn)換難度大。
(5)部署客戶機(jī)繁瑣。部署客戶機(jī)時(shí),默認(rèn)的字符集為 GBK;訪問(wèn)“軍衛(wèi)一號(hào)”數(shù)據(jù)庫(kù)時(shí),需要手動(dòng)設(shè)置為ASCII,非常繁瑣。
可見(jiàn),ASCII字符集的使用已經(jīng)成了制約醫(yī)院信息化發(fā)展的絆腳石。大多數(shù)醫(yī)院雖然有這方面的需求,但總是害怕數(shù)據(jù)庫(kù)升級(jí)失敗導(dǎo)致醫(yī)院數(shù)據(jù)庫(kù)停止運(yùn)行而沒(méi)有對(duì)文字集進(jìn)行升級(jí)。以下對(duì)我院數(shù)據(jù)庫(kù)字符集升級(jí)進(jìn)行總結(jié)性介紹。
2.1 總體方案
根據(jù) Oracle 官方提供的升級(jí)方案,對(duì)數(shù)據(jù)庫(kù)字符集進(jìn)行升級(jí),雖然過(guò)程比較簡(jiǎn)單,且升級(jí)的時(shí)間基本可以控制在 30 min 以內(nèi),但還是存在一定的風(fēng)險(xiǎn)。如果升級(jí)不當(dāng),則會(huì)造成數(shù)據(jù)庫(kù)的永久損壞。因此,對(duì)醫(yī)院的數(shù)據(jù)庫(kù)字符集進(jìn)行升級(jí)時(shí)需制定一個(gè)總體方案。該方案可以簡(jiǎn)單描述為備份、測(cè)試、制定應(yīng)急預(yù)案。確定升級(jí)前,應(yīng)該做大量測(cè)試和字符集升級(jí)失敗時(shí)的應(yīng)急預(yù)案工作,并對(duì)數(shù)據(jù)庫(kù)進(jìn)行一次冷備份。測(cè)試主要針對(duì)客戶端一些較早研發(fā)的軟件,并要在升級(jí)后的數(shù)據(jù)庫(kù)上測(cè)試各個(gè)軟件升級(jí)后的使用情況。
2.2 HIS服務(wù)器IP地址修改或DNS名稱修改
字符集升級(jí)時(shí),需要考慮醫(yī)院的 HIS 客戶端訪問(wèn)數(shù)據(jù)庫(kù)服務(wù)器的方式,如果是通過(guò)DNS訪問(wèn)的,則建議更換數(shù)據(jù)庫(kù)服務(wù)器 DNS 名稱和 IP 地址。如果是通過(guò) IP 地址訪問(wèn)的,則建議更換服務(wù)器 IP 地址。在升級(jí)數(shù)據(jù)庫(kù)服務(wù)器前 3 h 更改客戶端 IP 地址。HIS 服務(wù)器 IP 地址參數(shù)設(shè)置,見(jiàn)表 1。
表1 HIS服務(wù)器IP地址參數(shù)設(shè)置
服務(wù)器 IP 地址的更改是整個(gè)升級(jí)過(guò)程中最為關(guān)鍵的一步,有著至關(guān)重要的意義。主要是因?yàn)獒t(yī)院各信息系統(tǒng)連接數(shù)據(jù)庫(kù)服務(wù)器的客戶機(jī)數(shù)量眾多、且分布比較零散。數(shù)據(jù)庫(kù)升級(jí)后,一定要做到寧可有部分客戶端不能訪問(wèn)數(shù)據(jù)庫(kù)也不能存在部分客戶端通過(guò)錯(cuò)誤的字符集方式訪問(wèn)數(shù)據(jù)庫(kù)。一旦有沒(méi)有修改字符集的客戶端登錄數(shù)據(jù)庫(kù),會(huì)造成數(shù)據(jù)庫(kù)的數(shù)據(jù)不一致,給將來(lái)相關(guān)方案的制定造成困難。
2.3 HIS數(shù)據(jù)庫(kù)字符集升級(jí)
根據(jù) Oracle 官方提供的文檔,通過(guò)自行整理后,數(shù)據(jù)庫(kù)升級(jí)步驟如下:
(1)關(guān)閉數(shù)據(jù)庫(kù),并進(jìn)行數(shù)據(jù)庫(kù)冷備。
(2)在服務(wù)器端使用 SQLPLUS 工具做如下修改 :
(3)修改服務(wù)器端注冊(cè)表 :NLS_LANG=simplified chinese_ china.zhs16gbk。
(4)在服務(wù)器端查看字符集:SQL>select userenv(‘language’)from dual。
2.4 客戶端服務(wù)器IP地址、字符集參數(shù)修改
客戶端訪問(wèn)數(shù)據(jù)庫(kù)服務(wù)器,通常需要設(shè)置4個(gè)比較重要的參數(shù) :① NLS_LANG ;② 服務(wù)器 IP 地址 ;③ 服務(wù)名 ;④ 端口號(hào)。
為保證升級(jí)成功,在升級(jí)時(shí)服務(wù)器修改了 IP 地址,避免客戶端錯(cuò)誤的字符集連接數(shù)據(jù)庫(kù)服務(wù)器。通過(guò)修改ORACLE_HOME$db_1 etworkADMINTNSNAME.ORA 文件實(shí)現(xiàn)。具體修改說(shuō)明如下:
緊接著修改注冊(cè)表中 NLS_LANG 按鍵的參數(shù)值 :
HKEY_LOCAL_MACHINESOFTWAREORACLE HOME0NLS_LANG=simplified_chinese_china.zhs16gbk。
在修改客戶機(jī)連接參數(shù)時(shí),一定要同時(shí)修改服務(wù)器 IP 地址和注冊(cè)表字符集參數(shù)。
修改 HIS 數(shù)據(jù)庫(kù)服務(wù)器的字符集,對(duì)許多使用“軍衛(wèi)一號(hào)”系統(tǒng)的醫(yī)院是一件頭疼的事。其實(shí),到 Oracle8 版本后,數(shù)據(jù)庫(kù)字符集升級(jí)并不是一件難事。升級(jí)成敗的關(guān)鍵不在于數(shù)據(jù)庫(kù)服務(wù)器升級(jí)本身,而在于如何設(shè)計(jì)整個(gè)升級(jí)方案,以確保整個(gè)升級(jí)過(guò)程平穩(wěn)、順利。
[1] 李懷慶,張文東.基于數(shù)據(jù)倉(cāng)庫(kù)的醫(yī)院信息系統(tǒng)概述[J].中國(guó)醫(yī)療設(shè)備,2008,23(1):53-55.
[2] 楊紅玲,師恩洲.影響HIS的臨床病區(qū)代碼問(wèn)題及解決方案[J].中國(guó)醫(yī)療設(shè)備,2012,27(5):44-46.
[3] 余元龍,王德坤,楊勇.醫(yī)院信息化建設(shè)的幾點(diǎn)認(rèn)識(shí)[J].現(xiàn)代醫(yī)院,2008,(10):4-5.
[4] 樊同科,陶紫瓊.?dāng)?shù)據(jù)倉(cāng)庫(kù)技術(shù)及其在醫(yī)院信息系統(tǒng)中的應(yīng)用[J].電腦知識(shí)與技術(shù),2009,(9):2051-2052.
[5] 張志彬,白劍坤.HIS系統(tǒng)客戶端軟件自動(dòng)更新實(shí)現(xiàn)[J].醫(yī)療裝備,2009,(3):27-28.
[6] 王明實(shí).醫(yī)院信息系統(tǒng)[M].北京:科學(xué)出版社,2008:89-91.
[7] 國(guó)家標(biāo)準(zhǔn)總局.中華人民共和國(guó)國(guó)家標(biāo)準(zhǔn)信息交換用漢字編碼字符集基本集[S].北京:技術(shù)標(biāo)準(zhǔn)出版社,1981:32-36.
Character Set Promotion of “No.1 Military Medical Project” Database
ZHUANG Shao-yan, YANG Bao-wei
Department of Information, The 180thHospital of PLA, Quanzhou Fujian 362000, China
This paper dicusses the deficiencies of US7ASCII character set of “No.1 Military Medical Project” database, and introduces the total design scheme and specific implementation process of the character set promotion of “No.1 Military Medical Project” database in our hospital.
No.1 Military Medical Project; Oracle database; ASCII code; GBK code
TP311.53
A
10.3969/j.issn.1674-1633.2013.11.018
1674-1633(2013)11-0054-02
2013-05-14
2013-06-11
作者郵箱:3817118@qq.com