數(shù)據(jù)庫校醫(yī)門診管理系統(tǒng)_第1頁
數(shù)據(jù)庫校醫(yī)門診管理系統(tǒng)_第2頁
數(shù)據(jù)庫校醫(yī)門診管理系統(tǒng)_第3頁
數(shù)據(jù)庫校醫(yī)門診管理系統(tǒng)_第4頁
數(shù)據(jù)庫校醫(yī)門診管理系統(tǒng)_第5頁
已閱讀5頁,還剩14頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、 廣西科技大學(xué) 校醫(yī)院門診管理系統(tǒng) 課程設(shè)計說明書 課程名稱:廣西科技大學(xué)校醫(yī)院門診管理系統(tǒng)班 級:姓 名:學(xué) 號:指導(dǎo)老師:原慶能 2016年1月14日1 實訓(xùn)目的1.掌握數(shù)據(jù)庫基本原理,理解關(guān)系數(shù)據(jù)庫的設(shè)計方法、設(shè)計思路。 初步掌握一種關(guān)系數(shù)據(jù)庫語言,例如SQL  Server。2. 通過設(shè)計數(shù)據(jù)庫系統(tǒng)應(yīng)用課題,進一步熟悉數(shù)據(jù)庫管理系統(tǒng)的操作技術(shù),提高動手能 力,提高分析問題和解決問題的能力;3. 學(xué)習(xí)數(shù)據(jù)庫應(yīng)用系統(tǒng)開發(fā)方法。培養(yǎng)學(xué)生初步的軟件設(shè)計能力,形成良好的編程風(fēng)格二實訓(xùn)內(nèi)容1 需求分析廣西科技大學(xué)校醫(yī)院門診管理系統(tǒng)所要處理的數(shù)據(jù)有:就診卡號、姓名、性別

2、、年齡、聯(lián)系電話、所在部門、就診科室、就診大夫、就診日期、病情描述、處方編號、藥品編碼、藥品名稱、類別、庫存余量、規(guī)格、保質(zhì)期、用量、數(shù)量、金額、醫(yī)務(wù)人員的職工號、姓名、性別、年齡、職稱、所在科室、專長、診病時間,科室名稱、科室位置、可容納醫(yī)生數(shù)等。完整性要求:就診日期在藥品的保質(zhì)期前;使用的藥品數(shù)量小于庫存余量,在同一時間段、同一科室診病的醫(yī)生數(shù)小于或等于科室可容納醫(yī)生數(shù)。安全性要求:學(xué)生和教師持就診卡就診,可查閱醫(yī)生的相關(guān)信息;醫(yī)生可填寫病例、開處方;藥房護士可進行藥品的出庫、入庫進行管理。2 概念設(shè)計1. 根據(jù)需求分析,可抽象出科室、醫(yī)生、病人、處方和藥品5個實體,其中:科室有:科室名稱

3、、科室位置、可容納醫(yī)生數(shù)屬性,科室名稱為實體標(biāo)識符。醫(yī)生有:職工號、姓名、性別、年齡、所在部門、職稱、專長、診病時間屬性,職工為實體標(biāo)識符。病人有:就診卡號、姓名、性別、年齡、聯(lián)系電話屬性,就診卡號為實體標(biāo)識符處方有:處方編號、病情描述、診斷日期屬性,處方編號為實體標(biāo)識符。藥品有:藥品編碼、藥品名稱、類別、庫存余量、規(guī)格、保質(zhì)期、數(shù)量、金額屬性,藥品編碼為實體標(biāo)識符。實體之間的關(guān)系說明:1)一個科室可以容納多個醫(yī)生2)一個醫(yī)生可以填寫多個處方3)一個病人可以查看多個處方4)一個處方可以使用多個藥品,一種藥品可以用于不同是處方5)藥房護士可以對藥品進行出入庫管理。2. E-R圖如下容納科室醫(yī)生病

