我假设您想通过 DICOM 从 ImageServer 加载图像。这将需要针对 ImageServer 的 DICOM C-FIND 请求来检索 ImageServer 上的研究列表。然后,您需要选择一个特定的研究并发出 DICOM C-MOVE 请求以将该研究移动到您的应用程序中。另请注意,您将需要一个 DICOM Storage SCP 应用程序来侦听传入的 DICOM 关联,并且您的应用程序必须配置为 ImageServer 上的设备。
要使用 ClearCanvas DICOM 库发出 C-FIND 请求,可以使用以下代码:
StudyRootFindScu findScu = new StudyRootFindScu();
StudyQueryIod queryMessage = new StudyQueryIod();
queryMessage.QueryRetrieveLevel = QueryRetrieveLevel.Study;
queryMessage.SetCommonTags();
IList results = findScu.Find("LocalAETitle", "SERVERAE", "localhost", 104, queryMessage);
foreach (StudyQueryIod item in results)
{
string AccessionNumber = item.AccessionNumber;
string PatientID = item.PatientId;
string Sex = item.PatientsSex;
DateTime BirthDate = item.PatientsBirthDate;
string StudyName = item.StudyDescription;
string PatientName = item.PatientsName;
string StudyUID = item.StudyInstanceUid;
DateTime StudyDate = item.StudyDate.Value;
string Modality = item.Modality;
string ReferringPhysiciansName = item.ReferringPhysiciansName;
}
请注意,如果您想“过滤”您的查询,您可以在 queryMessage 中设置额外的标签来匹配。
从结果中选择一项研究后,要发出 DICOM C-MOVE 请求,可以使用以下代码:
string studyInstanceUid = "1.1.1."; // Fill in with the real Study Instance UID
ClearCanvas.Dicom.Network.Scu.MoveScuBase moveScu = new ClearCanvas.Dicom.Network.Scu.StudyRootMoveScu("LocalAETitle", "SERVERAE", "localhost", 104, "LocalAETitle");
moveScu.AddStudyInstanceUid(studyInstanceUid);
moveScu.Move();
最后,ClearCanvas 源确实有一个 Storage SCP 实现。我建议查看 Trunk\Dicom\Samples\StorageScp.cs 中的文件。这需要相当多的额外代码来实现。