comparison OrthancFramework/Sources/DicomFormat/DicomMap.cpp @ 5180:d2626a062809

fix DicomMap::SetupFindXXXTemplate() methods
author Sebastien Jodogne <s.jodogne@gmail.com>
date Sat, 25 Mar 2023 11:21:09 +0100
parents 1e406c23b352
children 0ea402b4d901
comparison
equal deleted inserted replaced
5179:1e406c23b352 5180:d2626a062809
585 { 585 {
586 Remove(*it); 586 Remove(*it);
587 } 587 }
588 } 588 }
589 589
590 static void SetupFindTemplate(DicomMap& result, 590 void DicomMap::SetupFindPatientTemplate(DicomMap& result)
591 const std::set<DicomTag>& mainDicomTags)
592 { 591 {
593 result.Clear(); 592 result.Clear();
594 593
595 for (std::set<DicomTag>::const_iterator itmt = mainDicomTags.begin(); 594 // Identifying tags
596 itmt != mainDicomTags.end(); ++itmt) 595 result.SetValue(DICOM_TAG_PATIENT_ID, "", false);
597 { 596
598 result.SetValue(*itmt, "", false); 597 // Other tags in the "Patient" module
599 } 598 result.SetValue(DICOM_TAG_OTHER_PATIENT_IDS, "", false);
600 } 599 result.SetValue(DICOM_TAG_PATIENT_BIRTH_DATE, "", false);
601 600 result.SetValue(DICOM_TAG_PATIENT_NAME, "", false);
602 void DicomMap::SetupFindPatientTemplate(DicomMap& result) 601 result.SetValue(DICOM_TAG_PATIENT_SEX, "", false);
603 {
604 std::set<DicomTag> mainDicomTags;
605 DicomMap::MainDicomTagsConfiguration::GetInstance().GetMainDicomTagsByLevel(mainDicomTags, ResourceType_Patient);
606 SetupFindTemplate(result, mainDicomTags);
607 } 602 }
608 603
609 void DicomMap::SetupFindStudyTemplate(DicomMap& result) 604 void DicomMap::SetupFindStudyTemplate(DicomMap& result)
610 { 605 {
611 std::set<DicomTag> mainDicomTags; 606 result.Clear();
612 DicomMap::MainDicomTagsConfiguration::GetInstance().GetMainDicomTagsByLevel(mainDicomTags, ResourceType_Study); 607
613 SetupFindTemplate(result, mainDicomTags); 608 // Identifying tags
609 result.SetValue(DICOM_TAG_PATIENT_ID, "", false);
614 result.SetValue(DICOM_TAG_ACCESSION_NUMBER, "", false); 610 result.SetValue(DICOM_TAG_ACCESSION_NUMBER, "", false);
611 result.SetValue(DICOM_TAG_STUDY_INSTANCE_UID, "", false);
612
613 // Other tags in the "General Study" module
614 result.SetValue(DICOM_TAG_REFERRING_PHYSICIAN_NAME, "", false);
615 result.SetValue(DICOM_TAG_STUDY_DATE, "", false);
616 result.SetValue(DICOM_TAG_STUDY_DESCRIPTION, "", false);
617 result.SetValue(DICOM_TAG_STUDY_ID, "", false);
618 result.SetValue(DICOM_TAG_STUDY_TIME, "", false);
619 }
620
621 void DicomMap::SetupFindSeriesTemplate(DicomMap& result)
622 {
623 result.Clear();
624
625 // Identifying tags
615 result.SetValue(DICOM_TAG_PATIENT_ID, "", false); 626 result.SetValue(DICOM_TAG_PATIENT_ID, "", false);
616
617 // These main DICOM tags are only indirectly related to the
618 // General Study Module, remove them
619 result.Remove(DICOM_TAG_INSTITUTION_NAME);
620 result.Remove(DICOM_TAG_REQUESTING_PHYSICIAN);
621 result.Remove(DICOM_TAG_REQUESTED_PROCEDURE_DESCRIPTION);
622 }
623
624 void DicomMap::SetupFindSeriesTemplate(DicomMap& result)
625 {
626 std::set<DicomTag> mainDicomTags;
627 DicomMap::MainDicomTagsConfiguration::GetInstance().GetMainDicomTagsByLevel(mainDicomTags, ResourceType_Series);
628 SetupFindTemplate(result, mainDicomTags);
629 result.SetValue(DICOM_TAG_ACCESSION_NUMBER, "", false); 627 result.SetValue(DICOM_TAG_ACCESSION_NUMBER, "", false);
630 result.SetValue(DICOM_TAG_PATIENT_ID, "", false);
631 result.SetValue(DICOM_TAG_STUDY_INSTANCE_UID, "", false);
632
633 // These tags are considered as "main" by Orthanc, but are not in the Series module
634 result.Remove(DicomTag(0x0008, 0x0070)); // Manufacturer
635 result.Remove(DicomTag(0x0008, 0x1010)); // Station name
636 result.Remove(DicomTag(0x0018, 0x0024)); // Sequence name
637 result.Remove(DICOM_TAG_CARDIAC_NUMBER_OF_IMAGES);
638 result.Remove(DICOM_TAG_IMAGES_IN_ACQUISITION);
639 result.Remove(DICOM_TAG_NUMBER_OF_SLICES);
640 result.Remove(DICOM_TAG_NUMBER_OF_TEMPORAL_POSITIONS);
641 result.Remove(DICOM_TAG_NUMBER_OF_TIME_SLICES);
642 result.Remove(DICOM_TAG_IMAGE_ORIENTATION_PATIENT);
643 result.Remove(DICOM_TAG_SERIES_TYPE);
644 result.Remove(DICOM_TAG_ACQUISITION_DEVICE_PROCESSING_DESCRIPTION);
645 result.Remove(DICOM_TAG_CONTRAST_BOLUS_AGENT);
646 }
647
648 void DicomMap::SetupFindInstanceTemplate(DicomMap& result)
649 {
650 std::set<DicomTag> mainDicomTags;
651 DicomMap::MainDicomTagsConfiguration::GetInstance().GetMainDicomTagsByLevel(mainDicomTags, ResourceType_Instance);
652 SetupFindTemplate(result, mainDicomTags);
653 result.SetValue(DICOM_TAG_ACCESSION_NUMBER, "", false);
654 result.SetValue(DICOM_TAG_PATIENT_ID, "", false);
655 result.SetValue(DICOM_TAG_STUDY_INSTANCE_UID, "", false); 628 result.SetValue(DICOM_TAG_STUDY_INSTANCE_UID, "", false);
656 result.SetValue(DICOM_TAG_SERIES_INSTANCE_UID, "", false); 629 result.SetValue(DICOM_TAG_SERIES_INSTANCE_UID, "", false);
630
631 // Other tags in the "General Series" module
632 result.SetValue(DICOM_TAG_BODY_PART_EXAMINED, "", false);
633 result.SetValue(DICOM_TAG_MODALITY, "", false);
634 result.SetValue(DICOM_TAG_OPERATOR_NAME, "", false);
635 result.SetValue(DICOM_TAG_PERFORMED_PROCEDURE_STEP_DESCRIPTION, "", false);
636 result.SetValue(DICOM_TAG_PROTOCOL_NAME, "", false);
637 result.SetValue(DICOM_TAG_SERIES_DATE, "", false);
638 result.SetValue(DICOM_TAG_SERIES_DESCRIPTION, "", false);
639 result.SetValue(DICOM_TAG_SERIES_NUMBER, "", false);
640 result.SetValue(DICOM_TAG_SERIES_TIME, "", false);
641 }
642
643 void DicomMap::SetupFindInstanceTemplate(DicomMap& result)
644 {
645 result.Clear();
646
647 // Identifying tags
648 result.SetValue(DICOM_TAG_PATIENT_ID, "", false);
649 result.SetValue(DICOM_TAG_ACCESSION_NUMBER, "", false);
650 result.SetValue(DICOM_TAG_STUDY_INSTANCE_UID, "", false);
651 result.SetValue(DICOM_TAG_SERIES_INSTANCE_UID, "", false);
652 result.SetValue(DICOM_TAG_SOP_INSTANCE_UID, "", false);
653
654 // Other tags in the "SOP Common" module
655 result.SetValue(DICOM_TAG_ACQUISITION_NUMBER, "", false);
656 result.SetValue(DICOM_TAG_IMAGE_COMMENTS, "", false);
657 result.SetValue(DICOM_TAG_IMAGE_INDEX, "", false);
658 result.SetValue(DICOM_TAG_IMAGE_ORIENTATION_PATIENT, "", false);
659 result.SetValue(DICOM_TAG_IMAGE_POSITION_PATIENT, "", false);
660 result.SetValue(DICOM_TAG_INSTANCE_CREATION_DATE, "", false);
661 result.SetValue(DICOM_TAG_INSTANCE_CREATION_TIME, "", false);
662 result.SetValue(DICOM_TAG_INSTANCE_NUMBER, "", false);
663 result.SetValue(DICOM_TAG_NUMBER_OF_FRAMES, "", false);
664 result.SetValue(DICOM_TAG_TEMPORAL_POSITION_IDENTIFIER, "", false);
657 } 665 }
658 666
659 667
660 void DicomMap::CopyTagIfExists(const DicomMap& source, 668 void DicomMap::CopyTagIfExists(const DicomMap& source,
661 const DicomTag& tag) 669 const DicomTag& tag)