comparison Framework/Orthanc/OrthancServer/FromDcmtkBridge.h @ 38:8f68ad57fd18

sync
author Sebastien Jodogne <s.jodogne@gmail.com>
date Tue, 08 Nov 2016 10:51:48 +0100
parents dc730d11b101
children 2789d34cb993
comparison
equal deleted inserted replaced
37:5c6aebbcb504 38:8f68ad57fd18
32 32
33 #pragma once 33 #pragma once
34 34
35 #include "ServerEnumerations.h" 35 #include "ServerEnumerations.h"
36 36
37 #include "../Core/DicomFormat/DicomElement.h"
37 #include "../Core/DicomFormat/DicomMap.h" 38 #include "../Core/DicomFormat/DicomMap.h"
38 39
39 #include <dcmtk/dcmdata/dcdatset.h> 40 #include <dcmtk/dcmdata/dcdatset.h>
40 #include <dcmtk/dcmdata/dcmetinf.h> 41 #include <dcmtk/dcmdata/dcmetinf.h>
41 #include <dcmtk/dcmdata/dcpixseq.h> 42 #include <dcmtk/dcmdata/dcpixseq.h>
42 #include <dcmtk/dcmdata/dcfilefo.h> 43 #include <dcmtk/dcmdata/dcfilefo.h>
43 #include <json/json.h> 44 #include <json/json.h>
44 45
46 #if ORTHANC_BUILD_UNIT_TESTS == 1
47 # include <gtest/gtest_prod.h>
48 #endif
49
50
45 namespace Orthanc 51 namespace Orthanc
46 { 52 {
47 class FromDcmtkBridge 53 class FromDcmtkBridge : public boost::noncopyable
48 { 54 {
55 #if ORTHANC_BUILD_UNIT_TESTS == 1
56 FRIEND_TEST(FromDcmtkBridge, FromJson);
57 #endif
58
59 friend class ParsedDicomFile;
60 friend class Configuration;
61
62 private:
63 FromDcmtkBridge(); // Pure static class
64
65 static void ExtractDicomSummary(DicomMap& target,
66 DcmItem& dataset,
67 unsigned int maxStringLength,
68 Encoding defaultEncoding);
69
70 static void DatasetToJson(Json::Value& parent,
71 DcmItem& item,
72 DicomToJsonFormat format,
73 DicomToJsonFlags flags,
74 unsigned int maxStringLength,
75 Encoding encoding);
76
77 static void ElementToJson(Json::Value& parent,
78 DcmElement& element,
79 DicomToJsonFormat format,
80 DicomToJsonFlags flags,
81 unsigned int maxStringLength,
82 Encoding dicomEncoding);
83
84 static void ExtractDicomAsJson(Json::Value& target,
85 DcmDataset& dataset,
86 DicomToJsonFormat format,
87 DicomToJsonFlags flags,
88 unsigned int maxStringLength,
89 Encoding defaultEncoding);
90
49 public: 91 public:
50 static void InitializeDictionary(); 92 static void InitializeDictionary();
51 93
52 static void RegisterDictionaryTag(const DicomTag& tag, 94 static void RegisterDictionaryTag(const DicomTag& tag,
53 ValueRepresentation vr, 95 ValueRepresentation vr,
54 const std::string& name, 96 const std::string& name,
55 unsigned int minMultiplicity, 97 unsigned int minMultiplicity,
56 unsigned int maxMultiplicity); 98 unsigned int maxMultiplicity,
99 const std::string& privateCreator);
57 100
58 static Encoding DetectEncoding(DcmItem& dataset, 101 static Encoding DetectEncoding(DcmItem& dataset,
59 Encoding defaultEncoding); 102 Encoding defaultEncoding);
60
61 static void Convert(DicomMap& target,
62 DcmItem& dataset,
63 unsigned int maxStringLength,
64 Encoding defaultEncoding);
65 103
66 static DicomTag Convert(const DcmTag& tag); 104 static DicomTag Convert(const DcmTag& tag);
67 105
68 static DicomTag GetTag(const DcmElement& element); 106 static DicomTag GetTag(const DcmElement& element);
69 107
72 static DicomValue* ConvertLeafElement(DcmElement& element, 110 static DicomValue* ConvertLeafElement(DcmElement& element,
73 DicomToJsonFlags flags, 111 DicomToJsonFlags flags,
74 unsigned int maxStringLength, 112 unsigned int maxStringLength,
75 Encoding encoding); 113 Encoding encoding);
76 114
77 static void ToJson(Json::Value& parent, 115 static void ExtractHeaderAsJson(Json::Value& target,
78 DcmElement& element, 116 DcmMetaInfo& header,
79 DicomToJsonFormat format, 117 DicomToJsonFormat format,
80 DicomToJsonFlags flags, 118 DicomToJsonFlags flags,
81 unsigned int maxStringLength, 119 unsigned int maxStringLength);
82 Encoding dicomEncoding);
83 120
84 static void ToJson(Json::Value& target, 121 static std::string GetTagName(const DicomTag& tag,
85 DcmDataset& dataset, 122 const std::string& privateCreator);
86 DicomToJsonFormat format,
87 DicomToJsonFlags flags,
88 unsigned int maxStringLength,
89 Encoding defaultEncoding);
90 123
91 static void ToJson(Json::Value& target, 124 static std::string GetTagName(const DcmElement& element);
92 DcmMetaInfo& header,
93 DicomToJsonFormat format,
94 DicomToJsonFlags flags,
95 unsigned int maxStringLength);
96 125
97 static std::string GetName(const DicomTag& tag); 126 static std::string GetTagName(const DicomElement& element)
127 {
128 return GetTagName(element.GetTag(), "");
129 }
98 130
99 static DicomTag ParseTag(const char* name); 131 static DicomTag ParseTag(const char* name);
100 132
101 static DicomTag ParseTag(const std::string& name) 133 static DicomTag ParseTag(const std::string& name)
102 { 134 {