comparison OrthancServer/ParsedDicomFile.cpp @ 1787:1b1d5470233f worklists

refactoring of DicomFindAnswers
author Sebastien Jodogne <s.jodogne@gmail.com>
date Wed, 18 Nov 2015 15:50:32 +0100
parents 164d78911382
children 6a2d507ef064
comparison
equal deleted inserted replaced
1786:164d78911382 1787:1b1d5470233f
821 Replace(DICOM_TAG_SERIES_INSTANCE_UID, FromDcmtkBridge::GenerateUniqueIdentifier(ResourceType_Series)); 821 Replace(DICOM_TAG_SERIES_INSTANCE_UID, FromDcmtkBridge::GenerateUniqueIdentifier(ResourceType_Series));
822 Replace(DICOM_TAG_SOP_INSTANCE_UID, FromDcmtkBridge::GenerateUniqueIdentifier(ResourceType_Instance)); 822 Replace(DICOM_TAG_SOP_INSTANCE_UID, FromDcmtkBridge::GenerateUniqueIdentifier(ResourceType_Instance));
823 } 823 }
824 824
825 825
826 ParsedDicomFile::ParsedDicomFile(void* fileFormat) : pimpl_(new PImpl) 826 ParsedDicomFile::ParsedDicomFile(const DicomMap& map) : pimpl_(new PImpl)
827 { 827 {
828 pimpl_->file_.reset(static_cast<DcmFileFormat*>(fileFormat)); 828 std::auto_ptr<DcmDataset> dataset(ToDcmtkBridge::Convert(map));
829
830 // NOTE: This implies an unnecessary memory copy of the dataset, but no way to get around
831 // http://support.dcmtk.org/redmine/issues/544
832 std::auto_ptr<DcmFileFormat> fileFormat(new DcmFileFormat(dataset.get()));
833
834 pimpl_->file_.reset(fileFormat.release());
829 } 835 }
830 836
831 837
832 ParsedDicomFile::ParsedDicomFile(const char* content, size_t size) : pimpl_(new PImpl) 838 ParsedDicomFile::ParsedDicomFile(const char* content, size_t size) : pimpl_(new PImpl)
833 { 839 {
1226 1232
1227 void ParsedDicomFile::Convert(DicomMap& tags) 1233 void ParsedDicomFile::Convert(DicomMap& tags)
1228 { 1234 {
1229 FromDcmtkBridge::Convert(tags, *pimpl_->file_->getDataset()); 1235 FromDcmtkBridge::Convert(tags, *pimpl_->file_->getDataset());
1230 } 1236 }
1231
1232
1233 ParsedDicomFile* ParsedDicomFile::CreateFromDcmtkDataset(void* dataset)
1234 {
1235 assert(dataset != NULL);
1236
1237 DcmDataset *d = static_cast<DcmDataset*>(dataset);
1238 std::auto_ptr<DcmFileFormat> fileFormat(new DcmFileFormat(d));
1239
1240 return new ParsedDicomFile(fileFormat.release());
1241 }
1242 } 1237 }