4、人1nm11填寫查看管理nnn處方使用藥品mn3、 邏輯設(shè)計將上述ER圖轉(zhuǎn)化為關(guān)系模式集1) 將5個實體轉(zhuǎn)化為關(guān)系模式病人:就診卡號、姓名、性別、年齡、聯(lián)系電話醫(yī)生:職工號、姓名、性別、年齡、所在部門、職稱、專長、診病時間科室:科室名稱、科室位置、可容納醫(yī)生數(shù)藥品:藥品編碼、藥品名稱、類別、庫存余量、規(guī)格、保質(zhì)期、數(shù)量、金額處方:處方編號、病情描述、診斷日期2) 對1:n關(guān)系“容納”,“填寫”,“查看”轉(zhuǎn)化為關(guān)系模式醫(yī)生:職工號、姓名、性別、年齡、所在部門、職稱、專長、診病時間、科室名稱處方:處方編號、病情描述、診斷日期、職工號、就診卡號3) 對m:n關(guān)系“填寫”,“使用”生成新的關(guān)系模式使用

5、:處方編號、藥品編碼、用量、用法管理:職工號、藥品編碼、藥品原數(shù)量、操作時間、數(shù)量、出入關(guān)系4) 所有關(guān)系如下病人:就診卡號、姓名、性別、年齡、聯(lián)系電話科室:科室名稱、科室位置、可容納醫(yī)生數(shù)藥品:藥品編碼、藥品名稱、類別、庫存余量、規(guī)格、保質(zhì)期、數(shù)量、金額醫(yī)生:職工號、姓名、性別、年齡、所在部門、職稱、專長、診病時間、科室名稱處方:處方編號、病情描述、診斷日期、職工號、就診卡號使用:處方編號、藥品編碼、用量、用法管理:職工號、藥品編碼、操作時間、數(shù)量、出入關(guān)系4、 物理設(shè)計醫(yī)生表doctor:屬性數(shù)據(jù)類型長度或取值范圍主鍵外鍵空值職工號varchar20是否姓名varchar10否性別varc

6、har10年齡int所在部門varchar10職稱varchar10專長varchar25診病時間varchar20科室名稱varchar10是病人表patient:屬性數(shù)據(jù)類型長度或取值范圍主鍵外鍵空值就診卡號varchar20是否姓名varchar10否性別varchar5年齡varchar10聯(lián)系電話varchar20科室表room:屬性數(shù)據(jù)類型長度或取值范圍主鍵外鍵空值科室名稱varchar10是否科室位置varchar10否可容納醫(yī)生數(shù)Int否藥品表drug:屬性數(shù)據(jù)類型長度或取值范圍主鍵外鍵空值藥品編碼varchar20是否藥品名稱varchar20否類別varchar10否庫存余

7、量varchar20否規(guī)格varchar否保質(zhì)期datetime否數(shù)量smallmoney否金額int否處方表prescription:屬性數(shù)據(jù)類型長度或取值范圍主鍵外鍵空值處方編號varchar20是否病情描述datetime診斷日期varchar50職工號varchar20是否就診卡號varchar20是否使用表userdrug:屬性數(shù)據(jù)類型長度或取值范圍主鍵外鍵空值處方編號varchar20是是否藥品編碼varchar20是是否用量int用法varchar20管理表inout:屬性數(shù)據(jù)類型長度或取值范圍主鍵外鍵空值職工號varchar20是是否藥品編碼varchar20是是否藥品原數(shù)量i

8、nt否操作時間datetime否數(shù)量int否出入關(guān)系varchar4否創(chuàng)建藥品用量觸發(fā)器tr_insert_user_drug/tr_update_user_drugUSE displayGOIF EXISTS (SELECT name FROM sysobjectsWHERE type='TR' AND name='tr_insert_user_drug')DROP TRIGGER tr_insert_user_drugGOCREATE TRIGGER tr_insert_user_drug ON userdrugFOR INSERTAS DECLARE us

