版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
第22章
【綜合實(shí)例】醫(yī)院遠(yuǎn)程診斷系統(tǒng)——遠(yuǎn)程診斷系統(tǒng)功能需求2023最新整理收集do
something遠(yuǎn)程診斷系統(tǒng)功能需求系統(tǒng)功能主要包括:(1)南京全市各分區(qū)醫(yī)院診療點(diǎn)科室管理。(2)CT影像的遠(yuǎn)程處理及診斷。(3)患者建檔信息選項(xiàng)卡表單。(4)后臺(tái)患者信息數(shù)據(jù)庫(kù)瀏覽。01診療點(diǎn)科室管理診療點(diǎn)科室管理診療點(diǎn)科室管理功能顯示效果如圖22.1所示。02CT影像顯示和處理診療點(diǎn)科室管理CT影像的遠(yuǎn)程處理及診斷如圖22.2所示,圖中央顯示一幅高清CT相片,右上角有年月日及時(shí)間顯示。03患者信息選項(xiàng)卡患者信息選項(xiàng)卡以表單形式顯示患者的基本建檔信息,如圖22.3所示,包括“信息”和“病歷”兩個(gè)選項(xiàng)長(zhǎng)。04后臺(tái)數(shù)據(jù)庫(kù)瀏覽后臺(tái)數(shù)據(jù)庫(kù)瀏覽患者的全部信息存儲(chǔ)于后臺(tái)數(shù)據(jù)庫(kù)MySQL中,在一個(gè)基本表上建立了兩個(gè)視圖,分別用于顯示基本信息和詳細(xì)信息病歷,信息在界面上以Qt的數(shù)據(jù)網(wǎng)格表控件展示,如圖22.4所示。05界面的總體效果界面的總體效果最終顯示出的界面的總體效果如圖22.5所示。第22章
【綜合實(shí)例】醫(yī)院遠(yuǎn)程診斷系統(tǒng)——Qt項(xiàng)目工程創(chuàng)建與配置Qt項(xiàng)目工程創(chuàng)建與配置(1)創(chuàng)建Qt桌面應(yīng)用程序項(xiàng)目,項(xiàng)目名稱為Telemedicine。創(chuàng)建完成后,在QtCreator開發(fā)環(huán)境中單擊左側(cè)欄的
按鈕切換至項(xiàng)目配置模式,如圖22.6所示。Qt項(xiàng)目工程創(chuàng)建與配置(2)將之前編譯安裝得到的OpenCV(含Contrib)庫(kù)文件,即D:\OpenCV_3.4.3-Build\install\x86\mingw\bin下的全部文件復(fù)制到項(xiàng)目的debug目錄,如圖22.7所示。(3)修改項(xiàng)目的.pro配置文件,在其中添加配置項(xiàng)。配置文件T內(nèi)容如下(加黑處為需要修改添加的地方)。第22章
【綜合實(shí)例】醫(yī)院遠(yuǎn)程診斷系統(tǒng)——遠(yuǎn)程診療系統(tǒng)界面設(shè)計(jì)遠(yuǎn)程診療系統(tǒng)界面設(shè)計(jì)在開發(fā)環(huán)境項(xiàng)目目錄樹狀視圖中,雙擊mainwindow.ui切換至遠(yuǎn)程診療系統(tǒng)可視化界面設(shè)計(jì)模式,如圖22.8所示,在其上拖曳設(shè)計(jì)出遠(yuǎn)程診療系統(tǒng)的整個(gè)圖形界面。遠(yuǎn)程診療系統(tǒng)界面設(shè)計(jì)為方便讀者試做,我們對(duì)界面上所有的控件都進(jìn)行了①,②,③,…的數(shù)字標(biāo)識(shí)(如圖22.9所示),并將它們的類型、名稱及屬性設(shè)置列于表22.1中,讀者可對(duì)照下面的圖和表自己進(jìn)行程序界面的制作及設(shè)置。遠(yuǎn)程診療系統(tǒng)界面設(shè)計(jì)(1)設(shè)計(jì)模式下在窗體上右擊樹狀視圖控件,選擇“編輯項(xiàng)目”,彈出如圖22.10所示的“編輯樹窗口部件”對(duì)話框,在“列”選項(xiàng)卡中單擊左下角的“新建項(xiàng)目”(
)按鈕添加一列,文字編輯為“鼓樓醫(yī)院”,本例的樹狀視圖添加一列即可。遠(yuǎn)程診療系統(tǒng)界面設(shè)計(jì)(2)切換到“項(xiàng)目”選項(xiàng)卡,通過(guò)單擊“新建項(xiàng)目”(
)和“刪除項(xiàng)目”(
)按鈕在“鼓樓醫(yī)院”列下添加或移除子節(jié)點(diǎn),通過(guò)單擊“新建子項(xiàng)目”(
)按鈕創(chuàng)建編輯下一級(jí)子節(jié)點(diǎn),如圖22.11所示。遠(yuǎn)程診療系統(tǒng)界面設(shè)計(jì)最終編輯完成的樹狀視圖如圖22.12所示。第22章
【綜合實(shí)例】醫(yī)院遠(yuǎn)程診斷系統(tǒng)——遠(yuǎn)程診療系統(tǒng)功能實(shí)現(xiàn)01數(shù)據(jù)庫(kù)準(zhǔn)備1.設(shè)計(jì)表2.創(chuàng)建視圖1.設(shè)計(jì)表在MySQL中創(chuàng)建數(shù)據(jù)庫(kù),名稱為patient,其中創(chuàng)建一個(gè)表user_profile。遠(yuǎn)程診斷系統(tǒng)數(shù)據(jù)庫(kù)表設(shè)計(jì)見(jiàn)表22.2。列
名類
型長(zhǎng)
度允許空值說(shuō)
明ssnchar18否社會(huì)保障號(hào)碼,主鍵namechar8否患者姓名sexchar2否性別,默認(rèn)為“男”ethnicchar10否民族,默認(rèn)為“漢”birthdate默認(rèn)否出生日期addressvarchar50是住址,默認(rèn)為NULLcasehistoryvarchar500是病歷,默認(rèn)為NULLpictureblob默認(rèn)是照片,默認(rèn)為NULL1.設(shè)計(jì)表設(shè)計(jì)好表之后,往表中預(yù)先錄入一些數(shù)據(jù)供后面測(cè)試運(yùn)行程序用,如圖22.13所示。2.創(chuàng)建視圖(1)NavicatforMySQL自帶視圖編輯功能展開數(shù)據(jù)庫(kù)節(jié)點(diǎn),右擊“視圖”→“新建視圖”,打開MySQL的視圖創(chuàng)建工具,如圖22.14所示。2.創(chuàng)建視圖(2)用SQL語(yǔ)句創(chuàng)建視圖單擊Navicat工具欄的“查詢”(
)→“新建查詢”(
)按鈕,打開查詢編輯器,輸入如下創(chuàng)建視圖的語(yǔ)句:CREATEVIEWdetails_inf(姓名,病歷,照片) AS selectname,casehistory,picturefromuser_profile然后單擊左上角工具欄的“運(yùn)行”按鈕(
)執(zhí)行,如圖22.15所示。02Qt應(yīng)用程序主體框架Qt應(yīng)用程序主體框架本例程序源代碼包括三個(gè)文件:main.cpp、mainwindow.h和mainwindow.cpp。(1)main.cpp這是整個(gè)程序的主啟動(dòng)文件,代碼如下:#include"mainwindow.h"#include<QApplication>#include<QProcess> //使用Qt的進(jìn)程模塊
intmain(intargc,char*argv[]){QApplicationa(argc,argv);if(!createMySqlConn()){//若初次嘗試連接不成功,就轉(zhuǎn)而用代碼方式啟動(dòng)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程序頭文件,包含程序中用到的各個(gè)全局變量的定義、方法聲明,代碼。在上面連接數(shù)據(jù)庫(kù)的createMySqlConn()方法中,有一段將患者照片插入數(shù)據(jù)庫(kù)的代碼,這是為了往MySQL中預(yù)先存入一些患者照片以便在運(yùn)行程序時(shí)顯示,讀者可以先運(yùn)行這段代碼將照片存入數(shù)據(jù)庫(kù),在后面正式運(yùn)行系統(tǒng)時(shí)再將插入照片的代碼段注釋掉就可以了。(3)mainwindow.cpp本程序的主體源文件中包含各方法功能的具體實(shí)現(xiàn)代碼,框架。03界面初始化功能實(shí)現(xiàn)界面初始化功能實(shí)現(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)}界面初始化功能實(shí)現(xiàn)其中,(a)model=newQSqlTableModel(this);:主程序中使用模型機(jī)制來(lái)訪問(wèn)數(shù)據(jù)庫(kù)視圖信息,用頭文件中定義好的模型對(duì)象指針(QSqlTableModel*)model執(zhí)行操作,通過(guò)其“->setTable("視圖名稱")”指明要訪問(wèn)的視圖名,“->select()”加載視圖數(shù)據(jù),加載完成后就可以在后面整個(gè)程序中隨時(shí)訪問(wèn)到模型中的數(shù)據(jù)信息。(b)onTableSelectChange(0);:該方法在數(shù)據(jù)網(wǎng)格選擇的行變更時(shí)觸發(fā)執(zhí)行,它有一個(gè)參數(shù),用于指定要顯示的行,初始默認(rèn)置為0表示顯示第一行;若為1則表示動(dòng)態(tài)獲取顯示當(dāng)前選中的行。界面初始化功能實(shí)現(xiàn)上段程序中的MainWindow::initMainWindow()方法用于具體執(zhí)行初始化窗體中要顯示的CT相片及系統(tǒng)當(dāng)前日期時(shí)間的功能,代碼如下: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)//時(shí)間日期更新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)建一個(gè)QTimer對(duì)象myTimer->setInterval(1000);//設(shè)置定時(shí)器每隔多少毫秒發(fā)送一個(gè)timeout()信號(hào)myTimer->start(); //啟動(dòng)定時(shí)
//綁定消息槽函數(shù)connect(myTimer,SIGNAL(timeout()),this,SLOT(onTimeOut())); //(d)}界面初始化功能實(shí)現(xiàn)其中,(a)cvtColor(ctImg,ctImg,COLOR_BGR2RGB);:由于OpenCV庫(kù)所支持的圖像格式與Qt的圖像格式存在差異,所以必須使用cvtColor()函數(shù)對(duì)圖像格式進(jìn)行轉(zhuǎn)換,才能使其在Qt程序界面上正常顯示。(b)myCtImg=ctImg;myCtQImage=Qimage(...):OpenCV所處理的圖像必須是Mat類型的緩存像素形式,才能被程序中的方法隨時(shí)調(diào)用處理;而Qt用于保存的圖片則必須統(tǒng)一轉(zhuǎn)為QImage類型,故本例程序中對(duì)圖像進(jìn)行每一步處理后,都將其分別以這兩種不同形式賦值給兩個(gè)變量暫存,以便隨時(shí)供處理或存盤用。在Qt中,QImage類型的圖像還可供界面顯示用。(c)ctImgShow();:顯示CT相片的語(yǔ)句封裝于方法ctImgShow()內(nèi),在整個(gè)程序范圍內(nèi)通用,其中僅有一條關(guān)鍵語(yǔ)句,如下: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ā)時(shí)間顯示更新事件消息所要執(zhí)行的方法,內(nèi)容為:voidMainWindow::onTimeOut(){QTimetime=QTime::currentTime(); //獲取當(dāng)前系統(tǒng)時(shí)間ui->timeEdit->setTime(time); //設(shè)置時(shí)間框里顯示的值}04診斷功能實(shí)現(xiàn)1.讀取CT相片2.分析CT相片進(jìn)行診斷3.保存診斷結(jié)果診斷功能實(shí)現(xiàn)界面上的“開始診斷”按鈕實(shí)現(xiàn)診斷功能,其事件代碼如下:voidMainWindow::on_startPushButton_clicked(){ctImgRead(); //打開和讀取患者的CT相片QTimetime;time.start();ui->progressBar->setMaximum(0); //(a)ui->progressBar->setMinimum(0);while(time.elapsed()<5000) //等待時(shí)間為5秒{QCoreApplication::processEvents(); //處理事件以保持界面刷新}ui->progressBar->setMaximum(100);ui->progressBar->setMinimum(0);ctImgProc(); //處理CT相片ui->progressBar->setValue(0);ctImgSave(); //保存結(jié)果相片}1.讀取CT相片ctImgRead()方法為醫(yī)生提供選擇所要分析的患者CT相片且讀取顯示的功能,實(shí)現(xiàn)代碼如下:voidMainWindow::ctImgRead(){QStringctImgName=QFileDialog::getOpenFileName(this,"載入CT相片",".","ImageFile(*.png*.jpg*.jpeg*.bmp)"); //打開圖片文件對(duì)話框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庫(kù)對(duì)打開的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àn)橢球形陰影,疑似子宮肌瘤")); //消息框出診斷結(jié)果}其中的ctImgHoughCircles()方法以Contrib擴(kuò)展庫(kù)中的霍夫圓算法檢測(cè)和定位病灶所在之處,實(shí)現(xiàn)代碼。3.保存診斷結(jié)果將診斷結(jié)果保存在指定的目錄下,用ctImgSave()方法實(shí)現(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)動(dòng)填寫1.顯示表單信息當(dāng)用戶選擇數(shù)據(jù)網(wǎng)格中某患者的記錄條目時(shí),執(zhí)行onTableSelectChange()方法,在表單中顯示該患者的信息,實(shí)現(xiàn)代碼如下:voidMainWindow::on_basicTableView_clicked(constQModelIndex&index){onTableSelectChange(1);}參數(shù)(1)表示獲取當(dāng)前選中的條目行索引。onTableSelectChange()方法的實(shí)現(xiàn)代碼。2.顯示照片showUserPhoto()方法顯示患者照片,實(shí)現(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)填寫當(dāng)切換到“病歷”選項(xiàng)卡時(shí),聯(lián)動(dòng)填寫并顯示該患者的詳細(xì)病歷信息,該功能的實(shí)現(xiàn)代碼如下:voidMainWindo
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五版苗木種植與農(nóng)業(yè)綜合開發(fā)合同樣本4篇
- 二零二五年度教育培訓(xùn)股東股權(quán)轉(zhuǎn)讓與合作辦學(xué)合同2篇
- 二零二五版嬰幼兒奶粉國(guó)際市場(chǎng)拓展與出口合同4篇
- 2025版綠色環(huán)保型商品房預(yù)售買賣合同3篇
- 2025年度校服品牌授權(quán)與校園形象塑造合同3篇
- 2025年度事業(yè)單位合同工勞動(dòng)法執(zhí)行監(jiān)督評(píng)估合同3篇
- 2025年度生鮮配送冷鏈物流承包合同范本3篇
- 2025年度個(gè)人傭金提成與長(zhǎng)期激勵(lì)合同2篇
- 課題申報(bào)參考:能源數(shù)據(jù)要素賦能可再生能源電力生產(chǎn)的機(jī)制與對(duì)策研究
- 課題申報(bào)參考:民族傳統(tǒng)體育與體育非物質(zhì)文化遺產(chǎn)的傳承與保護(hù)研究
- 2025年N1叉車司機(jī)考試試題(附答案)
- 《醫(yī)院財(cái)務(wù)分析報(bào)告》課件
- 2025老年公寓合同管理制度
- 2024-2025學(xué)年人教版數(shù)學(xué)六年級(jí)上冊(cè) 期末綜合卷(含答案)
- 2024中國(guó)汽車后市場(chǎng)年度發(fā)展報(bào)告
- 感染性腹瀉的護(hù)理查房
- 天津市部分區(qū)2023-2024學(xué)年高二上學(xué)期期末考試 物理 含解析
- 《人工智能基礎(chǔ)》全套英語(yǔ)教學(xué)課件(共7章)
- GB/T 35613-2024綠色產(chǎn)品評(píng)價(jià)紙和紙制品
- 2022-2023學(xué)年五年級(jí)數(shù)學(xué)春季開學(xué)摸底考(四)蘇教版
- 【螞蟻?!?024中國(guó)商業(yè)醫(yī)療險(xiǎn)發(fā)展研究藍(lán)皮書
評(píng)論
0/150
提交評(píng)論