From 188b10dd0e488d31493b482e440224ef54761fd1 Mon Sep 17 00:00:00 2001 From: chinlinlee Date: Thu, 21 Dec 2023 18:53:12 +0800 Subject: [PATCH] feat: implement count API for MWL item --- .../MWL-RS/service/count-mwlItem.service.js | 27 +++++++++++++++++++ .../controller/MWL-RS/count-mwlItem.js | 2 +- models/sql/models/mwlItems.model.js | 8 ++++++ 3 files changed, 36 insertions(+), 1 deletion(-) create mode 100644 api-sql/dicom-web/controller/MWL-RS/service/count-mwlItem.service.js diff --git a/api-sql/dicom-web/controller/MWL-RS/service/count-mwlItem.service.js b/api-sql/dicom-web/controller/MWL-RS/service/count-mwlItem.service.js new file mode 100644 index 00000000..ddf851f7 --- /dev/null +++ b/api-sql/dicom-web/controller/MWL-RS/service/count-mwlItem.service.js @@ -0,0 +1,27 @@ +const { MwlItemModel } = require("@models/sql/models/mwlItems.model"); +const { GetMwlItemCountService } = require("@root/api/dicom-web/controller/MWL-RS/service/count-mwlItem.service"); +const { convertAllQueryToDicomTag } = require("@root/api/dicom-web/service/base-query.service"); +const { cloneDeep } = require("lodash"); + +class SqlGetMwlItemCountService extends GetMwlItemCountService{ + constructor(req, res) { + super(req, res); + } + + async getMwlItemCount() { + return await MwlItemModel.getCount(this.query); + } + + initQuery_() { + let query = cloneDeep(this.request.query); + let queryKeys = Object.keys(query).sort(); + for (let i = 0; i < queryKeys.length; i++) { + let queryKey = queryKeys[i]; + if (!query[queryKey]) delete query[queryKey]; + } + + this.query = convertAllQueryToDicomTag(query, false); + } +} + +module.exports.GetMwlItemCountService = SqlGetMwlItemCountService; \ No newline at end of file diff --git a/api/dicom-web/controller/MWL-RS/count-mwlItem.js b/api/dicom-web/controller/MWL-RS/count-mwlItem.js index 2f778ecd..f64debfa 100644 --- a/api/dicom-web/controller/MWL-RS/count-mwlItem.js +++ b/api/dicom-web/controller/MWL-RS/count-mwlItem.js @@ -1,7 +1,7 @@ const { ApiErrorArrayHandler } = require("@error/api-errors.handler"); const { Controller } = require("@root/api/controller.class"); const { ApiLogger } = require("@root/utils/logs/api-logger"); -const { GetMwlItemCountService } = require("./service/count-mwlItem.service"); +const { GetMwlItemCountService } = require("@mwl-service/count-mwlItem.service"); class GetMwlItemCountController extends Controller { constructor(req, res) { diff --git a/models/sql/models/mwlItems.model.js b/models/sql/models/mwlItems.model.js index 51267b0e..ed7b707e 100644 --- a/models/sql/models/mwlItems.model.js +++ b/models/sql/models/mwlItems.model.js @@ -36,6 +36,14 @@ class MwlItemModel extends Model { return item.json; })); } + + static async getCount(query) { + let queryBuilder = new MwlQueryBuilder({query}); + let q = queryBuilder.build(); + return await this.count({ + ...q + }); + } }; /** @type { import("sequelize").ModelAttributes } */