# HG changeset patch # User Sebastien Jodogne # Date 1546618967 -3600 # Node ID df1b17be20f67380b3c16b2c563498303b6121f1 # Parent 74e3e48aa9bdddeb4cc988b60a664ba47b45676a cont diff -r 74e3e48aa9bd -r df1b17be20f6 OrthancServer/Search/DatabaseConstraint.cpp --- a/OrthancServer/Search/DatabaseConstraint.cpp Fri Jan 04 17:10:58 2019 +0100 +++ b/OrthancServer/Search/DatabaseConstraint.cpp Fri Jan 04 17:22:47 2019 +0100 @@ -89,7 +89,7 @@ #endif -#if ORTHANC_PLUGINS_HAS_DATABASE_CONSTRAINT == 1 +#if ORTHANC_PLUGINS_HAS_DATABASE_OPTIMIZATIONS_1 == 1 OrthancPluginConstraintType Convert(ConstraintType constraint) { switch (constraint) @@ -116,7 +116,7 @@ #endif -#if ORTHANC_PLUGINS_HAS_DATABASE_CONSTRAINT == 1 +#if ORTHANC_PLUGINS_HAS_DATABASE_OPTIMIZATIONS_1 == 1 ConstraintType Convert(OrthancPluginConstraintType constraint) { switch (constraint) @@ -166,7 +166,7 @@ } -#if ORTHANC_PLUGINS_HAS_DATABASE_CONSTRAINT == 1 +#if ORTHANC_PLUGINS_HAS_DATABASE_OPTIMIZATIONS_1 == 1 DatabaseConstraint::DatabaseConstraint(const OrthancPluginDatabaseConstraint& constraint) : level_(Plugins::Convert(constraint.level)), tag_(constraint.tagGroup, constraint.tagElement), @@ -218,7 +218,7 @@ } -#if ORTHANC_PLUGINS_HAS_DATABASE_CONSTRAINT == 1 +#if ORTHANC_PLUGINS_HAS_DATABASE_OPTIMIZATIONS_1 == 1 void DatabaseConstraint::EncodeForPlugins(OrthancPluginDatabaseConstraint& constraint, std::vector& tmpValues) const { diff -r 74e3e48aa9bd -r df1b17be20f6 OrthancServer/Search/DatabaseConstraint.h --- a/OrthancServer/Search/DatabaseConstraint.h Fri Jan 04 17:10:58 2019 +0100 +++ b/OrthancServer/Search/DatabaseConstraint.h Fri Jan 04 17:22:47 2019 +0100 @@ -36,14 +36,14 @@ #include "../../Core/DicomFormat/DicomMap.h" #include "../ServerEnumerations.h" -#define ORTHANC_PLUGINS_HAS_DATABASE_CONSTRAINT 0 +#define ORTHANC_PLUGINS_HAS_DATABASE_OPTIMIZATIONS_1 0 #if ORTHANC_ENABLE_PLUGINS == 1 # include # if defined(ORTHANC_PLUGINS_VERSION_IS_ABOVE) // Macro introduced in 1.3.1 # if ORTHANC_PLUGINS_VERSION_IS_ABOVE(1, 5, 2) -# undef ORTHANC_PLUGINS_HAS_DATABASE_CONSTRAINT -# define ORTHANC_PLUGINS_HAS_DATABASE_CONSTRAINT 1 +# undef ORTHANC_PLUGINS_HAS_DATABASE_OPTIMIZATIONS_1 +# define ORTHANC_PLUGINS_HAS_DATABASE_OPTIMIZATIONS_1 1 # endif # endif #endif @@ -60,11 +60,11 @@ ResourceType Convert(OrthancPluginResourceType type); #endif -#if ORTHANC_PLUGINS_HAS_DATABASE_CONSTRAINT == 1 +#if ORTHANC_PLUGINS_HAS_DATABASE_OPTIMIZATIONS_1 == 1 OrthancPluginConstraintType Convert(ConstraintType constraint); #endif -#if ORTHANC_PLUGINS_HAS_DATABASE_CONSTRAINT == 1 +#if ORTHANC_PLUGINS_HAS_DATABASE_OPTIMIZATIONS_1 == 1 ConstraintType Convert(OrthancPluginConstraintType constraint); #endif } @@ -91,7 +91,7 @@ bool caseSensitive, bool mandatory); -#if ORTHANC_PLUGINS_HAS_DATABASE_CONSTRAINT == 1 +#if ORTHANC_PLUGINS_HAS_DATABASE_OPTIMIZATIONS_1 == 1 DatabaseConstraint(const OrthancPluginDatabaseConstraint& constraint); #endif @@ -136,7 +136,7 @@ bool IsMatch(const DicomMap& dicom) const; -#if ORTHANC_PLUGINS_HAS_DATABASE_CONSTRAINT == 1 +#if ORTHANC_PLUGINS_HAS_DATABASE_OPTIMIZATIONS_1 == 1 void EncodeForPlugins(OrthancPluginDatabaseConstraint& constraint, std::vector& tmpValues) const; #endif diff -r 74e3e48aa9bd -r df1b17be20f6 OrthancServer/ServerIndex.cpp --- a/OrthancServer/ServerIndex.cpp Fri Jan 04 17:10:58 2019 +0100 +++ b/OrthancServer/ServerIndex.cpp Fri Jan 04 17:22:47 2019 +0100 @@ -499,7 +499,7 @@ } - static void ComputeExpectedNumberOfInstances(IDatabaseWrapper& db, + static void ComputeExpectedNumberOfInstances(ResourcesContent& target, int64_t series, const DicomMap& dicomSummary) { @@ -515,7 +515,7 @@ int64_t imagesInAcquisition = boost::lexical_cast(value->GetContent()); int64_t countTemporalPositions = boost::lexical_cast(value2->GetContent()); std::string expected = boost::lexical_cast(imagesInAcquisition * countTemporalPositions); - db.SetMetadata(series, MetadataType_Series_ExpectedNumberOfInstances, expected); + target.AddMetadata(series, MetadataType_Series_ExpectedNumberOfInstances, expected); } else if ((value = dicomSummary.TestAndGetValue(DICOM_TAG_NUMBER_OF_SLICES)) != NULL && @@ -525,12 +525,12 @@ int64_t numberOfSlices = boost::lexical_cast(value->GetContent()); int64_t numberOfTimeSlices = boost::lexical_cast(value2->GetContent()); std::string expected = boost::lexical_cast(numberOfSlices * numberOfTimeSlices); - db.SetMetadata(series, MetadataType_Series_ExpectedNumberOfInstances, expected); + target.AddMetadata(series, MetadataType_Series_ExpectedNumberOfInstances, expected); } else if ((value = dicomSummary.TestAndGetValue(DICOM_TAG_CARDIAC_NUMBER_OF_IMAGES)) != NULL) { - db.SetMetadata(series, MetadataType_Series_ExpectedNumberOfInstances, value->GetContent()); + target.AddMetadata(series, MetadataType_Series_ExpectedNumberOfInstances, value->GetContent()); } } catch (OrthancException&) @@ -909,22 +909,24 @@ } + // Check whether the series of this new instance is now completed + if (status.isNewSeries_) + { + ComputeExpectedNumberOfInstances(content, status.seriesId_, dicomSummary); + } + + db_.SetResourcesContent(content); } - - // Check whether the series of this new instance is now completed - if (status.isNewSeries_) - { - ComputeExpectedNumberOfInstances(db_, status.seriesId_, dicomSummary); - } - + // TODO - SPEED THIS UP SeriesStatus seriesStatus = GetSeriesStatus(status.seriesId_); if (seriesStatus == SeriesStatus_Complete) { LogChange(status.seriesId_, ChangeType_CompletedSeries, ResourceType_Series, hashSeries); } + // Mark the parent resources of this instance as unstable MarkAsUnstable(status.seriesId_, ResourceType_Series, hashSeries);