we are trying to develop a small tool in c++ to receive and store DICOM files.
Main goal is to store it and save the information of each into a another file or a database.
this is the code we have been using, but we need to understand were and how to get the data from each file receive to use it properlly when we need it:
Code: Select all
#include "dcmtk/dcmdata/dctk.h"
#include "dcmtk/dcmnet/assoc.h"
#include "dcmtk/dcmnet/dimse.h"
#include "dcmtk/dcmnet/dstorscp.h"
#include <iostream>
#include <stdio.h>
using namespace std;
int main()
{
DcmSCP scp;
DcmStorageSCP storagescp;
OFList<OFString> XferSyntaxes;
XferSyntaxes.push_back(UID_LittleEndianImplicitTransferSyntax);
XferSyntaxes.push_back(UID_LittleEndianExplicitTransferSyntax);
XferSyntaxes.push_back(UID_BigEndianExplicitTransferSyntax);
storagescp.addPresentationContext(UID_AmbulatoryECGWaveformStorage, XferSyntaxes);
storagescp.addPresentationContext(UID_BasicTextSRStorage, XferSyntaxes);
storagescp.addPresentationContext(UID_BasicVoiceAudioWaveformStorage, XferSyntaxes);
storagescp.addPresentationContext(UID_BlendingSoftcopyPresentationStateStorage, XferSyntaxes);
storagescp.addPresentationContext(UID_CardiacElectrophysiologyWaveformStorage, XferSyntaxes);
storagescp.addPresentationContext(UID_ChestCADSRStorage, XferSyntaxes);
storagescp.addPresentationContext(UID_ColorSoftcopyPresentationStateStorage, XferSyntaxes);
storagescp.addPresentationContext(UID_ComprehensiveSRStorage, XferSyntaxes);
storagescp.addPresentationContext(UID_ComputedRadiographyImageStorage, XferSyntaxes);
storagescp.addPresentationContext(UID_CTImageStorage, XferSyntaxes);
storagescp.addPresentationContext(UID_DigitalIntraOralXRayImageStorageForPresentation, XferSyntaxes);
storagescp.addPresentationContext(UID_DigitalIntraOralXRayImageStorageForProcessing, XferSyntaxes);
storagescp.addPresentationContext(UID_DigitalMammographyXRayImageStorageForPresentation, XferSyntaxes);
storagescp.addPresentationContext(UID_DigitalMammographyXRayImageStorageForProcessing, XferSyntaxes);
storagescp.addPresentationContext(UID_DigitalXRayImageStorageForPresentation, XferSyntaxes);
storagescp.addPresentationContext(UID_DigitalXRayImageStorageForProcessing, XferSyntaxes);
storagescp.addPresentationContext(UID_EncapsulatedPDFStorage, XferSyntaxes);
storagescp.addPresentationContext(UID_EnhancedCTImageStorage, XferSyntaxes);
storagescp.addPresentationContext(UID_EnhancedMRImageStorage, XferSyntaxes);
storagescp.addPresentationContext(UID_EnhancedSRStorage, XferSyntaxes);
storagescp.addPresentationContext(UID_EnhancedXAImageStorage, XferSyntaxes);
storagescp.addPresentationContext(UID_EnhancedXRFImageStorage, XferSyntaxes);
storagescp.addPresentationContext(UID_GeneralECGWaveformStorage, XferSyntaxes);
storagescp.addPresentationContext(UID_GrayscaleSoftcopyPresentationStateStorage, XferSyntaxes);
storagescp.addPresentationContext(UID_HemodynamicWaveformStorage, XferSyntaxes);
storagescp.addPresentationContext(UID_KeyObjectSelectionDocumentStorage, XferSyntaxes);
storagescp.addPresentationContext(UID_MammographyCADSRStorage, XferSyntaxes);
storagescp.addPresentationContext(UID_MRImageStorage, XferSyntaxes);
storagescp.addPresentationContext(UID_MRSpectroscopyStorage, XferSyntaxes);
storagescp.addPresentationContext(UID_MultiframeGrayscaleByteSecondaryCaptureImageStorage, XferSyntaxes);
storagescp.addPresentationContext(UID_MultiframeGrayscaleWordSecondaryCaptureImageStorage, XferSyntaxes);
storagescp.addPresentationContext(UID_MultiframeSingleBitSecondaryCaptureImageStorage, XferSyntaxes);
storagescp.addPresentationContext(UID_MultiframeTrueColorSecondaryCaptureImageStorage, XferSyntaxes);
storagescp.addPresentationContext(UID_NuclearMedicineImageStorage, XferSyntaxes);
storagescp.addPresentationContext(UID_OphthalmicPhotography16BitImageStorage, XferSyntaxes);
storagescp.addPresentationContext(UID_OphthalmicPhotography8BitImageStorage, XferSyntaxes);
storagescp.addPresentationContext(UID_OphthalmicTomographyImageStorage, XferSyntaxes);
storagescp.addPresentationContext(UID_PositronEmissionTomographyImageStorage, XferSyntaxes);
storagescp.addPresentationContext(UID_ProcedureLogStorage, XferSyntaxes);
storagescp.addPresentationContext(UID_PseudoColorSoftcopyPresentationStateStorage, XferSyntaxes);
storagescp.addPresentationContext(UID_RawDataStorage, XferSyntaxes);
storagescp.addPresentationContext(UID_RealWorldValueMappingStorage, XferSyntaxes);
storagescp.addPresentationContext(UID_RTBeamsTreatmentRecordStorage, XferSyntaxes);
storagescp.addPresentationContext(UID_RTBrachyTreatmentRecordStorage, XferSyntaxes);
storagescp.addPresentationContext(UID_RTDoseStorage, XferSyntaxes);
storagescp.addPresentationContext(UID_RTImageStorage, XferSyntaxes);
storagescp.addPresentationContext(UID_RTPlanStorage, XferSyntaxes);
storagescp.addPresentationContext(UID_RTStructureSetStorage, XferSyntaxes);
storagescp.addPresentationContext(UID_RTTreatmentSummaryRecordStorage, XferSyntaxes);
storagescp.addPresentationContext(UID_SecondaryCaptureImageStorage, XferSyntaxes);
storagescp.addPresentationContext(UID_SpatialFiducialsStorage, XferSyntaxes);
storagescp.addPresentationContext(UID_SpatialRegistrationStorage, XferSyntaxes);
storagescp.addPresentationContext(UID_StereometricRelationshipStorage, XferSyntaxes);
storagescp.addPresentationContext(UID_TwelveLeadECGWaveformStorage, XferSyntaxes);
storagescp.addPresentationContext(UID_UltrasoundImageStorage, XferSyntaxes);
storagescp.addPresentationContext(UID_UltrasoundMultiframeImageStorage, XferSyntaxes);
storagescp.addPresentationContext(UID_VLEndoscopicImageStorage, XferSyntaxes);
storagescp.addPresentationContext(UID_VLMicroscopicImageStorage, XferSyntaxes);
storagescp.addPresentationContext(UID_VLPhotographicImageStorage, XferSyntaxes);
storagescp.addPresentationContext(UID_VLSlideCoordinatesMicroscopicImageStorage, XferSyntaxes);
storagescp.addPresentationContext(UID_XRayAngiographicImageStorage, XferSyntaxes);
storagescp.addPresentationContext(UID_XRayRadiationDoseSRStorage, XferSyntaxes);
storagescp.addPresentationContext(UID_XRayRadiofluoroscopicImageStorage, XferSyntaxes);
// temporaty folder in Desktop
storagescp.setOutputDirectory("C:\\Users\\user-pc\\Desktop\\temp");
storagescp.setFilenameGenerationMode(DcmStorageSCP::FGM_SOPInstanceUID);
storagescp.setAETitle("TEST");
storagescp.setPort(104);
storagescp.listen();
}
(dcmtk-3.6.4)