Mercurial > hg > orthanc-wsi
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 { |