Mercurial > hg > orthanc-stone
diff OrthancStone/Sources/Loaders/LoadedDicomResources.h @ 1822:0489fe25ce48
support of pixel spacing in ultrasound images from tag SequenceOfUltrasoundRegions
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Wed, 26 May 2021 18:13:35 +0200 |
parents | 9ac2a65d4172 |
children | d6b83b4cedcd |
line wrap: on
line diff
--- a/OrthancStone/Sources/Loaders/LoadedDicomResources.h Wed May 26 14:02:12 2021 +0200 +++ b/OrthancStone/Sources/Loaders/LoadedDicomResources.h Wed May 26 18:13:35 2021 +0200 @@ -34,13 +34,41 @@ class LoadedDicomResources : public boost::noncopyable { private: - typedef std::map<std::string, Orthanc::DicomMap*> Resources; + class Resource : public boost::noncopyable + { + private: + std::unique_ptr<Orthanc::DicomMap> dicom_; + std::unique_ptr<Json::Value> sourceJson_; + + public: + Resource(const Orthanc::DicomMap& dicom); + + Resource* Clone() const; + + const Orthanc::DicomMap& GetDicom() const + { + return *dicom_; + } - Orthanc::DicomTag indexedTag_; - Resources resources_; - std::vector<Orthanc::DicomMap*> flattened_; + bool HasSourceJson() const + { + return sourceJson_.get() != NULL; + } + + const Json::Value& GetSourceJson() const; - void Flatten(); + void SetSourceJson(const Json::Value& json); + }; + + typedef std::map<std::string, Resource*> Resources; + + Orthanc::DicomTag indexedTag_; + Resources resources_; + std::vector<Resource*> flattened_; + + void AddResourceInternal(Resource* resource); + + const Resource& GetResourceInternal(size_t index); void AddFromDicomWebInternal(const Json::Value& dicomweb); @@ -71,7 +99,10 @@ return resources_.size(); } - Orthanc::DicomMap& GetResource(size_t index); + const Orthanc::DicomMap& GetResource(size_t index) + { + return GetResourceInternal(index).GetDicom(); + } bool HasResource(const std::string& id) const { @@ -93,5 +124,15 @@ bool LookupTagValueConsensus(std::string& target, const Orthanc::DicomTag& tag) const; + + bool HasSourceJson(size_t index) + { + return GetResourceInternal(index).HasSourceJson(); + } + + const Json::Value& GetSourceJson(size_t index) + { + return GetResourceInternal(index).GetSourceJson(); + } }; }