Medical Imaging Interaction Toolkit  2018.4.99-389bf124
Medical Imaging Interaction Toolkit
mitkDICOMDCMTKTagScannerTest.cpp
Go to the documentation of this file.
1 /*============================================================================
2 
3 The Medical Imaging Interaction Toolkit (MITK)
4 
5 Copyright (c) German Cancer Research Center (DKFZ)
6 All rights reserved.
7 
8 Use of this source code is governed by a 3-clause BSD license that can be
9 found in the LICENSE file.
10 
11 ============================================================================*/
12 
15 
16 #include "mitkTestFixture.h"
17 #include "mitkTestingMacros.h"
18 
19 #include "mitkStringProperty.h"
20 
21 class mitkDICOMDCMTKTagScannerTestSuite : public mitk::TestFixture
22 {
23  CPPUNIT_TEST_SUITE(mitkDICOMDCMTKTagScannerTestSuite);
24 
25  MITK_TEST(DeepScanning);
26  MITK_TEST(MultiFileScanning);
27 
28  CPPUNIT_TEST_SUITE_END();
29 
30 private:
31 
32  mitk::DICOMDCMTKTagScanner::Pointer scanner;
33 
34  mitk::StringList doseFiles;
35  mitk::StringList ctFiles;
36 
37 public:
38 
39  void setUp() override
40  {
41  doseFiles.push_back(GetTestDataFilePath("RT/Dose/RD.dcm"));
42  ctFiles.push_back(GetTestDataFilePath("TinyCTAbdomen/100"));
43  ctFiles.push_back(GetTestDataFilePath("TinyCTAbdomen/101"));
44  ctFiles.push_back(GetTestDataFilePath("TinyCTAbdomen/102"));
45  ctFiles.push_back(GetTestDataFilePath("TinyCTAbdomen/104"));
46 
48  }
49 
50  void tearDown() override
51  {
52  }
53 
54  void DeepScanning()
55  {
56  mitk::DICOMTagPath planUIDPath;
57  planUIDPath.AddAnySelection(0x300C, 0x0002).AddElement(0x0008, 0x1155);
58  mitk::DICOMTagPath planUIDPathRef;
59  planUIDPathRef.AddSelection(0x300C, 0x0002, 0).AddElement(0x0008,0x1155);
60 
61  mitk::DICOMTagPath patientName(0x0010, 0x0010);
62 
63  scanner->SetInputFiles(doseFiles);
64  scanner->AddTagPath(planUIDPath);
65  scanner->AddTagPath(patientName);
66 
67  scanner->Scan();
68 
69  mitk::DICOMDatasetAccessingImageFrameList frames = scanner->GetFrameInfoList();
70  CPPUNIT_ASSERT_MESSAGE("Testing DICOMDCMTKTagScanner::GetFrameInfoList()", frames.size() == 1);
71 
72  mitk::DICOMDatasetAccess::FindingsListType findings = frames.front()->GetTagValueAsString(planUIDPath);
73  CPPUNIT_ASSERT_MESSAGE("Testing DICOMDCMTKTagScanner::GetFrameInfoList()", findings.size() == 1);
74  CPPUNIT_ASSERT_MESSAGE("Testing validity of first plan finding", findings.front().isValid);
75  CPPUNIT_ASSERT_MESSAGE("Testing path of first plan finding", findings.front().path == planUIDPathRef);
76  CPPUNIT_ASSERT_MESSAGE("Testing value of first plan finding", findings.front().value == "1.2.826.0.1.3680043.8.176.2013826104526987.672.1228523524");
77 
78  findings = frames.front()->GetTagValueAsString(patientName);
79  CPPUNIT_ASSERT_MESSAGE("Testing DICOMDCMTKTagScanner::GetFrameInfoList()", findings.size() == 1);
80  CPPUNIT_ASSERT_MESSAGE("Testing validity of first plan finding", findings.front().isValid);
81  CPPUNIT_ASSERT_MESSAGE("Testing path of first plan finding", findings.front().path == patientName);
82  CPPUNIT_ASSERT_MESSAGE("Testing value of first plan finding", findings.front().value == "L_H");
83  }
84 
85  void MultiFileScanning()
86  {
87  mitk::DICOMTagPath instanceUID(0x0008, 0x0018);
88 
89  scanner->SetInputFiles(ctFiles);
90  scanner->AddTagPath(instanceUID);
91 
92  scanner->Scan();
93 
94  mitk::DICOMDatasetAccessingImageFrameList frames = scanner->GetFrameInfoList();
95  CPPUNIT_ASSERT_MESSAGE("Testing DICOMDCMTKTagScanner::GetFrameInfoList()", frames.size() == 4);
96 
97  mitk::DICOMDatasetAccess::FindingsListType findings = frames[0]->GetTagValueAsString(instanceUID);
98  CPPUNIT_ASSERT_MESSAGE("Testing DICOMDCMTKTagScanner::GetFrameInfoList()", findings.size() == 1);
99  CPPUNIT_ASSERT_MESSAGE("Testing validity of instance uid finding of frame 0", findings.front().isValid);
100  CPPUNIT_ASSERT_MESSAGE("Testing path of instance uid finding of frame 0", findings.front().path == instanceUID);
101  CPPUNIT_ASSERT_MESSAGE("Testing value of instance uid finding of frame 0", findings.front().value == "1.2.276.0.99.1.4.8323329.3795.1303917947.940051");
102 
103  findings = frames[1]->GetTagValueAsString(instanceUID);
104  CPPUNIT_ASSERT_MESSAGE("Testing DICOMDCMTKTagScanner::GetFrameInfoList()", findings.size() == 1);
105  CPPUNIT_ASSERT_MESSAGE("Testing validity of instance uid finding of frame 1", findings.front().isValid);
106  CPPUNIT_ASSERT_MESSAGE("Testing path of instance uid finding of frame 1", findings.front().path == instanceUID);
107  CPPUNIT_ASSERT_MESSAGE("Testing value of instance uid finding of frame 1", findings.front().value == "1.2.276.0.99.1.4.8323329.3795.1303917947.940052");
108 
109  findings = frames[2]->GetTagValueAsString(instanceUID);
110  CPPUNIT_ASSERT_MESSAGE("Testing DICOMDCMTKTagScanner::GetFrameInfoList()", findings.size() == 1);
111  CPPUNIT_ASSERT_MESSAGE("Testing validity of instance uid finding of frame 2", findings.front().isValid);
112  CPPUNIT_ASSERT_MESSAGE("Testing path of instance uid finding of frame 2", findings.front().path == instanceUID);
113  CPPUNIT_ASSERT_MESSAGE("Testing value of instance uid finding of frame 2", findings.front().value == "1.2.276.0.99.1.4.8323329.3795.1303917947.940053");
114 
115  findings = frames[3]->GetTagValueAsString(instanceUID);
116  CPPUNIT_ASSERT_MESSAGE("Testing DICOMDCMTKTagScanner::GetFrameInfoList()", findings.size() == 1);
117  CPPUNIT_ASSERT_MESSAGE("Testing validity of instance uid finding of frame 3", findings.front().isValid);
118  CPPUNIT_ASSERT_MESSAGE("Testing path of instance uid finding of frame 3", findings.front().path == instanceUID);
119  CPPUNIT_ASSERT_MESSAGE("Testing value of instance uid finding of frame 3", findings.front().value == "1.2.276.0.99.1.4.8323329.3795.1303917947.940055");
120  }
121 
122 };
123 
124 MITK_TEST_SUITE_REGISTRATION(mitkDICOMDCMTKTagScanner)
DICOMTagPath & AddElement(unsigned int group, unsigned int element)
DICOMTagPath & AddAnySelection(unsigned int group, unsigned int element)
Class is used to identify (nested) attributes in a DICOM dataset. In contrast to the class DICOMTag...
MITK_TEST_SUITE_REGISTRATION(mitkImageToItk)
#define MITK_TEST(TESTMETHOD)
Adds a test to the current test suite.
static std::string GetTestDataFilePath(const std::string &testData)
Get the absolute path for test data.
std::list< DICOMDatasetFinding > FindingsListType
Test fixture for parameterized tests.
std::vector< std::string > StringList
std::vector< DICOMDatasetAccessingImageFrameInfo::Pointer > DICOMDatasetAccessingImageFrameList
DICOMTagPath & AddSelection(unsigned int group, unsigned int element, ItemSelectionIndex index)