Mercurial > hg > orthanc
comparison OrthancServer/Sources/ServerContext.cpp @ 4506:ac69c9f76c71
refactoring ServerIndex::Store()
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Wed, 10 Feb 2021 17:01:44 +0100 |
parents | 97d103b57cd1 |
children | b4c58795f3a8 |
comparison
equal
deleted
inserted
replaced
4505:97d103b57cd1 | 4506:ac69c9f76c71 |
---|---|
514 | 514 |
515 bool hasPixelDataOffset; | 515 bool hasPixelDataOffset; |
516 uint64_t pixelDataOffset; | 516 uint64_t pixelDataOffset; |
517 hasPixelDataOffset = DicomStreamReader::LookupPixelDataOffset( | 517 hasPixelDataOffset = DicomStreamReader::LookupPixelDataOffset( |
518 pixelDataOffset, dicom.GetBufferData(), dicom.GetBufferSize()); | 518 pixelDataOffset, dicom.GetBufferData(), dicom.GetBufferSize()); |
519 | |
520 std::string transferSyntax; | |
521 bool hasTransferSyntax = dicom.LookupTransferSyntax(transferSyntax); | |
519 | 522 |
520 DicomMap summary; | 523 DicomMap summary; |
521 OrthancConfiguration::DefaultExtractDicomSummary(summary, dicom.GetParsedDicomFile()); | 524 OrthancConfiguration::DefaultExtractDicomSummary(summary, dicom.GetParsedDicomFile()); |
522 | 525 |
523 try | 526 try |
524 { | 527 { |
525 MetricsRegistry::Timer timer(GetMetricsRegistry(), "orthanc_store_dicom_duration_ms"); | 528 MetricsRegistry::Timer timer(GetMetricsRegistry(), "orthanc_store_dicom_duration_ms"); |
526 StorageAccessor accessor(area_, GetMetricsRegistry()); | 529 StorageAccessor accessor(area_, GetMetricsRegistry()); |
527 | 530 |
528 DicomInstanceHasher hasher(summary); | 531 resultPublicId = dicom.GetParsedDicomFile().GetHasher().HashInstance(); |
529 resultPublicId = hasher.HashInstance(); | |
530 | 532 |
531 Json::Value dicomAsJson; | 533 Json::Value dicomAsJson; |
532 OrthancConfiguration::DefaultDicomDatasetToJson(dicomAsJson, dicom.GetParsedDicomFile()); | 534 OrthancConfiguration::DefaultDicomDatasetToJson(dicomAsJson, dicom.GetParsedDicomFile()); |
533 | 535 |
534 Json::Value simplifiedTags; | 536 Json::Value simplifiedTags; |
588 attachments.push_back(jsonInfo); | 590 attachments.push_back(jsonInfo); |
589 } | 591 } |
590 | 592 |
591 typedef std::map<MetadataType, std::string> InstanceMetadata; | 593 typedef std::map<MetadataType, std::string> InstanceMetadata; |
592 InstanceMetadata instanceMetadata; | 594 InstanceMetadata instanceMetadata; |
593 StoreStatus status = index_.Store(instanceMetadata, dicom, summary, hasher, attachments, | 595 StoreStatus status = index_.Store( |
594 overwrite, hasPixelDataOffset, pixelDataOffset); | 596 instanceMetadata, summary, attachments, dicom.GetMetadata(), dicom.GetOrigin(), overwrite, |
597 hasTransferSyntax, transferSyntax, hasPixelDataOffset, pixelDataOffset); | |
595 | 598 |
596 // Only keep the metadata for the "instance" level | 599 // Only keep the metadata for the "instance" level |
597 dicom.GetMetadata().clear(); | 600 dicom.ClearMetadata(); |
598 | 601 |
599 for (InstanceMetadata::const_iterator it = instanceMetadata.begin(); | 602 for (InstanceMetadata::const_iterator it = instanceMetadata.begin(); |
600 it != instanceMetadata.end(); ++it) | 603 it != instanceMetadata.end(); ++it) |
601 { | 604 { |
602 dicom.GetMetadata().insert(std::make_pair(std::make_pair(ResourceType_Instance, it->first), | 605 dicom.AddMetadata(ResourceType_Instance, it->first, it->second); |
603 it->second)); | |
604 } | 606 } |
605 | 607 |
606 if (status != StoreStatus_Success) | 608 if (status != StoreStatus_Success) |
607 { | 609 { |
608 accessor.Remove(dicomInfo); | 610 accessor.Remove(dicomInfo); |