comparison OrthancServer/Sources/Database/StatelessDatabaseOperations.h @ 5036:877bc3b96476

Handle Dicom sequences in ExtraMainDicomTags and save them in the 'MainDicomSequences' metadata
author Alain Mazy <am@osimis.io>
date Fri, 24 Jun 2022 15:47:10 +0200
parents 8fba26292a9f
children 28db9663fc2d
comparison
equal deleted inserted replaced
5035:67d98fccc850 5036:877bc3b96476
35 { 35 {
36 class DatabaseLookup; 36 class DatabaseLookup;
37 class ParsedDicomFile; 37 class ParsedDicomFile;
38 struct ServerIndexChange; 38 struct ServerIndexChange;
39 39
40 /*
41 * contains a map of dicom sequences where:
42 * the key is a DicomTag
43 * the sequence is serialized in Json "full" format
44 */
45 struct DicomSequencesMap : public boost::noncopyable
46 {
47 std::map<DicomTag, Json::Value> sequences_;
48
49 void FromJson(const Json::Value& serialized);
50 void FromDicomAsJson(const Json::Value& dicomAsJson, const std::set<DicomTag>& tags);
51 void ToJson(Json::Value& target, DicomToJsonFormat format) const;
52 };
53
40 struct ExpandedResource : public boost::noncopyable 54 struct ExpandedResource : public boost::noncopyable
41 { 55 {
42 std::string id_; 56 std::string id_;
43 DicomMap tags_; // all tags from DB 57 DicomMap tags_; // all tags from DB (only leaf tags, not sequences !)
58 DicomSequencesMap sequences_; // the requested sequences
44 std::string mainDicomTagsSignature_; 59 std::string mainDicomTagsSignature_;
45 std::string parentId_; 60 std::string parentId_;
46 std::list<std::string> childrenIds_; 61 std::list<std::string> childrenIds_;
47 std::map<MetadataType, std::string> metadata_; 62 std::map<MetadataType, std::string> metadata_;
48 ResourceType type_; 63 ResourceType type_;
648 663
649 void ReconstructInstance(const ParsedDicomFile& dicom); 664 void ReconstructInstance(const ParsedDicomFile& dicom);
650 665
651 StoreStatus Store(std::map<MetadataType, std::string>& instanceMetadata, 666 StoreStatus Store(std::map<MetadataType, std::string>& instanceMetadata,
652 const DicomMap& dicomSummary, 667 const DicomMap& dicomSummary,
668 const std::map<DicomTag, Json::Value>& sequencesToStore,
653 const Attachments& attachments, 669 const Attachments& attachments,
654 const MetadataMap& metadata, 670 const MetadataMap& metadata,
655 const DicomInstanceOrigin& origin, 671 const DicomInstanceOrigin& origin,
656 bool overwrite, 672 bool overwrite,
657 bool hasTransferSyntax, 673 bool hasTransferSyntax,