DCMTK c-find简单示例
DcmSCU scu;
//设置连接信息
scu.setPeerAETitle(serverAETitle);
scu.setPeerHostName(serverHost);
scu.setPeerPort(serverPort);
scu.setAETitle(clientAETitle);
//设置协议上下文 传输编码格式
OFList<OFString> ts;
ts.push_back(UID_LittleEndianImplicitTransferSyntax);
ts.push_back(UID_LittleEndianExplicitTransferSyntax);
ts.push_back(UID_BigEndianExplicitTransferSyntax);
scu.addPresentationContext(UID_VerificationSOPClass, ts); //验证服务该服务是必须的
/* Initialize network */
OFCondition result = scu.initNetwork();
DcmFileFormat dcmff;
DcmDataset* dset = dcmff.getDataset();
dset->putAndInsertString(DCM_QueryRetrieveLevel, "PATIENT");
dset->putAndInsertString(DCM_PatientName, "*");
dset->putAndInsertString(DCM_SpecificCharacterSet, "ISO_IR 192");
Uint8 pc;
T_ASC_PresentationContextID presID = scu.findPresentationContextID(UID_VerificationSOPClass, UID_JPEGProcess1TransferSyntax);
if (presID == 0)
presID = scu.findPresentationContextID(UID_VerificationSOPClass, UID_LittleEndianImplicitTransferSyntax);
if (presID == 0)
presID = scu.findPresentationContextID(UID_VerificationSOPClass, UID_LittleEndianExplicitTransferSyntax);
if (presID == 0)
presID = scu.findPresentationContextID(UID_VerificationSOPClass, UID_BigEndianExplicitTransferSyntax);
OFList<QRResponse*> responses;
//查询
result = scu.sendFINDRequest(presID, dset, &responses);
if (result.good())
{
int asdasd = responses.size();
for (OFListIterator(QRResponse*) it = responses.begin(); it != responses.end(); ++it) {
QRResponse* response = *it;
// 获取DICOM数据集
DcmDataset* dataset = response->m_dataset;
if (dataset == nullptr)
{
continue;
}
// 从数据集中获取病人姓名
OFString patientName;
if (dataset->findAndGetOFString(DCM_PatientName, patientName).good()) {
// 处理病人姓名
std::cout << "Patient Name: " << patientName << std::endl;
}
// 可以继续从数据集中获取其他病人相关的信息
}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· AI与.NET技术实操系列(六):基于图像分类模型对图像进行分类