Mercurial > hg > orthanc
diff Core/DicomFormat/DicomMap.cpp @ 80:6212bf978584
status of series
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Thu, 20 Sep 2012 15:18:12 +0200 |
parents | b8dfde8d64e8 |
children | 9eb40cad7935 |
line wrap: on
line diff
--- a/Core/DicomFormat/DicomMap.cpp Thu Sep 20 13:47:54 2012 +0200 +++ b/Core/DicomFormat/DicomMap.cpp Thu Sep 20 15:18:12 2012 +0200 @@ -36,7 +36,7 @@ DicomTag(0x0010, 0x0030), // PatientBirthDate DicomTag(0x0010, 0x0040), // PatientSex DicomTag(0x0010, 0x1000), // OtherPatientIDs - DicomTag::PATIENT_ID + DICOM_TAG_PATIENT_ID }; static DicomTag studyTags[] = @@ -47,8 +47,8 @@ DicomTag(0x0008, 0x0030), // StudyTime DicomTag(0x0008, 0x1030), // StudyDescription DicomTag(0x0020, 0x0010), // StudyID - DicomTag::ACCESSION_NUMBER, - DicomTag::STUDY_INSTANCE_UID + DICOM_TAG_ACCESSION_NUMBER, + DICOM_TAG_STUDY_INSTANCE_UID }; static DicomTag seriesTags[] = @@ -64,9 +64,11 @@ DicomTag(0x0018, 0x0024), // SequenceName DicomTag(0x0018, 0x1030), // ProtocolName DicomTag(0x0020, 0x0011), // SeriesNumber - DicomTag::IMAGES_IN_ACQUISITION, - DicomTag::NUMBER_OF_SLICES, - DicomTag::SERIES_INSTANCE_UID + DICOM_TAG_CARDIAC_NUMBER_OF_IMAGES, + DICOM_TAG_IMAGES_IN_ACQUISITION, + DICOM_TAG_NUMBER_OF_FRAMES, + DICOM_TAG_NUMBER_OF_SLICES, + DICOM_TAG_SERIES_INSTANCE_UID }; static DicomTag instanceTags[] = @@ -74,11 +76,9 @@ DicomTag(0x0008, 0x0012), // InstanceCreationDate DicomTag(0x0008, 0x0013), // InstanceCreationTime DicomTag(0x0020, 0x0012), // AcquisitionNumber - DicomTag::CARDIAC_NUMBER_OF_IMAGES, - DicomTag::IMAGE_INDEX, - DicomTag::INSTANCE_NUMBER, - DicomTag::NUMBER_OF_FRAMES, - DicomTag::SOP_INSTANCE_UID + DICOM_TAG_IMAGE_INDEX, + DICOM_TAG_INSTANCE_NUMBER, + DICOM_TAG_SOP_INSTANCE_UID }; @@ -160,6 +160,7 @@ } + DicomMap* DicomMap::Clone() const { std::auto_ptr<DicomMap> result(new DicomMap); @@ -175,15 +176,30 @@ const DicomValue& DicomMap::GetValue(const DicomTag& tag) const { + const DicomValue* value = TestAndGetValue(tag); + + if (value) + { + return *value; + } + else + { + throw OrthancException("Inexistent tag"); + } + } + + + const DicomValue* DicomMap::TestAndGetValue(const DicomTag& tag) const + { Map::const_iterator it = map_.find(tag); if (it == map_.end()) { - throw OrthancException("Inexistent tag"); + return NULL; } else { - return *it->second; + return it->second; } } @@ -219,25 +235,25 @@ void DicomMap::SetupFindStudyTemplate(DicomMap& result) { SetupFindTemplate(result, studyTags, sizeof(studyTags) / sizeof(DicomTag)); - result.SetValue(DicomTag::ACCESSION_NUMBER, ""); - result.SetValue(DicomTag::PATIENT_ID, ""); + result.SetValue(DICOM_TAG_ACCESSION_NUMBER, ""); + result.SetValue(DICOM_TAG_PATIENT_ID, ""); } void DicomMap::SetupFindSeriesTemplate(DicomMap& result) { SetupFindTemplate(result, seriesTags, sizeof(seriesTags) / sizeof(DicomTag)); - result.SetValue(DicomTag::ACCESSION_NUMBER, ""); - result.SetValue(DicomTag::PATIENT_ID, ""); - result.SetValue(DicomTag::STUDY_INSTANCE_UID, ""); + result.SetValue(DICOM_TAG_ACCESSION_NUMBER, ""); + result.SetValue(DICOM_TAG_PATIENT_ID, ""); + result.SetValue(DICOM_TAG_STUDY_INSTANCE_UID, ""); } void DicomMap::SetupFindInstanceTemplate(DicomMap& result) { SetupFindTemplate(result, instanceTags, sizeof(instanceTags) / sizeof(DicomTag)); - result.SetValue(DicomTag::ACCESSION_NUMBER, ""); - result.SetValue(DicomTag::PATIENT_ID, ""); - result.SetValue(DicomTag::STUDY_INSTANCE_UID, ""); - result.SetValue(DicomTag::SERIES_INSTANCE_UID, ""); + result.SetValue(DICOM_TAG_ACCESSION_NUMBER, ""); + result.SetValue(DICOM_TAG_PATIENT_ID, ""); + result.SetValue(DICOM_TAG_STUDY_INSTANCE_UID, ""); + result.SetValue(DICOM_TAG_SERIES_INSTANCE_UID, ""); }