




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
第22章
【綜合實例】醫(yī)院遠(yuǎn)程診斷系統(tǒng)——遠(yuǎn)程診斷系統(tǒng)功能需求2023最新整理收集do
something遠(yuǎn)程診斷系統(tǒng)功能需求系統(tǒng)功能主要包括:(1)南京全市各分區(qū)醫(yī)院診療點科室管理。(2)CT影像的遠(yuǎn)程處理及診斷。(3)患者建檔信息選項卡表單。(4)后臺患者信息數(shù)據(jù)庫瀏覽。01診療點科室管理診療點科室管理診療點科室管理功能顯示效果如圖22.1所示。02CT影像顯示和處理診療點科室管理CT影像的遠(yuǎn)程處理及診斷如圖22.2所示,圖中央顯示一幅高清CT相片,右上角有年月日及時間顯示。03患者信息選項卡患者信息選項卡以表單形式顯示患者的基本建檔信息,如圖22.3所示,包括“信息”和“病歷”兩個選項長。04后臺數(shù)據(jù)庫瀏覽后臺數(shù)據(jù)庫瀏覽患者的全部信息存儲于后臺數(shù)據(jù)庫MySQL中,在一個基本表上建立了兩個視圖,分別用于顯示基本信息和詳細(xì)信息病歷,信息在界面上以Qt的數(shù)據(jù)網(wǎng)格表控件展示,如圖22.4所示。05界面的總體效果界面的總體效果最終顯示出的界面的總體效果如圖22.5所示。第22章
【綜合實例】醫(yī)院遠(yuǎn)程診斷系統(tǒng)——Qt項目工程創(chuàng)建與配置Qt項目工程創(chuàng)建與配置(1)創(chuàng)建Qt桌面應(yīng)用程序項目,項目名稱為Telemedicine。創(chuàng)建完成后,在QtCreator開發(fā)環(huán)境中單擊左側(cè)欄的
按鈕切換至項目配置模式,如圖22.6所示。Qt項目工程創(chuàng)建與配置(2)將之前編譯安裝得到的OpenCV(含Contrib)庫文件,即D:\OpenCV_3.4.3-Build\install\x86\mingw\bin下的全部文件復(fù)制到項目的debug目錄,如圖22.7所示。(3)修改項目的.pro配置文件,在其中添加配置項。配置文件T內(nèi)容如下(加黑處為需要修改添加的地方)。第22章
【綜合實例】醫(yī)院遠(yuǎn)程診斷系統(tǒng)——遠(yuǎn)程診療系統(tǒng)界面設(shè)計遠(yuǎn)程診療系統(tǒng)界面設(shè)計在開發(fā)環(huán)境項目目錄樹狀視圖中,雙擊mainwindow.ui切換至遠(yuǎn)程診療系統(tǒng)可視化界面設(shè)計模式,如圖22.8所示,在其上拖曳設(shè)計出遠(yuǎn)程診療系統(tǒng)的整個圖形界面。遠(yuǎn)程診療系統(tǒng)界面設(shè)計為方便讀者試做,我們對界面上所有的控件都進(jìn)行了①,②,③,…的數(shù)字標(biāo)識(如圖22.9所示),并將它們的類型、名稱及屬性設(shè)置列于表22.1中,讀者可對照下面的圖和表自己進(jìn)行程序界面的制作及設(shè)置。遠(yuǎn)程診療系統(tǒng)界面設(shè)計(1)設(shè)計模式下在窗體上右擊樹狀視圖控件,選擇“編輯項目”,彈出如圖22.10所示的“編輯樹窗口部件”對話框,在“列”選項卡中單擊左下角的“新建項目”(
)按鈕添加一列,文字編輯為“鼓樓醫(yī)院”,本例的樹狀視圖添加一列即可。遠(yuǎn)程診療系統(tǒng)界面設(shè)計(2)切換到“項目”選項卡,通過單擊“新建項目”(
)和“刪除項目”(
)按鈕在“鼓樓醫(yī)院”列下添加或移除子節(jié)點,通過單擊“新建子項目”(
)按鈕創(chuàng)建編輯下一級子節(jié)點,如圖22.11所示。遠(yuǎn)程診療系統(tǒng)界面設(shè)計最終編輯完成的樹狀視圖如圖22.12所示。第22章
【綜合實例】醫(yī)院遠(yuǎn)程診斷系統(tǒng)——遠(yuǎn)程診療系統(tǒng)功能實現(xiàn)01數(shù)據(jù)庫準(zhǔn)備1.設(shè)計表2.創(chuàng)建視圖1.設(shè)計表在MySQL中創(chuàng)建數(shù)據(jù)庫,名稱為patient,其中創(chuàng)建一個表user_profile。遠(yuǎn)程診斷系統(tǒng)數(shù)據(jù)庫表設(shè)計見表22.2。列
名類
型長
度允許空值說
明ssnchar18否社會保障號碼,主鍵namechar8否患者姓名sexchar2否性別,默認(rèn)為“男”ethnicchar10否民族,默認(rèn)為“漢”birthdate默認(rèn)否出生日期addressvarchar50是住址,默認(rèn)為NULLcasehistoryvarchar500是病歷,默認(rèn)為NULLpictureblob默認(rèn)是照片,默認(rèn)為NULL1.設(shè)計表設(shè)計好表之后,往表中預(yù)先錄入一些數(shù)據(jù)供后面測試運行程序用,如圖22.13所示。2.創(chuàng)建視圖(1)NavicatforMySQL自帶視圖編輯功能展開數(shù)據(jù)庫節(jié)點,右擊“視圖”→“新建視圖”,打開MySQL的視圖創(chuàng)建工具,如圖22.14所示。2.創(chuàng)建視圖(2)用SQL語句創(chuàng)建視圖單擊Navicat工具欄的“查詢”(
)→“新建查詢”(
)按鈕,打開查詢編輯器,輸入如下創(chuàng)建視圖的語句:CREATEVIEWdetails_inf(姓名,病歷,照片) AS selectname,casehistory,picturefromuser_profile然后單擊左上角工具欄的“運行”按鈕(
)執(zhí)行,如圖22.15所示。02Qt應(yīng)用程序主體框架Qt應(yīng)用程序主體框架本例程序源代碼包括三個文件:main.cpp、mainwindow.h和mainwindow.cpp。(1)main.cpp這是整個程序的主啟動文件,代碼如下:#include"mainwindow.h"#include<QApplication>#include<QProcess> //使用Qt的進(jìn)程模塊
intmain(intargc,char*argv[]){QApplicationa(argc,argv);if(!createMySqlConn()){//若初次嘗試連接不成功,就轉(zhuǎn)而用代碼方式啟動MySQL服務(wù)進(jìn)程QProcessprocess;process.start("C:/ProgramFiles/MySQL/MySQLServer5.6/bin/mysqld.exe");//第二次嘗試連接if(!createMySqlConn())return1;}MainWindoww; //創(chuàng)建主窗體w.show(); //顯示主窗體
returna.exec();}Qt應(yīng)用程序主體框架(2)mainwindow.h程序頭文件,包含程序中用到的各個全局變量的定義、方法聲明,代碼。在上面連接數(shù)據(jù)庫的createMySqlConn()方法中,有一段將患者照片插入數(shù)據(jù)庫的代碼,這是為了往MySQL中預(yù)先存入一些患者照片以便在運行程序時顯示,讀者可以先運行這段代碼將照片存入數(shù)據(jù)庫,在后面正式運行系統(tǒng)時再將插入照片的代碼段注釋掉就可以了。(3)mainwindow.cpp本程序的主體源文件中包含各方法功能的具體實現(xiàn)代碼,框架。03界面初始化功能實現(xiàn)界面初始化功能實現(xiàn)在窗體的構(gòu)造方法MainWindow::MainWindow(QWidget*parent)中是系統(tǒng)的如下初始化代碼:MainWindow::MainWindow(QWidget*parent):QMainWindow(parent),ui(newUi::MainWindow){ui->setupUi(this);initMainWindow();//基本信息視圖model=newQSqlTableModel(this); //(a)model->setTable("basic_inf");model->select();//附加詳細(xì)信息視圖model_d=newQSqlTableModel(this);model_d->setTable("details_inf");model_d->select();//數(shù)據(jù)網(wǎng)格信息加載ui->basicTableView->setModel(model);//初始化表單患者信息onTableSelectChange(0); //(b)}界面初始化功能實現(xiàn)其中,(a)model=newQSqlTableModel(this);:主程序中使用模型機(jī)制來訪問數(shù)據(jù)庫視圖信息,用頭文件中定義好的模型對象指針(QSqlTableModel*)model執(zhí)行操作,通過其“->setTable("視圖名稱")”指明要訪問的視圖名,“->select()”加載視圖數(shù)據(jù),加載完成后就可以在后面整個程序中隨時訪問到模型中的數(shù)據(jù)信息。(b)onTableSelectChange(0);:該方法在數(shù)據(jù)網(wǎng)格選擇的行變更時觸發(fā)執(zhí)行,它有一個參數(shù),用于指定要顯示的行,初始默認(rèn)置為0表示顯示第一行;若為1則表示動態(tài)獲取顯示當(dāng)前選中的行。界面初始化功能實現(xiàn)上段程序中的MainWindow::initMainWindow()方法用于具體執(zhí)行初始化窗體中要顯示的CT相片及系統(tǒng)當(dāng)前日期時間的功能,代碼如下:voidMainWindow::initMainWindow(){QStringctImgPath="D:\\Qt\\test\\Tumor.jpg";
//路徑中不能含中文字符,且圖像大小1000*500//QStringctImgPath="D:\\Qt\\test\\CT.jpg";MatctImg=imread(ctImgPath.toLatin1().data()); //讀取CT相片數(shù)據(jù)cvtColor(ctImg,ctImg,COLOR_BGR2RGB); //(a)myCtImg=ctImg; //(b)myCtQImage=QImage((constunsignedchar*)(ctImg.data),ctImg.cols,ctImg.rows,QImage::Format_RGB888);ctImgShow(); //(c)//時間日期更新QDatedate=QDate::currentDate(); //獲取當(dāng)前日期intyear=date.year();ui->yearLcdNumber->display(year); //顯示年份intmonth=date.month();ui->monthLcdNumber->display(month); //顯示月份intday=date.day();ui->dayLcdNumber->display(day); //顯示日期myTimer=newQTimer(); //創(chuàng)建一個QTimer對象myTimer->setInterval(1000);//設(shè)置定時器每隔多少毫秒發(fā)送一個timeout()信號myTimer->start(); //啟動定時
//綁定消息槽函數(shù)connect(myTimer,SIGNAL(timeout()),this,SLOT(onTimeOut())); //(d)}界面初始化功能實現(xiàn)其中,(a)cvtColor(ctImg,ctImg,COLOR_BGR2RGB);:由于OpenCV庫所支持的圖像格式與Qt的圖像格式存在差異,所以必須使用cvtColor()函數(shù)對圖像格式進(jìn)行轉(zhuǎn)換,才能使其在Qt程序界面上正常顯示。(b)myCtImg=ctImg;myCtQImage=Qimage(...):OpenCV所處理的圖像必須是Mat類型的緩存像素形式,才能被程序中的方法隨時調(diào)用處理;而Qt用于保存的圖片則必須統(tǒng)一轉(zhuǎn)為QImage類型,故本例程序中對圖像進(jìn)行每一步處理后,都將其分別以這兩種不同形式賦值給兩個變量暫存,以便隨時供處理或存盤用。在Qt中,QImage類型的圖像還可供界面顯示用。(c)ctImgShow();:顯示CT相片的語句封裝于方法ctImgShow()內(nèi),在整個程序范圍內(nèi)通用,其中僅有一條關(guān)鍵語句,如下:voidMainWindow::ctImgShow(){ui->CT_Img_Label->setPixmap(QPixmap::fromImage(myCtQImage.Scaled(ui->CT_Img_Label->size(),Qt::KeepAspectRatio))); //在QT界面上顯示CT相片}(d)connect(myTimer,SIGNAL(timeout()),this,SLOT(onTimeOut()));:onTimeOut()方法是觸發(fā)時間顯示更新事件消息所要執(zhí)行的方法,內(nèi)容為:voidMainWindow::onTimeOut(){QTimetime=QTime::currentTime(); //獲取當(dāng)前系統(tǒng)時間ui->timeEdit->setTime(time); //設(shè)置時間框里顯示的值}04診斷功能實現(xiàn)1.讀取CT相片2.分析CT相片進(jìn)行診斷3.保存診斷結(jié)果診斷功能實現(xiàn)界面上的“開始診斷”按鈕實現(xiàn)診斷功能,其事件代碼如下:voidMainWindow::on_startPushButton_clicked(){ctImgRead(); //打開和讀取患者的CT相片QTimetime;time.start();ui->progressBar->setMaximum(0); //(a)ui->progressBar->setMinimum(0);while(time.elapsed()<5000) //等待時間為5秒{QCoreApplication::processEvents(); //處理事件以保持界面刷新}ui->progressBar->setMaximum(100);ui->progressBar->setMinimum(0);ctImgProc(); //處理CT相片ui->progressBar->setValue(0);ctImgSave(); //保存結(jié)果相片}1.讀取CT相片ctImgRead()方法為醫(yī)生提供選擇所要分析的患者CT相片且讀取顯示的功能,實現(xiàn)代碼如下:voidMainWindow::ctImgRead(){QStringctImgName=QFileDialog::getOpenFileName(this,"載入CT相片",".","ImageFile(*.png*.jpg*.jpeg*.bmp)"); //打開圖片文件對話框if(ctImgName.isEmpty())return;MatctRgbImg,ctGrayImg;MatctImg=imread(ctImgName.toLatin1().data()); //讀取CT相片數(shù)據(jù)cvtColor(ctImg,ctRgbImg,COLOR_BGR2RGB); //格式轉(zhuǎn)換為RGBcvtColor(ctRgbImg,ctGrayImg,CV_RGB2GRAY); //格式轉(zhuǎn)換為灰度圖myCtImg=ctRgbImg;myCtGrayImg=ctGrayImg;myCtQImage=QImage((constunsignedchar*)(ctRgbImg.data),ctRgbImg.cols,ctRgbImg.rows,QImage::Format_RGB888);ctImgShow();}2.分析CT相片進(jìn)行診斷用OpenCV庫對打開的CT相片進(jìn)行處理,執(zhí)行ctImgProc()方法,代碼如下:voidMainWindow::ctImgProc(){QTimetime;time.start();ui->progressBar->setValue(19); //進(jìn)度條控制功能while(time.elapsed()<2000){QCoreApplication::processEvents();}ctImgHoughCircles(); //霍夫圓算法處理while(time.elapsed()<2000){QCoreApplication::processEvents();}ui->progressBar->setValue(ui->progressBar->value()+20);ctImgShow(); //顯示處理后的CT相片while(time.elapsed()<2000){QCoreApplication::processEvents();}ui->progressBar->setValue(ui->progressBar->maximum());QMessageBox::information(this,tr("完畢"),tr("子宮內(nèi)壁見橢球形陰影,疑似子宮肌瘤")); //消息框出診斷結(jié)果}其中的ctImgHoughCircles()方法以Contrib擴(kuò)展庫中的霍夫圓算法檢測和定位病灶所在之處,實現(xiàn)代碼。3.保存診斷結(jié)果將診斷結(jié)果保存在指定的目錄下,用ctImgSave()方法實現(xiàn),代碼如下:voidMainWindow::ctImgSave(){QFileimage("D:\\Qt\\imgproc\\Tumor_1.jpg"); //指定保存路徑及文件名if(!image.open(QIODevice::ReadWrite))return;QByteArrayqba; //緩存的字節(jié)數(shù)組QBufferbuf(&qba); //緩存區(qū)buf.open(QIODevice::WriteOnly); //以只寫方式打開緩存區(qū)myCtQImage.save(&buf,"JPG"); //以JPG格式寫入緩存image.write(qba); //將緩存數(shù)據(jù)寫入圖像文件}05患者信息表單1.顯示表單信息2.顯示照片3.病歷聯(lián)動填寫1.顯示表單信息當(dāng)用戶選擇數(shù)據(jù)網(wǎng)格中某患者的記錄條目時,執(zhí)行onTableSelectChange()方法,在表單中顯示該患者的信息,實現(xiàn)代碼如下:voidMainWindow::on_basicTableView_clicked(constQModelIndex&index){onTableSelectChange(1);}參數(shù)(1)表示獲取當(dāng)前選中的條目行索引。onTableSelectChange()方法的實現(xiàn)代碼。2.顯示照片showUserPhoto()方法顯示患者照片,實現(xiàn)代碼如下:voidMainWindow::showUserPhoto(){QPixmapphoto;QModelIndexindex;for(inti=0;i<model_d->rowCount();i++){index=model_d->index(i,0);QStringcurrent_name=model_d->data(index).toString();if(current_pare(ui->nameLabel->text())==0){index=model_d->index(i,2);break;}}photo.loadFromData(model_d->data(index).toByteArray(),"JPG");ui->photoLabel->setPixmap(photo);}3.病歷聯(lián)動填寫當(dāng)切換到“病歷”選項卡時,聯(lián)動填寫并顯示該患者的詳細(xì)病歷信息,該功能的實現(xiàn)代碼如下:voidMainWindo
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 在線教育平臺數(shù)字轉(zhuǎn)型助力教學(xué)質(zhì)量飛躍
- 化工園區(qū)2025年安全環(huán)保提升項目風(fēng)險預(yù)警與穩(wěn)定評估報告
- 技術(shù)革新下的數(shù)字媒體藝術(shù)發(fā)展趨勢
- 醫(yī)療支付創(chuàng)新數(shù)字人民幣的應(yīng)用與挑戰(zhàn)
- 以智能制造為驅(qū)動的數(shù)字化變革實例分享
- KPI在數(shù)字化轉(zhuǎn)型中的關(guān)鍵作用
- 工業(yè)互聯(lián)網(wǎng)平臺項目運營管理方案(范文模板)
- 廣播媒體融合轉(zhuǎn)型2025:新媒體環(huán)境下媒體融合的法規(guī)與政策報告
- 商業(yè)決策中數(shù)字協(xié)作技術(shù)的價值與影響
- 代碼教育開啟小學(xué)歷史課堂的新篇章
- 車棚維修協(xié)議書
- 2024年西安曲江二小教師招聘真題
- 四川省2025屆高三第二次聯(lián)合測評-英語試卷+答案
- 2025瑞典語等級考試B1級模擬試卷
- 2024年全國工會財務(wù)知識大賽備賽試題庫500(含答案)
- 2025-2030中國貿(mào)易融資行業(yè)市場發(fā)展現(xiàn)狀及發(fā)展趨勢與投資戰(zhàn)略研究報告
- 2024年自治區(qū)文化和旅游廳所屬事業(yè)單位招聘工作人員考試真題
- 法院輔警筆試題及答案
- 雇保姆看孩子合同協(xié)議
- (四模)長春市2025屆高三質(zhì)量監(jiān)測(四)語文試卷(含答案詳解)
- 《小米營銷策略》課件
評論
0/150
提交評論