Code: Select all
OFCondition result;
std::ifstream file("c:\\temp\\cdadocument.xml", std::ios::in | std::ios::binary);
std::vector< char> data((std::istreambuf_iterator< char>(file)), std::istreambuf_iterator< char>());
DcmDataset *dataset = new DcmDataset;
dataset->putAndInsertUint8Array( DCM_EncapsulatedDocument, (uint8_t*)data.data(), data.size());
dataset->putAndInsertString(DCM_MIMETypeOfEncapsulatedDocument, "text/xml");
dataset->putAndInsertString(DCM_Manufacturer, "MyCompany");
dataset->putAndInsertString(DCM_SoftwareVersions, "1.1.0");
dataset->putAndInsertString(DCM_DeviceID, "DEV-1234");
dataset->putAndInsertString(DCM_PatientID, "BK123");
dataset->putAndInsertString(DCM_PatientName, "DOE^JOHN");
dataset->putAndInsertString(DCM_PatientSex, "M" );
dataset->putAndInsertString(DCM_PatientBirthDate, "19780812");
dataset->putAndInsertString(DCM_ReferringPhysicianName,"Dr Who");
// dataset->putAndInsertString(DCM_Modality, "DOC");
// dataset->putAndInsertString(DCM_ConversionType,"WSD");
dataset->putAndInsertString(DCM_RequestedProcedureDescription, "Some procedure" );
dataset->putAndInsertString(DCM_StudyDescription, "Some study" );
dataset->putAndInsertString(DCM_StudyID, "001");
dataset->putAndInsertString(DCM_StudyDate, "20200206" );
dataset->putAndInsertString(DCM_StudyTime, "120211.345");
dataset->putAndInsertString(DCM_StudyInstanceUID, "1.3.6.1" );
dataset->putAndInsertString(DCM_SeriesInstanceUID, "1.3.6.1.2" );
dataset->putAndInsertString(DCM_InstanceNumber, "1.3.6.1.1.1" );
dataset->putAndInsertString(DCM_Status, "1");
char uid[100];
dataset->putAndInsertString(DCM_SOPClassUID, UID_EncapsulatedCDAStorage);
dataset->putAndInsertString(DCM_SOPInstanceUID, dcmGenerateUniqueIdentifier(uid, SITE_INSTANCE_UID_ROOT));
T_ASC_Network* net;
OFCondition cond = ASC_initializeNetwork ( NET_REQUESTOR, 0, 30, &net );
......
// list of transfer syntaxes, only a single entry here
const char* ts[] = { UID_LittleEndianExplicitTransferSyntax };
cond = ASC_addPresentationContext(params, 1, UID_LittleEndianExplicitTransferSyntax, ts, 1);
T_ASC_Association *assoc;
if( !ASC_requestAssociation(net, params, &assoc).good())
return;
DcmStorageSCU storageServer;
storageServer.setAETitle( callingAPTitle );
storageServer.setPeerHostName( DStorageServer );
storageServer.setPeerPort( DStorageServerPort );
storageServer.setPeerAETitle( calledAPTitle );
storageServer.addDataset( dataset );
OFList<OFString> pts;
pts.push_back(UID_LittleEndianExplicitTransferSyntax);
storageServer.addPresentationContext( UID_EncapsulatedCDAStorage, pts);
if( !storageServer.isConnected())
if( storageServer.initNetwork() != EC_Normal )
return;
if( storageServer.negotiateAssociation() != EC_Normal )
return;
T_ASC_PresentationContextID presID = storageServer.findPresentationContextID(UID_EncapsulatedCDAStorage, UID_LittleEndianExplicitTransferSyntax);
OFFilename fileformat;
Uint16 status;
cond = storageServer.sendSTORERequest( presID, fileformat, dataset, status );