gpt4 book ai didi

dicom - fo-dicom - 如何从 PACS 下载 dcm 图像并保存它们?

转载 作者:行者123 更新时间:2023-12-03 09:09:02 25 4
gpt4 key购买 nike

我正在尝试从 PACS 服务器下载 dcm 镜像,但这会生成一个空的 dcm 文件。

代码如下:

public void VisoresPacsController(string ipAddress, string aeTitle, string accessId, int port)
{
/*
this.ipAddress = ipAddress;
this.aeTitle = aeTitle;
this.accessId = accessId;
this.port = port;
visores.Add(new VisorCommandLine("Radiant", ""));
///new DicomCStoreRequest.
*/
DicomClient client = new DicomClient();
var query = DicomCFindRequest.CreateImageQuery("1.2.250.1.31.2.723.19980722.113224.11597", "1.2.250.1.31.3.723.19980722.113224.11597");
client.AddRequest(query);
query.OnResponseReceived = onResponse;
client.Send("70.38.12.40", 4242, false, "THS", "ORTHANC");
}

public void onResponse(DicomCFindRequest req, DicomCFindResponse res)
{
DicomDataset dataset = res.Dataset;
dataset.Add(DicomTag.SOPClassUID, "1.2.250.1.31.4.723.19980722.113224.11597");
//dataset.Add(DicomTag.StudyInstanceUID, GenerateUid());
//dataset.Add(DicomTag.SeriesInstanceUID, GenerateUid());
//dataset.Add(DicomTag.SOPInstanceUID, GenerateUid());
DicomFile dicomFile = new DicomFile(dataset);
dicomFile.Save(@"C:\Users\Developer 13\Desktop\dicomfile.dcm");
}

My code

最佳答案

“下载”这个词在这里有点奇怪。正确的词是“查询-检索”。

这是两步操作,第一部分是您已经在执行的查询(CFind)。

您可以将其与数据库查询进行比较。假设您有一个包含文件路径和名称的表。您的程序不知道路径。因此,您对数据库运行查询,例如SELECT Name, Path FROM FilesTable。数据库返回您的数据。这就是 CFind 发生的情况,这就是您在 onResponse(DicomCFindRequest req, DicomCFindResponse res) 中得到的结果。 res中的数据是数据库返回的一条记录。 这不是实际文件。

现在,下一部分是从您刚刚收到的路径下载此文件。因此,您可以执行一些文件操作,例如 File.Copy(srcPath, destPath) 或可能是 HTTP/FTP 下载。在 DICOM 中,这可以通过两种方式实现 - CGet 和 CMove。 CMove 更受欢迎的原因有很多。

如我的示例所示,如果您已经知道文件的路径和名称,则可以绕过数据库查询。同样,如果您事先知道标识符,则可以绕过 CFind 并直接执行 CMove。请参阅this发布。

这一段会有点复杂,并且不同实现的工作流程可能会有一些变化。要进行 CMove,必须存在一个 CStoreSCP。您 (CMoveSCU) 将向 PACS (CMoveSCP) 发送 CMove 命令,AE 标题为您想要接收实例的 CStoreSCP。这意味着您要么还应该开发自己的 CStoreSCP,要么应该涉及其他一些。 CMoveSCP 将读取您发送的 AE 标题并将其与其配置进行匹配。这意味着您的 CStoreSCP 必须提前在 PACS 上配置。根据配置,它将采用 IP 地址和端口来建立新的关联。这称为角色切换。 CMoveSCP 现在也可以用作 CStoreSCU。作为 CStoreSCU,PACS 会将实例推送到您的 CStoreSCP。这样,您实际上就获得了图像/实例。

我不是 fo-dicom 开发人员(@AndersGustafsson 是该工具的专家。我猜他也为该项目做出了贡献);但我确信,看看您已经付出的努力,这一定很简单。当我刚接触 DICOM 时,我很少遇到语法问题。大多数时候,我对概念和术语有疑问。我试图在这里用最好的方式解释它。希望这对您有帮助。

引用 Rony 的文章:
http://dicomiseasy.blogspot.in/2012/01/dicom-queryretrieve-part-i.html
http://dicomiseasy.blogspot.in/2012/02/c-move.html

编辑 1:

我在 @AndersGustafsson 在他的回答中发布的链接中找到了一些示例代码。

var cmove = new DicomCMoveRequest("DEST-AE", studyInstanceUid);
var client = new DicomClient();
client.AddRequest(cmove);
client.Send("127.0.0.1", 11112, false, "SCU-AE", "SCP-AE"); // Alt 1
await client.SendAsync("127.0.0.1", 11112, false, "SCU-AE", "SCP-AE"); // Alt 2

关于dicom - fo-dicom - 如何从 PACS 下载 dcm 图像并保存它们?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44318168/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com