Mercurial > hg > orthanc-stone
diff 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 |
line wrap: on
line diff
--- a/OrthancStone/Sources/Toolbox/DicomStructuredReport.h Tue Nov 07 18:12:35 2023 +0100 +++ b/OrthancStone/Sources/Toolbox/DicomStructuredReport.h Tue Nov 07 19:30:44 2023 +0100 @@ -35,6 +35,7 @@ #include <dcmtk/dcmdata/dcitem.h> #include <list> +#include <set> namespace OrthancStone { @@ -45,12 +46,13 @@ class Point; class Polyline; - class ReferencedInstance + class ReferencedInstance : public boost::noncopyable { private: std::string studyInstanceUid_; std::string seriesInstanceUid_; std::string sopClassUid_; + std::set<unsigned int> frames_; public: ReferencedInstance(const std::string& studyInstanceUid, @@ -62,10 +64,6 @@ { } - ReferencedInstance() - { - } - const std::string& GetStudyInstanceUid() const { return studyInstanceUid_; @@ -80,8 +78,16 @@ { return sopClassUid_; } + + void AddFrame(unsigned int frame); + + const std::set<unsigned int>& GetFrames() const + { + return frames_; + } }; + void AddStructure(const std::string& sopInstanceUid, DcmItem& group, bool hasFrameNumber, @@ -89,13 +95,75 @@ bool hasProbabilityOfCancer, float probabilityOfCancer); - std::map<std::string, ReferencedInstance> instancesInformation_; - std::vector<std::string> orderedInstances_; - std::list<Structure*> structures_; + std::map<std::string, ReferencedInstance*> instancesInformation_; + std::vector<std::string> orderedInstances_; + std::list<Structure*> structures_; public: + class Frame + { + private: + std::string studyInstanceUid_; + std::string seriesInstanceUid_; + std::string sopInstanceUid_; + std::string sopClassUid_; + unsigned int frameNumber_; + + public: + Frame(const std::string& studyInstanceUid, + const std::string& seriesInstanceUid, + const std::string& sopInstanceUid, + const std::string& sopClassUid, + unsigned int frameNumber) : + studyInstanceUid_(studyInstanceUid), + seriesInstanceUid_(seriesInstanceUid), + sopInstanceUid_(sopInstanceUid), + sopClassUid_(sopClassUid), + frameNumber_(frameNumber) + { + } + + const std::string& GetStudyInstanceUid() const + { + return studyInstanceUid_; + } + + const std::string& GetSeriesInstanceUid() const + { + return seriesInstanceUid_; + } + + const std::string& GetSopInstanceUid() const + { + return sopInstanceUid_; + } + + const std::string& GetSopClassUid() const + { + return sopClassUid_; + } + + unsigned int GetFrameNumber() const + { + return frameNumber_; + } + }; + DicomStructuredReport(Orthanc::ParsedDicomFile& dicom); ~DicomStructuredReport(); + + size_t GetReferencedInstancesCount() const + { + return orderedInstances_.size(); + } + + void GetReferencedInstance(std::string& studyInstanceUid, + std::string& seriesInstanceUid, + std::string& sopInstanceUid, + std::string& sopClassUid, + size_t i) const; + + void ExportOrderedFrames(std::list<Frame>& frames) const; }; }