From db9e488ac07f9eaad02a34ea729e57974d60dc0f Mon Sep 17 00:00:00 2001 From: chinlinlee Date: Mon, 22 Jan 2024 15:28:05 +0800 Subject: [PATCH] feat: add `updateStatusByQuery` for `MwlItemModel` instead findAll --- .../service/change-filtered-mwlItem-status.js | 15 ++------------- models/mongodb/models/mwlitems.model.js | 11 ++++++++++- 2 files changed, 12 insertions(+), 14 deletions(-) diff --git a/api/dicom-web/controller/MWL-RS/service/change-filtered-mwlItem-status.js b/api/dicom-web/controller/MWL-RS/service/change-filtered-mwlItem-status.js index 6ff7bcfe..d35b03ea 100644 --- a/api/dicom-web/controller/MWL-RS/service/change-filtered-mwlItem-status.js +++ b/api/dicom-web/controller/MWL-RS/service/change-filtered-mwlItem-status.js @@ -12,21 +12,10 @@ class ChangeFilteredMwlItemStatusService extends BaseQueryService { async changeMwlItemsStatus() { let { status } = this.request.params; - let mwlItems = await this.getMwlItems(); - if (mwlItems.length === 0) { - throw new DicomWebServiceError(DicomWebStatusCodes.NoSuchObjectInstance, "Can not found any MWL item from query", 404); - } - for (let mwlItem of mwlItems) { - _.set(mwlItem, `${dictionary.keyword.ScheduledProcedureStepSequence}.Value.0.${dictionary.keyword.ScheduledProcedureStepStatus}.Value.0`, status); - await mwlItem.save(); - } + let updatedCount = await MwlItemModel.updateStatusByQuery(this.query, status); - return mwlItems.length; - } - - async getMwlItems() { - return await MwlItemModel.findMwlItems(this.query); + return updatedCount; } } diff --git a/models/mongodb/models/mwlitems.model.js b/models/mongodb/models/mwlitems.model.js index 9d53e3d5..e9b20bb6 100644 --- a/models/mongodb/models/mwlitems.model.js +++ b/models/mongodb/models/mwlitems.model.js @@ -103,7 +103,16 @@ let mwlItemSchema = new mongoose.Schema( }); return await mwlItem.save(); }, - findMwlItems: async function(query) { + updateStatusByQuery: async function (query, status) { + let mongoQuery = (await convertRequestQueryToMongoQuery(query)).$match; + let updateResult = await mongoose.model("mwlItems").updateMany(mongoQuery, { + $set: { + [`${dictionary.keyword.ScheduledProcedureStepSequence.tag}.Value.0.${dictionary.keyword.ScheduledProcedureStepStatus.tag}.Value.0`]: status + } + }).exec(); + return updateResult.modifiedCount; + }, + findMwlItems: async function (query) { let mongoQuery = await convertRequestQueryToMongoQuery(query); return await mongoose.model("mwlItems").find(mongoQuery); }