原創|使用教程|編輯:黃竹雯|2018-02-24 14:51:31.000|閱讀 562 次
概述:本篇教程講解如何使用相關的接口進行代碼編寫,實現Dicom協議中的查詢操作。
# 界面/圖表報表/文檔/IDE等千款熱門軟控件火熱銷售中 >>
相關鏈接:
using Leadtools;
using Leadtools.Dicom;
using Leadtools.Dicom.Scu.Common;
using Leadtools.Dicom.Scu;
using Leadtools.MedicalViewer;
using System.Net;
using System.IO;
// CFind highlevel 對象
private QueryRetrieveScu _cfind;
private DicomScp _server = new DicomScp();
private TreeNode _currentnode;
private MedicalViewer _viewer;
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); } } }
_cfind.Find(_server, new FindQuery());
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);
_cfind.Move(_server, _cfind.AETitle, (e.Node.Parent.Tag as Study).InstanceUID, (e.Node.Tag as Series).InstanceUID);
本站文章除注明轉載外,均為本站原創或翻譯。歡迎任何形式的轉載,但請務必注明出處、不得修改原文相關鏈接,如果存在內容上的異議請郵件反饋至chenjj@fc6vip.cn