Mercurial > hg > orthanc
diff Plugins/Engine/OrthancPluginDatabase.cpp @ 3082:847a0ed92654 db-changes
new extension for database plugin SDK: createInstance
author | Sebastien Jodogne <s.jodogne@gmail.com> |
---|---|
date | Fri, 04 Jan 2019 13:52:34 +0100 |
parents | 1a75595d8e44 |
children | 195ba4cbac3f |
line wrap: on
line diff
--- a/Plugins/Engine/OrthancPluginDatabase.cpp Thu Jan 03 20:03:35 2019 +0100 +++ b/Plugins/Engine/OrthancPluginDatabase.cpp Fri Jan 04 13:52:34 2019 +0100 @@ -1195,13 +1195,39 @@ const std::string& patient, const std::string& study, const std::string& series, - const std::string& instance, - bool overwrite) + const std::string& instance) { - // TODO optimized version + if (extensions_.createInstance == NULL) + { + // Fallback to compatibility mode + return CompatibilityDatabaseWrapper::CreateInstance + (result, instanceId, patient, study, series, instance); + } + else + { + OrthancPluginCreateInstanceResult output; + memset(&output, 0, sizeof(output)); + + CheckSuccess(extensions_.createInstance(&output, payload_, patient.c_str(), + study.c_str(), series.c_str(), instance.c_str())); - return CompatibilityDatabaseWrapper::CreateInstance( - result, instanceId, patient, study, series, instance, overwrite); + instanceId = output.instanceId; + + if (output.isNewInstance) + { + result.isNewPatient_ = output.isNewPatient; + result.isNewStudy_ = output.isNewStudy; + result.isNewSeries_ = output.isNewSeries; + result.patientId_ = output.patientId; + result.studyId_ = output.studyId; + result.seriesId_ = output.seriesId; + return true; + } + else + { + return false; + } + } }