9、erDg intselect userDg=用量 from Insertedif(select 庫存余量 from drugwhere 藥品編碼=(select 藥品編碼 from Inserted)<userDgBEGIN PRINT'藥品余量不足' ROLLBACK TRANSACTIONENDUSE displayGOIF EXISTS (SELECT name FROM sysobjectsWHERE type='TR' AND name='tr_update_user_drug')DROP TRIGGER tr_update_us

10、er_drugGOCREATE TRIGGER tr_update_user_drug ON userdrugFOR UPDATEAS IF UPDATE(用量)DECLARE userDg int, drugno char(20)select userDg=用量 from insertedselect drugno=藥品編碼 from insertedif(select 庫存余量 from drugwhere 藥品編碼=drugno)<userDgBEGIN PRINT'藥品余量不足' ROLLBACK TRANSACTIONEND創(chuàng)建藥品日期觸發(fā)器tr_insert_

11、datetime_drug/tr_update_datetime_drugUSE displayGOIF EXISTS (SELECT name FROM sysobjectsWHERE type='TR' AND name='tr_insert_datetime_drug')DROP TRIGGER tr_insert_datetime_drugGOCREATE TRIGGER tr_insert_datetime_drug ON userdrugFOR INSERTAS DECLARE drugno char(20),presno char(20),date

12、1 datetime,drugname char(20)select presno=處方編號 from Insertedselect drugno=藥品編碼 from Insertedselect drugname=藥品名稱 from drug where 藥品編碼=drugnoselect date1=診斷日期 from prescription where 處方編號=presnoif(select 保質(zhì)期 from drug where 藥品編碼=drugno and 藥品編碼 in(select 藥品編碼 from userdrug where 處方編號 in(select 處方編號 f

13、rom prescription)<date1BEGIN PRINT'藥品:'+drugname+'超過使用日期' ROLLBACK TRANSACTIONENDUSE displayGOIF EXISTS (SELECT name FROM sysobjectsWHERE type='TR' AND name='tr_update_datetime_drug')DROP TRIGGER tr_update_datetime_drugGOCREATE TRIGGER tr_update_datetime_drug ON us

14、erdrugFOR UPDATEAS IF UPDATE(藥品編碼)DECLARE drugno char(20),presno char(20),date1 datetime,drugname char(20)select presno=處方編號 from Insertedselect drugno=藥品編碼 from Insertedselect drugname=藥品名稱 from drug where 藥品編碼=drugnoselect date1=診斷日期 from prescription where 處方編號=presnoif(select 保質(zhì)期 from drug where

15、 藥品編碼=drugno and 藥品編碼 in(select 藥品編碼 from userdrug where 處方編號 in(select 處方編號 from prescription)<date1BEGIN PRINT'藥品:'+drugname+'超過使用日期' ROLLBACK TRANSACTIONEND創(chuàng)建科室醫(yī)生觸發(fā)器tr_insert_room_doc/tr_update_room_docUSE displayGOIF EXISTS (SELECT name FROM sysobjectsWHERE type='TR' A

16、ND name='tr_insert_room_doc')DROP TRIGGER tr_insert_room_docGOCREATE TRIGGER tr_insert_room_doc ON doctorFOR INSERTAS DECLARE roomno int,roomname char(10)select roomname=科室名稱 from insertedselect roomno=可容納醫(yī)生數(shù) from room where 科室名稱=roomnameif(select count(*)from doctor where 科室名稱=roomname)>

17、roomnoBEGIN PRINT'科室醫(yī)生已滿' ROLLBACK TRANSACTIONENDUSE displayGOIF EXISTS (SELECT name FROM sysobjectsWHERE type='TR' AND name='tr_update_room_doc')DROP TRIGGER tr_update_room_docGOCREATE TRIGGER tr_update_room_doc ON doctorFOR UPDATEAS IF UPDATE(科室名稱)DECLARE roomno int,roomnam

18、e char(10)select roomname=科室名稱 from insertedselect roomno=可容納醫(yī)生數(shù) from room where 科室名稱=roomnameif(select count(*)from doctor where 科室名稱=roomname)>roomnoBEGIN PRINT'科室醫(yī)生已滿' ROLLBACK TRANSACTIONEND創(chuàng)建出入庫觸發(fā)器tr_inout_drugUSE displayGOIF EXISTS (SELECT name FROM sysobjectsWHERE type='TR'

19、 AND name='tr_inout_drug')DROP TRIGGER tr_inout_drugGOCREATE TRIGGER tr_inout_drug ON inoutFOR INSERTAS DECLARE userDg int,guanxi char(4),drugno char(20)select drugno=藥品編碼 from insertedselect userDg=數(shù)量 from Insertedselect guanxi=出入關(guān)系 from insertedif(guanxi='出庫')update drug set 庫存余量=庫

20、存余量-userDg where 藥品編碼=drugnoif(guanxi='入庫')update drug set 庫存余量=庫存余量+userDg where 藥品編碼=drugnoGO創(chuàng)建查看醫(yī)生信息的存儲過程select_doctorUSE displayGOCREATE PROCEDURE select_doctor職工號 char(20)ASSELECT *FROM dbo.doctorwhere 職工號=職工號GO創(chuàng)建查看處方信息的存儲過程select_patient_pre_chu/select_patient_pre_kahaoUSE display /*通過

21、處方編號查看*/GOCREATE PROCEDURE select_patient_pre_chu處方號 char(20)ASselect 處方編號,病情描述,診斷日期,doctor.姓名 as 診斷醫(yī)生,patient.姓名 as 就診人from dbo.prescription,dbo.doctor,dbo.patientwhere prescription.處方編號=處方號 and prescription.職工號=doctor.職工號 and prescription.就診卡號=patient.就診卡號select 處方編號,藥品名稱,用量,用法from dbo.userdrug,db

22、o.drugwhere 處方編號=處方號 and userdrug.藥品編碼=drug.藥品編碼GOUSE display /*通過就診卡號查看*/GOCREATE PROCEDURE select_patient_pre_kahao就診卡號 char(20)ASselect dbo.prescription.就診卡號,patient.姓名 as 就診人,病情描述,診斷日期,doctor.姓名 as 診斷醫(yī)生from dbo.prescription,dbo.doctor,dbo.patientwhere prescription.就診卡號=就診卡號 and patient.就診卡號=就診卡號

23、 and prescription.職工號=doctor.職工號select userdrug.處方編號,藥品名稱,用量,用法,doctor.姓名 as 診斷醫(yī)生from dbo.userdrug,dbo.drug,dbo.prescription,dbo.doctorwhere prescription.就診卡號=就診卡號 and userdrug.處方編號=prescription.處方編號 and userdrug.藥品編碼=drug.藥品編碼 and prescription.職工號=doctor.職工號GO創(chuàng)建插入處方的存儲過程insert_prescriptionUSE displ

24、ayGOCREATE PROCEDURE insert_prescription處方號 char(20),日期 datetime,病情描述 char(50),職工號 char(20),就診號 char(20)ASinsert prescriptionvalues(處方號,日期,病情描述,職工號,就診號)select * from prescription where 處方編號=處方號GO創(chuàng)建插入用藥信息的存儲過程insert_userdrugUSE displayGOCREATE PROCEDURE insert_userdrug處方號 char(20),藥品編號 char(20),用量 in

25、t,用法 char(20)ASinsert userdrugvalues(處方號,藥品編號,用量,用法)select * from userdrug where 處方編號=處方號GO創(chuàng)建插入藥品出入庫信息的存儲過程insert_inoutUSE displayGOCREATE PROCEDURE insert_inout職工號 char(20),藥品編碼 char(20),藥品原數(shù)量 int,操作時間 datetime,數(shù)量 int,出入庫 char(4)ASinsert inoutvalues(職工號,藥品編碼,藥品原數(shù)量,操作時間,數(shù)量,出入庫)GO創(chuàng)建修改處方的存儲過程update_pr

26、escription/update_userdrugUSE display /*通過處方號修改病情描述*/GOCREATE PROCEDURE update_prescription處方號 char(20),病情描敘 char(50) ASif(select 處方編號 from prescription where 處方編號=處方號)=處方號)beginupdate prescriptionset 病情描述=病情描敘where 處方編號=處方號select * from prescription where 處方編號=處方號endelsebeginprint'此處方不存在'endGOUSE display /*通過處方號修改藥品使用信息*/GOCREATE PROCEDURE update_userdrug處方號 char(20),藥品編碼 char(20),用量 int,用法 char(20) ASif(select 處方編號 from userdrug where 處方編號=處方號 and 藥品編碼=藥品編碼)=處方號)beginupdate userdrugset 用量=用量,用法=用法where 處方編號=處方號 and 藥品編碼=藥品編碼endelsebeginprint'處方或藥品編碼錯誤'endGO創(chuàng)建刪

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論