comparison OrthancStone/Sources/Toolbox/DicomStructuredReport.h @ 2089:63d77859edee dicom-sr

cont
author Sebastien Jodogne <s.jodogne@gmail.com>
date Tue, 07 Nov 2023 19:30:44 +0100
parents 51c8b21b81e4
children 35de56fb6f89
comparison
equal deleted inserted replaced
2088:b98d159c7545 2089:63d77859edee
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::map<std::string, ReferencedInstance*> instancesInformation_;
93 std::vector<std::string> orderedInstances_; 99 std::vector<std::string> orderedInstances_;
94 std::list<Structure*> structures_; 100 std::list<Structure*> structures_;
95 101
96 public: 102 public:
103 class Frame
104 {
105 private:
106 std::string studyInstanceUid_;
107 std::string seriesInstanceUid_;
108 std::string sopInstanceUid_;
109 std::string sopClassUid_;
110 unsigned int frameNumber_;
111
112 public:
113 Frame(const std::string& studyInstanceUid,
114 const std::string& seriesInstanceUid,
115 const std::string& sopInstanceUid,
116 const std::string& sopClassUid,
117 unsigned int frameNumber) :
118 studyInstanceUid_(studyInstanceUid),
119 seriesInstanceUid_(seriesInstanceUid),
120 sopInstanceUid_(sopInstanceUid),
121 sopClassUid_(sopClassUid),
122 frameNumber_(frameNumber)
123 {
124 }
125
126 const std::string& GetStudyInstanceUid() const
127 {
128 return studyInstanceUid_;
129 }
130
131 const std::string& GetSeriesInstanceUid() const
132 {
133 return seriesInstanceUid_;
134 }
135
136 const std::string& GetSopInstanceUid() const
137 {
138 return sopInstanceUid_;
139 }
140
141 const std::string& GetSopClassUid() const
142 {
143 return sopClassUid_;
144 }
145
146 unsigned int GetFrameNumber() const
147 {
148 return frameNumber_;
149 }
150 };
151
97 DicomStructuredReport(Orthanc::ParsedDicomFile& dicom); 152 DicomStructuredReport(Orthanc::ParsedDicomFile& dicom);
98 153
99 ~DicomStructuredReport(); 154 ~DicomStructuredReport();
155
156 size_t GetReferencedInstancesCount() const
157 {
158 return orderedInstances_.size();
159 }
160
161 void GetReferencedInstance(std::string& studyInstanceUid,
162 std::string& seriesInstanceUid,
163 std::string& sopInstanceUid,
164 std::string& sopClassUid,
165 size_t i) const;
166
167 void ExportOrderedFrames(std::list<Frame>& frames) const;
100 }; 168 };
101 } 169 }