comparison OrthancServer/ServerContext.cpp @ 304:4eea080e6e7a

refactoring
author Sebastien Jodogne <s.jodogne@gmail.com>
date Wed, 19 Dec 2012 14:57:18 +0100
parents 4d7469f72a0b
children 1b0ffed55ab0
comparison
equal deleted inserted replaced
303:c76a35a85c69 304:4eea080e6e7a
74 void ServerContext::RemoveFile(const std::string& fileUuid) 74 void ServerContext::RemoveFile(const std::string& fileUuid)
75 { 75 {
76 storage_.Remove(fileUuid); 76 storage_.Remove(fileUuid);
77 } 77 }
78 78
79 StoreStatus ServerContext::Store(const char* dicomFile, 79 StoreStatus ServerContext::Store(const char* dicomInstance,
80 size_t dicomSize, 80 size_t dicomSize,
81 const DicomMap& dicomSummary, 81 const DicomMap& dicomSummary,
82 const Json::Value& dicomJson, 82 const Json::Value& dicomJson,
83 const std::string& remoteAet) 83 const std::string& remoteAet)
84 { 84 {
89 else 89 else
90 { 90 {
91 accessor_.SetCompressionForNextOperations(CompressionType_None); 91 accessor_.SetCompressionForNextOperations(CompressionType_None);
92 } 92 }
93 93
94 FileInfo dicomInfo = accessor_.Write(dicomFile, dicomSize, FileContentType_Dicom); 94 FileInfo dicomInfo = accessor_.Write(dicomInstance, dicomSize, FileContentType_Dicom);
95 FileInfo jsonInfo = accessor_.Write(dicomJson.toStyledString(), FileContentType_Json); 95 FileInfo jsonInfo = accessor_.Write(dicomJson.toStyledString(), FileContentType_Json);
96 96
97 ServerIndex::Attachments attachments; 97 ServerIndex::Attachments attachments;
98 attachments.push_back(dicomInfo); 98 attachments.push_back(dicomInfo);
99 attachments.push_back(jsonInfo); 99 attachments.push_back(jsonInfo);
186 return dynamic_cast<ParsedDicomFile&>(*p); 186 return dynamic_cast<ParsedDicomFile&>(*p);
187 #else 187 #else
188 return dynamic_cast<ParsedDicomFile&>(dicomCache_.Access(instancePublicId)); 188 return dynamic_cast<ParsedDicomFile&>(dicomCache_.Access(instancePublicId));
189 #endif 189 #endif
190 } 190 }
191
192
193 StoreStatus ServerContext::Store(std::string& resultPublicId,
194 DcmFileFormat& dicomInstance,
195 const char* dicomBuffer,
196 size_t dicomSize)
197 {
198 DicomMap dicomSummary;
199 FromDcmtkBridge::Convert(dicomSummary, *dicomInstance.getDataset());
200
201 DicomInstanceHasher hasher(dicomSummary);
202 resultPublicId = hasher.HashInstance();
203
204 Json::Value dicomJson;
205 FromDcmtkBridge::ToJson(dicomJson, *dicomInstance.getDataset());
206
207 StoreStatus status = StoreStatus_Failure;
208 if (dicomSize > 0)
209 {
210 status = Store(dicomBuffer, dicomSize, dicomSummary, dicomJson, "");
211 }
212
213 return status;
214 }
215
216
217 StoreStatus ServerContext::Store(std::string& resultPublicId,
218 DcmFileFormat& dicomInstance)
219 {
220 std::string buffer;
221 if (!FromDcmtkBridge::SaveToMemoryBuffer(buffer, dicomInstance.getDataset()))
222 {
223 throw OrthancException(ErrorCode_InternalError);
224 }
225
226 if (buffer.size() == 0)
227 return Store(resultPublicId, dicomInstance, NULL, 0);
228 else
229 return Store(resultPublicId, dicomInstance, &buffer[0], buffer.size());
230 }
231
232
233 StoreStatus ServerContext::Store(std::string& resultPublicId,
234 const char* dicomBuffer,
235 size_t dicomSize)
236 {
237 ParsedDicomFile dicom(dicomBuffer, dicomSize);
238 return Store(resultPublicId, dicom.GetDicom(), dicomBuffer, dicomSize);
239 }
240
191 } 241 }