彩票走势图

【示例教程】如何使用LEADTOOLS实现一个简单的PACS查询客户端

原创|使用教程|编辑:黄竹雯|2018-02-24 14:51:31.000|阅读 497 次

概述:本篇教程讲解如何使用相关的接口进行代码编写,实现Dicom协议中的查询操作。

# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>

相关链接:

Leadtools 19总套包下载>>>

leadtools提供了封装后的dicom插件,可以非常方便的开发出dicom 通讯部分的组件,本篇教程讲解如何使用相关的接口进行代码编写,实现Dicom协议中的查询操作。
 
1.用vs2015创建一个winform项目,引用下面的dll,并在代码里引用
using Leadtools;
using Leadtools.Dicom;
using Leadtools.Dicom.Scu.Common;
using Leadtools.Dicom.Scu;
using Leadtools.MedicalViewer;
using System.Net;
using System.IO;
 
2.创建下面的对象
// CFind highlevel 对象
        private QueryRetrieveScu _cfind;
        private DicomScp _server = new DicomScp();
        private TreeNode _currentnode;
        private MedicalViewer _viewer;
 
3.初始化服务器和客户端参数,
本次用的服务器即是开发包中运行pacs服务器设置程序后,创建的L19_PACS_SCP64
在查询过程中主要是使用MatchStudy和MatchSeries事件来获取相应的结果,使用Moved事件来接收传输过来的图片
private void initServer() {
            _server = new DicomScp();
            _server.AETitle = "L19_PACS_SCP64";
            _server.PeerAddress = IPAddress.Parse("10.32.1.75");
            _server.Port = 534;
            _server.Timeout = 30;
        }
private void initCfind()
        {
            _cfind = new QueryRetrieveScu();
            _cfind.AETitle = "L19_CLIENT64";
            _cfind.HostPort = 1030;

            //查询Study
            _cfind.MatchStudy += _cfind_MatchStudy;

            //查询Series
            _cfind.MatchSeries += _cfind_MatchSeries;

            //MOVE
            _cfind.Moved += _cfind_Moved;
        }
private void _cfind_MatchSeries(object sender, MatchEventArgs<Series> e)
        {
            TreeNode seriesnode = new TreeNode(e.Info.Date != null ? e.Info.Date.Value.ToShortDateString() : "未知");
            seriesnode.Tag = e.Info;

            _currentnode.Nodes.Add(seriesnode);
        }

        private void _cfind_MatchStudy(object sender, MatchEventArgs<Study> e)
        {
            TreeNode studynode = new TreeNode(e.Info.Patient.Name.Full);
            studynode.Tag = e.Info;
            querytree.Nodes.Add(studynode);
        }
public delegate void ReceiveFindMovedDelegate(Leadtools.Dicom.Scu.Common.MovedEventArgs e);
        private void _cfind_Moved(object sender, MovedEventArgs e)
        {
            ReceiveFindMoved(e);
        }
        //加载图片
        void ReceiveFindMoved(MovedEventArgs e) {
            if (InvokeRequired)
            {
                Invoke(new ReceiveFindMovedDelegate(ReceiveFindMoved), e);
            }
            else
            {
                ImageInstance instance = e.Instance as ImageInstance;

                int cols = 1;
                int rows = 1;
                RasterImage ri = instance.Images;

                if (instance != null && instance.Images != null)
                {
                    int pageCount = instance.Images.PageCount;
                    if (pageCount > 1)
                    {
                        // Display at most 6 x 6 (36) frames
                        if (pageCount >= 36)
                        {
                            cols = 6;
                            rows = 6;
                        }
                        else
                        {
                            cols = (int)Math.Floor(Math.Sqrt(pageCount));
                            rows = (int)Math.Ceiling((double)pageCount / cols);
                        }
                    }

                    MedicalViewerMultiCell m = GetCell();

                    m.Rows = rows;
                    m.Columns = cols;

                    if (m.Image != null)
                    {
                        for (int pageIndex = 0; pageIndex < instance.Images.PageCount; pageIndex++)
                        {
                            instance.Images.Page = pageIndex + 1;

                            try
                            {
                                m.Image.AddPage(instance.Images);
                            }
                            catch (Exception ex)
                            {
                                Console.WriteLine(ex.Message);
                            }
                        }
                    }
                    else
                    {
                        m.Image = instance.Images;
                    }

                    if (pageCount > 1)
                    {
                        m.SetTag(0, MedicalViewerTagAlignment.TopLeft, MedicalViewerTagType.Frame);
                        m.ShowTags = true;
                    }
                    m.SetTag(1, MedicalViewerTagAlignment.BottomLeft, MedicalViewerTagType.WindowLevelData);

                    // Give the medical viewer cell the focus
                    if (_viewer.Cells.Count > 0 &&
                          _viewer.Cells[0] is MedicalViewerBaseCell)
                    {
                        (_viewer.Cells[0] as MedicalViewerBaseCell).Selected = true;
                    }

                    m.SetScaleMode(MedicalViewerScaleMode.Fit);
                }
            }

        }
 

初始化完成后即可使用下面的命令来查询
查询study
_cfind.Find(_server, new FindQuery());
 
查询特定study的series
FindQuery query = new FindQuery();
Study study = td.Tag as Study;
query.QueryLevel = QueryLevel.Series;
query.PatientId = study.Patient.Id;
query.StudyInstanceUID = study.InstanceUID;
_cfind.Find(_server, query);
 
用Move方法检索图片,参数依次为服务器对象,客户端aetitle,Study InstanceUID,Series InstanceUID
_cfind.Move(_server, _cfind.AETitle, (e.Node.Parent.Tag as Study).InstanceUID, (e.Node.Tag as Series).InstanceUID);

标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@cahobeh.cn


为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
相关产品
LEADTOOLS Imaging Pro Developer Toolkit

20多年的老牌图像处理控件,支持TWAIN扫描、200多种图像效果、150多种图像格式…

LEADTOOLS Document Suite Developer Toolkit

LEADTOOLS Document Imaging Suite SDK是LEADTOOLS SDK中各种特点的精选组合,这套强大的工具利用了LEAD行业领先的图像处理技术来智能地识别文档的特征,而根据文档的特征可以识别扫描的或传真的任何类型的表格图像。

LEADTOOLS Document Imaging Developer Toolkit

多语言的文档图像处理控件,支持光符识别处理、条形码扫描识别等。

LEADTOOLS Medical Developer Toolkit

LEADTOOLS Medical Imaging是一款医疗成像控件,包含了一些精心挑选的、经过优化的特性,可以满足医疗成像应用程序开发的特殊需要。

LEADTOOLS Medical Imaging Suite Developer Toolkit

LEADTOOLS Medical Imaging Suite帮您开发功能强大的PACS和医学成像应用程序

扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP