You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Objective-C能否仅向PACS系统发送患者人口统计信息?

问题解答

能否仅向PACS发送患者人口统计信息

可以。DICOM标准内置了独立于图像/视频数据的患者信息交互规范,你不需要附带任何像素数据,仅填充患者相关的DICOM标签即可完成发送。
如果是新增/更新患者信息场景,使用患者管理元SOP类即可;如果是关联已有检查同步患者信息,也可以用患者根查询/检索系列的SOP类,都不需要携带图像数据。

适用的传输语法

这类纯元数据的传输不需要压缩,直接用所有PACS都默认兼容的基础非压缩传输语法即可:

  • 首选 Explicit VR Little Endian(UID:1.2.840.10008.1.2.1)
  • 兼容性要求更高的场景可以用 Implicit VR Little Endian(UID:1.2.840.10008.1.2)

不需要使用JPEG等针对像素数据的压缩传输语法。

可参考的代码库

你当前代码用到的DCMTK库就可以直接实现该需求,不需要引入额外依赖:

  • 参考dcmnet模块下的dcmprscu、dpthlscu示例实现,都是专门处理患者层级信息传输的工具代码
  • 核心逻辑和你现有发送图像的逻辑基本一致,仅需要替换SOP Class和构造不带像素数据的DICOM数据集即可

核心代码示例

// 仅传输患者信息的核心实现片段
TransferSyntaxes.push_back(UID_LittleEndianExplicitTransferSyntax);
if (dicomSCU) {
    // 添加患者管理相关的Presentation Context,替换原有图像存储的SOP Class
    dicomSCU->addPresentationContext(UID_PatientManagementMetaSOPClass, TransferSyntaxes);
    result = dicomSCU->initNetwork();
    result = dicomSCU->negotiateAssociation();
    if (result == EC_Normal) {
        DcmDataset* patientDataset = new DcmDataset();
        // 患者ID为必填项,必须携带唯一标识
        patientDataset->putAndInsertString(DCM_PatientID, "PAT00001");
        patientDataset->putAndInsertString(DCM_PatientName, "张三");
        patientDataset->putAndInsertString(DCM_PatientSex, "M");
        patientDataset->putAndInsertString(DCM_PatientBirthDate, "19900101");
        // 发送请求
        result = dicomSCU->sendCStoreRequest(patientDataset);
        delete patientDataset;
    }
}

注意事项

  • 发送前需要确认目标PACS已经给你的SCU AE Title开放了患者管理类SOP的访问权限,部分PACS默认仅开放图像存储权限
  • 患者ID(DCM_PatientID)是必填字段,不可缺失,否则PACS会直接拒绝请求

内容的提问来源于stack exchange,提问作者Dipesh Pokhrel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 17:09:03