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);