comparison OrthancStone/Sources/Toolbox/DicomStructuredReport.h @ 2094:7c3d65166c26

partial integration dicom-sr->mainline
author Sebastien Jodogne <s.jodogne@gmail.com>
date Wed, 08 Nov 2023 14:54:15 +0100
parents 51c8b21b81e4
children 79e984a89a38 67db5afb305d
comparison
equal deleted inserted replaced
2087:51c8b21b81e4 2094:7c3d65166c26
33 33
34 #include <DicomParsing/ParsedDicomFile.h> 34 #include <DicomParsing/ParsedDicomFile.h>
35 35
36 #include <dcmtk/dcmdata/dcitem.h> 36 #include <dcmtk/dcmdata/dcitem.h>
37 #include <list> 37 #include <list>
38 #include <set>
38 39
39 namespace OrthancStone 40 namespace OrthancStone
40 { 41 {
41 class DicomStructuredReport : public boost::noncopyable 42 class DicomStructuredReport : public boost::noncopyable
42 { 43 {
43 private: 44 private:
44 class Structure; 45 class Structure;
45 class Point; 46 class Point;
46 class Polyline; 47 class Polyline;
47 48
48 class ReferencedInstance 49 class ReferencedInstance : public boost::noncopyable
49 { 50 {
50 private: 51 private:
51 std::string studyInstanceUid_; 52 std::string studyInstanceUid_;
52 std::string seriesInstanceUid_; 53 std::string seriesInstanceUid_;
53 std::string sopClassUid_; 54 std::string sopClassUid_;
55 std::set<unsigned int> frames_;
54 56
55 public: 57 public:
56 ReferencedInstance(const std::string& studyInstanceUid, 58 ReferencedInstance(const std::string& studyInstanceUid,
57 const std::string& seriesInstanceUid, 59 const std::string& seriesInstanceUid,
58 const std::string& sopClassUid) : 60 const std::string& sopClassUid) :
59 studyInstanceUid_(studyInstanceUid), 61 studyInstanceUid_(studyInstanceUid),
60 seriesInstanceUid_(seriesInstanceUid), 62 seriesInstanceUid_(seriesInstanceUid),
61 sopClassUid_(sopClassUid) 63 sopClassUid_(sopClassUid)
62 {
63 }
64
65 ReferencedInstance()
66 { 64 {
67 } 65 }
68 66
69 const std::string& GetStudyInstanceUid() const 67 const std::string& GetStudyInstanceUid() const
70 { 68 {
78 76
79 const std::string& GetSopClassUid() const 77 const std::string& GetSopClassUid() const
80 { 78 {
81 return sopClassUid_; 79 return sopClassUid_;
82 } 80 }
81
82 void AddFrame(unsigned int frame);
83
84 const std::set<unsigned int>& GetFrames() const
85 {
86 return frames_;
87 }
83 }; 88 };
89
84 90
85 void AddStructure(const std::string& sopInstanceUid, 91 void AddStructure(const std::string& sopInstanceUid,
86 DcmItem& group, 92 DcmItem& group,
87 bool hasFrameNumber, 93 bool hasFrameNumber,
88 unsigned int frameNumber, 94 unsigned int frameNumber,
89 bool hasProbabilityOfCancer, 95 bool hasProbabilityOfCancer,
90 float probabilityOfCancer); 96 float probabilityOfCancer);
91 97
92 std::map<std::string, ReferencedInstance> instancesInformation_; 98 std::string studyInstanceUid_;
93 std::vector<std::string> orderedInstances_; 99 std::string seriesInstanceUid_;
94 std::list<Structure*> structures_; 100 std::string sopInstanceUid_;
101 std::map<std::string, ReferencedInstance*> instancesInformation_;
102 std::vector<std::string> orderedInstances_;
103 std::list<Structure*> structures_;
95 104
96 public: 105 public:
106 class ReferencedFrame
107 {
108 private:
109 std::string studyInstanceUid_;
110 std::string seriesInstanceUid_;
111 std::string sopInstanceUid_;
112 std::string sopClassUid_;
113 unsigned int frameNumber_;
114
115 public:
116 ReferencedFrame(const std::string& studyInstanceUid,
117 const std::string& seriesInstanceUid,
118 const std::string& sopInstanceUid,
119 const std::string& sopClassUid,
120 unsigned int frameNumber) :
121 studyInstanceUid_(studyInstanceUid),
122 seriesInstanceUid_(seriesInstanceUid),
123 sopInstanceUid_(sopInstanceUid),
124 sopClassUid_(sopClassUid),
125 frameNumber_(frameNumber)
126 {
127 }
128
129 const std::string& GetStudyInstanceUid() const
130 {
131 return studyInstanceUid_;
132 }
133
134 const std::string& GetSeriesInstanceUid() const
135 {
136 return seriesInstanceUid_;
137 }
138
139 const std::string& GetSopInstanceUid() const
140 {
141 return sopInstanceUid_;
142 }
143
144 const std::string& GetSopClassUid() const
145 {
146 return sopClassUid_;
147 }
148
149 unsigned int GetFrameNumber() const
150 {
151 return frameNumber_;
152 }
153 };
154
97 DicomStructuredReport(Orthanc::ParsedDicomFile& dicom); 155 DicomStructuredReport(Orthanc::ParsedDicomFile& dicom);
98 156
99 ~DicomStructuredReport(); 157 ~DicomStructuredReport();
158
159 const std::string& GetStudyInstanceUid() const
160 {
161 return studyInstanceUid_;
162 }
163
164 const std::string& GetSeriesInstanceUid() const
165 {
166 return seriesInstanceUid_;
167 }
168
169 const std::string& GetSopInstanceUid() const
170 {
171 return sopInstanceUid_;
172 }
173
174 size_t GetReferencedInstancesCount() const
175 {
176 return orderedInstances_.size();
177 }
178
179 void GetReferencedInstance(std::string& studyInstanceUid,
180 std::string& seriesInstanceUid,
181 std::string& sopInstanceUid,
182 std::string& sopClassUid,
183 size_t i) const;
184
185 void ExportReferencedFrames(std::list<ReferencedFrame>& frames) const;
100 }; 186 };
101 } 187 }