comparison OrthancServer/ServerToolbox.cpp @ 1737:ec66a16aa398

removal of DicomStringValue and DicomNullValue
author Sebastien Jodogne <s.jodogne@gmail.com>
date Thu, 22 Oct 2015 07:52:24 +0200
parents a7c05bbfaf6a
children b3de74dec2d5
comparison
equal deleted inserted replaced
1736:b953c6eef28d 1737:ec66a16aa398
89 } 89 }
90 } 90 }
91 } 91 }
92 92
93 93
94 static std::string ValueAsString(const DicomMap& summary,
95 const DicomTag& tag)
96 {
97 const DicomValue& value = summary.GetValue(tag);
98 if (value.IsNull())
99 {
100 return "(null)";
101 }
102 else
103 {
104 return value.GetContent();
105 }
106 }
107
108
94 void LogMissingRequiredTag(const DicomMap& summary) 109 void LogMissingRequiredTag(const DicomMap& summary)
95 { 110 {
96 std::string s, t; 111 std::string s, t;
97 112
98 if (summary.HasTag(DICOM_TAG_PATIENT_ID)) 113 if (summary.HasTag(DICOM_TAG_PATIENT_ID))
99 { 114 {
100 if (t.size() > 0) 115 if (t.size() > 0)
101 t += ", "; 116 t += ", ";
102 t += "PatientID=" + summary.GetValue(DICOM_TAG_PATIENT_ID).AsString(); 117 t += "PatientID=" + ValueAsString(summary, DICOM_TAG_PATIENT_ID);
103 } 118 }
104 else 119 else
105 { 120 {
106 if (s.size() > 0) 121 if (s.size() > 0)
107 s += ", "; 122 s += ", ";
110 125
111 if (summary.HasTag(DICOM_TAG_STUDY_INSTANCE_UID)) 126 if (summary.HasTag(DICOM_TAG_STUDY_INSTANCE_UID))
112 { 127 {
113 if (t.size() > 0) 128 if (t.size() > 0)
114 t += ", "; 129 t += ", ";
115 t += "StudyInstanceUID=" + summary.GetValue(DICOM_TAG_STUDY_INSTANCE_UID).AsString(); 130 t += "StudyInstanceUID=" + ValueAsString(summary, DICOM_TAG_STUDY_INSTANCE_UID);
116 } 131 }
117 else 132 else
118 { 133 {
119 if (s.size() > 0) 134 if (s.size() > 0)
120 s += ", "; 135 s += ", ";
123 138
124 if (summary.HasTag(DICOM_TAG_SERIES_INSTANCE_UID)) 139 if (summary.HasTag(DICOM_TAG_SERIES_INSTANCE_UID))
125 { 140 {
126 if (t.size() > 0) 141 if (t.size() > 0)
127 t += ", "; 142 t += ", ";
128 t += "SeriesInstanceUID=" + summary.GetValue(DICOM_TAG_SERIES_INSTANCE_UID).AsString(); 143 t += "SeriesInstanceUID=" + ValueAsString(summary, DICOM_TAG_SERIES_INSTANCE_UID);
129 } 144 }
130 else 145 else
131 { 146 {
132 if (s.size() > 0) 147 if (s.size() > 0)
133 s += ", "; 148 s += ", ";
136 151
137 if (summary.HasTag(DICOM_TAG_SOP_INSTANCE_UID)) 152 if (summary.HasTag(DICOM_TAG_SOP_INSTANCE_UID))
138 { 153 {
139 if (t.size() > 0) 154 if (t.size() > 0)
140 t += ", "; 155 t += ", ";
141 t += "SOPInstanceUID=" + summary.GetValue(DICOM_TAG_SOP_INSTANCE_UID).AsString(); 156 t += "SOPInstanceUID=" + ValueAsString(summary, DICOM_TAG_SOP_INSTANCE_UID);
142 } 157 }
143 else 158 else
144 { 159 {
145 if (s.size() > 0) 160 if (s.size() > 0)
146 s += ", "; 161 s += ", ";
166 181
167 for (size_t i = 0; i < flattened.GetSize(); i++) 182 for (size_t i = 0; i < flattened.GetSize(); i++)
168 { 183 {
169 const DicomElement& element = flattened.GetElement(i); 184 const DicomElement& element = flattened.GetElement(i);
170 const DicomTag& tag = element.GetTag(); 185 const DicomTag& tag = element.GetTag();
171 database.SetMainDicomTag(resource, tag, element.GetValue().AsString()); 186 const DicomValue& value = element.GetValue();
187 if (!value.IsNull() &&
188 !value.IsBinary())
189 {
190 database.SetMainDicomTag(resource, tag, element.GetValue().GetContent());
191 }
172 } 192 }
173 } 193 }
174 194
175 195
176 static void SetIdentifierTagInternal(IDatabaseWrapper& database, 196 static void SetIdentifierTagInternal(IDatabaseWrapper& database,
178 const DicomMap& tags, 198 const DicomMap& tags,
179 const DicomTag& tag) 199 const DicomTag& tag)
180 { 200 {
181 const DicomValue* value = tags.TestAndGetValue(tag); 201 const DicomValue* value = tags.TestAndGetValue(tag);
182 if (value != NULL && 202 if (value != NULL &&
183 !value->IsNull()) 203 !value->IsNull() &&
184 { 204 !value->IsBinary())
185 std::string s = value->AsString(); 205 {
206 std::string s = value->GetContent();
186 207
187 if (tag != DICOM_TAG_PATIENT_ID && 208 if (tag != DICOM_TAG_PATIENT_ID &&
188 tag != DICOM_TAG_STUDY_INSTANCE_UID && 209 tag != DICOM_TAG_STUDY_INSTANCE_UID &&
189 tag != DICOM_TAG_SERIES_INSTANCE_UID && 210 tag != DICOM_TAG_SERIES_INSTANCE_UID &&
190 tag != DICOM_TAG_SOP_INSTANCE_UID && 211 tag != DICOM_TAG_SOP_INSTANCE_UID &&