Mercurial > hg > orthanc
comparison OrthancServer/ServerIndex.cpp @ 3087:df1b17be20f6 db-changes
cont
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Fri, 04 Jan 2019 17:22:47 +0100 |
parents | 74e3e48aa9bd |
children | 31244604f617 |
comparison
equal
deleted
inserted
replaced
3086:74e3e48aa9bd | 3087:df1b17be20f6 |
---|---|
497 | 497 |
498 LOG(INFO) << "Stopping the database flushing thread"; | 498 LOG(INFO) << "Stopping the database flushing thread"; |
499 } | 499 } |
500 | 500 |
501 | 501 |
502 static void ComputeExpectedNumberOfInstances(IDatabaseWrapper& db, | 502 static void ComputeExpectedNumberOfInstances(ResourcesContent& target, |
503 int64_t series, | 503 int64_t series, |
504 const DicomMap& dicomSummary) | 504 const DicomMap& dicomSummary) |
505 { | 505 { |
506 try | 506 try |
507 { | 507 { |
513 { | 513 { |
514 // Patch for series with temporal positions thanks to Will Ryder | 514 // Patch for series with temporal positions thanks to Will Ryder |
515 int64_t imagesInAcquisition = boost::lexical_cast<int64_t>(value->GetContent()); | 515 int64_t imagesInAcquisition = boost::lexical_cast<int64_t>(value->GetContent()); |
516 int64_t countTemporalPositions = boost::lexical_cast<int64_t>(value2->GetContent()); | 516 int64_t countTemporalPositions = boost::lexical_cast<int64_t>(value2->GetContent()); |
517 std::string expected = boost::lexical_cast<std::string>(imagesInAcquisition * countTemporalPositions); | 517 std::string expected = boost::lexical_cast<std::string>(imagesInAcquisition * countTemporalPositions); |
518 db.SetMetadata(series, MetadataType_Series_ExpectedNumberOfInstances, expected); | 518 target.AddMetadata(series, MetadataType_Series_ExpectedNumberOfInstances, expected); |
519 } | 519 } |
520 | 520 |
521 else if ((value = dicomSummary.TestAndGetValue(DICOM_TAG_NUMBER_OF_SLICES)) != NULL && | 521 else if ((value = dicomSummary.TestAndGetValue(DICOM_TAG_NUMBER_OF_SLICES)) != NULL && |
522 (value2 = dicomSummary.TestAndGetValue(DICOM_TAG_NUMBER_OF_TIME_SLICES)) != NULL) | 522 (value2 = dicomSummary.TestAndGetValue(DICOM_TAG_NUMBER_OF_TIME_SLICES)) != NULL) |
523 { | 523 { |
524 // Support of Cardio-PET images | 524 // Support of Cardio-PET images |
525 int64_t numberOfSlices = boost::lexical_cast<int64_t>(value->GetContent()); | 525 int64_t numberOfSlices = boost::lexical_cast<int64_t>(value->GetContent()); |
526 int64_t numberOfTimeSlices = boost::lexical_cast<int64_t>(value2->GetContent()); | 526 int64_t numberOfTimeSlices = boost::lexical_cast<int64_t>(value2->GetContent()); |
527 std::string expected = boost::lexical_cast<std::string>(numberOfSlices * numberOfTimeSlices); | 527 std::string expected = boost::lexical_cast<std::string>(numberOfSlices * numberOfTimeSlices); |
528 db.SetMetadata(series, MetadataType_Series_ExpectedNumberOfInstances, expected); | 528 target.AddMetadata(series, MetadataType_Series_ExpectedNumberOfInstances, expected); |
529 } | 529 } |
530 | 530 |
531 else if ((value = dicomSummary.TestAndGetValue(DICOM_TAG_CARDIAC_NUMBER_OF_IMAGES)) != NULL) | 531 else if ((value = dicomSummary.TestAndGetValue(DICOM_TAG_CARDIAC_NUMBER_OF_IMAGES)) != NULL) |
532 { | 532 { |
533 db.SetMetadata(series, MetadataType_Series_ExpectedNumberOfInstances, value->GetContent()); | 533 target.AddMetadata(series, MetadataType_Series_ExpectedNumberOfInstances, value->GetContent()); |
534 } | 534 } |
535 } | 535 } |
536 catch (OrthancException&) | 536 catch (OrthancException&) |
537 { | 537 { |
538 } | 538 } |
907 MetadataType_Instance_IndexInSeries, value->GetContent()); | 907 MetadataType_Instance_IndexInSeries, value->GetContent()); |
908 } | 908 } |
909 } | 909 } |
910 | 910 |
911 | 911 |
912 // Check whether the series of this new instance is now completed | |
913 if (status.isNewSeries_) | |
914 { | |
915 ComputeExpectedNumberOfInstances(content, status.seriesId_, dicomSummary); | |
916 } | |
917 | |
918 | |
912 db_.SetResourcesContent(content); | 919 db_.SetResourcesContent(content); |
913 } | 920 } |
914 | 921 |
915 | 922 |
916 | 923 // TODO - SPEED THIS UP |
917 // Check whether the series of this new instance is now completed | |
918 if (status.isNewSeries_) | |
919 { | |
920 ComputeExpectedNumberOfInstances(db_, status.seriesId_, dicomSummary); | |
921 } | |
922 | |
923 SeriesStatus seriesStatus = GetSeriesStatus(status.seriesId_); | 924 SeriesStatus seriesStatus = GetSeriesStatus(status.seriesId_); |
924 if (seriesStatus == SeriesStatus_Complete) | 925 if (seriesStatus == SeriesStatus_Complete) |
925 { | 926 { |
926 LogChange(status.seriesId_, ChangeType_CompletedSeries, ResourceType_Series, hashSeries); | 927 LogChange(status.seriesId_, ChangeType_CompletedSeries, ResourceType_Series, hashSeries); |
927 } | 928 } |
929 | |
928 | 930 |
929 // Mark the parent resources of this instance as unstable | 931 // Mark the parent resources of this instance as unstable |
930 MarkAsUnstable(status.seriesId_, ResourceType_Series, hashSeries); | 932 MarkAsUnstable(status.seriesId_, ResourceType_Series, hashSeries); |
931 MarkAsUnstable(status.studyId_, ResourceType_Study, hashStudy); | 933 MarkAsUnstable(status.studyId_, ResourceType_Study, hashStudy); |
932 MarkAsUnstable(status.patientId_, ResourceType_Patient, hashPatient); | 934 MarkAsUnstable(status.patientId_, ResourceType_Patient, hashPatient); |