病人管理系统中查看管理图片功能的实现

在我的共享软件-病人资料管理系统(该软件是是一款针对病人基本情况、手术情况、化疗情况、随访情况的存储、修改维护、条件查询、导出导出Excel、科室数据合并、图片查找、数据打印、高级查询等功能的软件)中,客户需要实现对某个属性的图片进行管理维护,图片数量要求有多个,而且同一个资料编辑或者查看中,有很多这样的字段要求进行图片管理,效果如下所示。

 
基本实现方式就是在每个需要保存图片字段用GUID来记录,然后图片记录放到一个独立的表总,通过GUID来识别是属于那种类型的图片。

我们要保证在新建及编辑的时候,都可以正常的添加管理图片,那么我们就需要在加载信息的时候,设置对应按钮的Tag为一个独立的GUID字段,类似下面的代码:

新建的时候,设置类似下面的代码:

             this .btnSHCT.Tag  =  Guid.NewGuid().ToString();
            
this .btnSHMRI.Tag  =  Guid.NewGuid().ToString();
            
this .btnSHXRAY.Tag  =  Guid.NewGuid().ToString();
            
this .btnSQCT.Tag  =  Guid.NewGuid().ToString();
            
this .btnSQMRI.Tag  =  Guid.NewGuid().ToString();
            this.btnSQXRAY.Tag = Guid.NewGuid().ToString(); 

编辑的时候,类似i下面的代码: 

                 this .btnSHCT.Tag  =   string .IsNullOrEmpty(info.术后CT)  ?  Guid.NewGuid().ToString() : info.术后CT;
                
this .btnSHMRI.Tag  =   string .IsNullOrEmpty(info.术后MRI)  ?  Guid.NewGuid().ToString() : info.术后MRI;
                
this .btnSHXRAY.Tag  =   string .IsNullOrEmpty(info.术后XRay)  ?  Guid.NewGuid().ToString() : info.术后XRay;
                
this .btnSQCT.Tag  =   string .IsNullOrEmpty(info.术前CT)  ?  Guid.NewGuid().ToString() : info.术前CT;
                
this .btnSQMRI.Tag  =   string .IsNullOrEmpty(info.术前MRI)  ?  Guid.NewGuid().ToString() : info.术前MRI;
                this.btnSQXRAY.Tag = string.IsNullOrEmpty(info.术前XRay) ? Guid.NewGuid().ToString() : info.术前XRay; 


 查看图片的时候,实现就是下面所示的代码:

         private   void  btnSHXRAY_Click( object  sender, EventArgs e)
        {
            Button btn 
=  sender  as  Button;
            
string  itemID  =  btn.Tag.ToString();
            SetPictureButtonData(itemID);
        } 


         private void SetPictureButtonData(string existItemID, string sfDate)
        {
            
#region  验证条件
            
if  ( this .txtName.Text.Length  ==   0 )
            {
                MessageUtil.ShowTips(
" 查看管理图片需要先确定患者姓名 " );
                
this .txtName.Focus();
                
return ;
            }
            
else   if  ( this .txtHospitalNo.Text.Length  ==   0 )
            {
                MessageUtil.ShowTips(
" 查看管理图片需要先确定患者住院号 " );
                
this .txtHospitalNo.Focus();
                
return ;
            } 
            
#endregion

            FrmPictureView dlg 
=   new  FrmPictureView();
            
if  ( ! string .IsNullOrEmpty(existItemID))
            {
                dlg.ItemID 
=  existItemID;
            }
            
else
            {
                dlg.ItemID 
=  Guid.NewGuid().ToString();
            }

            dlg.SFDate 
=  sfDate;
            dlg.PatienName 
=   this .txtName.Text;
            dlg.HospitalNo 
=   this .txtHospitalNo.Text;
            dlg.ShowDialog();
        }

        
private   void  SetPictureButtonData( string  existItemID)
        {
            SetPictureButtonData(existItemID, 
"" );
        }

 而所有图片管理都是用一个窗体来实现,设计视图如下所示:

 

 窗体相关的实现代码如下所示:

         private   void  sortableListView1_MouseDoubleClick( object  sender, MouseEventArgs e)
        {
            
if  ( this .sortableListView1.SelectedItems.Count  ==   0 )
                
return ;

            ListViewItem item 
=   this .sortableListView1.SelectedItems[ 0 ];
            
if  (item  !=   null   &&  item.Tag  != null )
            {
                PatientPictureInfo info 
=  item.Tag  as  PatientPictureInfo;
                
if  (info  !=   null   &&  File.Exists(info.PicturePath))
                {
                    Process.Start(info.PicturePath);
                }
                
else
                {
                    MessageUtil.ShowTips(
" 图片文件路径不存在! " );
                }
            }
        }

        
private   void  FrmPictureView_Load( object  sender, EventArgs e)
        {
            BindData();
        }

        
private   void  BindData()
        {
            
if  ( ! string .IsNullOrEmpty(ItemID))
            {
                
this .sortableListView1.Items.Clear();
                List
< PatientPictureInfo >  list  =  BLLFactory < PatientPicture > .Instance.GetAllByItemID( this .ItemID);
                
foreach  (PatientPictureInfo info  in  list)
                {
                    ListViewItem item 
=   new  ListViewItem(info.FileName);
                    item.SubItems.Add(info.PicturePath);
                    item.Tag 
=  info;

                    
this .sortableListView1.Items.Add(item);
                }
            }
        }

        
private   void  btnClear_Click( object  sender, EventArgs e)
        {
            
if  (MessageUtil.ShowYesNoAndWarning( " 您是否确定清除该项目的所有图片记录?\r\n确定后将清除记录但不删除本地图片文件! " ==  DialogResult.Yes)
            {
                
try
                {
                    
bool  success  =  BLLFactory < PatientPicture > .Instance.DeleteAllByItemID( this .ItemID);
                }
                
catch  { }
                
                BindData();
            }
        }

        
private   void  btnAdd_Click( object  sender, EventArgs e)
        {   
            
string  pictureRootDir  =  ConfigurationManager.AppSettings[ " PictureRootDir " ];
            
if  ( string .IsNullOrEmpty(pictureRootDir))
            {
                MessageUtil.ShowError(
" 没有配置项PictureRootDir,请设置一个存放图片文件的主目录! " );
                
return ;
            }

            
string  ImageFilter  =   " Image Files(*.BMP;*.bmp;*.JPG;*.jpg;*.GIF;*.gif;*.PNG;*.png)|(*.BMP;*.bmp;*.JPG;*.jpg;*.GIF;*.gif;*.PNG;*.png)|All File(*.*)|*.* " ;
            OpenFileDialog dialog 
=   new  OpenFileDialog();
            dialog.Filter 
=  ImageFilter;
            dialog.Title 
=   " 请选择图片 " ;
            dialog.RestoreDirectory 
=   true ;
            dialog.InitialDirectory 
=   " D:\\ " ;
            dialog.AddExtension 
=   true ;
            dialog.Multiselect 
=   true ;
            
if  (dialog.ShowDialog()  ==  DialogResult.OK)
            {
                
string [] filenameArray  =  dialog.FileNames;
                
foreach  ( string  filePath  in  filenameArray)
                {
                    
try
                    {
                        
string  temp  =   string .Format( " {0}-{1} " , PatienName, HospitalNo);
                        
string  targetFilePath  =  Path.Combine(pictureRootDir, temp);
                        
// 如果随访日期非空,那么增加一个随访目录(随访(2011-01-01))
                         if  ( ! string .IsNullOrEmpty(SFDate))
                        {
                            targetFilePath 
=  Path.Combine(targetFilePath,  string .Format( " 随访({0}) " , SFDate));
                        }
                        DirectoryUtil.AssertDirExist(targetFilePath);

                        
string  fileName  =  DirectoryUtil.GetFileName(filePath,  false );
                        
string  targetFilenamePath  =  Path.Combine(targetFilePath, fileName);
                        DirectoryUtil.Copy(filePath, targetFilenamePath);

                        PatientPictureInfo info 
=   new  PatientPictureInfo();
                        info.ItemID 
=  ItemID;
                        info.FileName 
=  fileName;
                        info.PicturePath 
=  targetFilenamePath;
                        BLLFactory
< PatientPicture > .Instance.Insert(info);
                    }
                    
catch (Exception ex) 
                    {
                        LogHelper.Error(ex);
                        MessageUtil.ShowTips(ex.Message);
                    }
                }
                BindData();
            }
        } 

以上就是实现的相关逻辑,起主要思路就是为每个字段分配一个独立的GUID,然后新建或者编辑的时候,也要确保GUID的有效性,那样我们把图片存储复制到目录的时候,记录下来的图片地址就可以把它放到数据库记录总,然后查看图片(双击ListVIew选项),就调用图片浏览器显示图片即可。如果为了不让客户安装查看图片工具,也可以自己做一个查看图片的PictureBOx即可。这样就可以实现多个字段多个图片的管理,总体效果还是可以的。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
随着信息技术的飞速发展,我国医疗卫生行业的信息化建设取得了显著成效。但与发达国家相比,无论是从信息技术应用的广度和深度上,还是从开发的规模和水平上,还存在着一定的差距。目前,国内的医疗信息化建设仍存在着资金投入少,技术力量薄弱,从业人员知识结构欠佳,管理标准不规范等问题。绝大部分医院没有全面实现计算机管理,部分医院的计算机应用仍停留在简单的财务管理模式上,因此,从严格意义上讲,我国医院的信息处理基本上还停留在手工方式,劳动强度大且工作效率低,医师护士和管理人员的大量时间都消耗在事务性工作上,致使"人不能尽其才";病人排队等候时间长,辗转过程多,影响医院的秩序;病案、临床检验、病理检查等许多宝贵的数据资料的检索十分费事甚至难以实现;对这些资料深入的统计分析手工方式无法进行,不能充分为医学科研利用;在经济管理上也因而存在漏、跑、错费现象;医院物资管理由于信息不准确,家底不明,积压浪费,以致"物不能尽其用"。开发HIS是解决上述问题的有效途径。HIS系统的有效运行,将提高医院各项工作的效率和质量,促进医学科研、教学;减轻各类事务性工作的劳动强度,使他们腾出更多的精力和时间来服务于病人;改善经营管理,堵塞漏洞,保证病人和医院的经济利益;为医院创造经济效益。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值