From ab04e91bd359a12e89a30f1f635cf0bdccfd2ff2 Mon Sep 17 00:00:00 2001 From: "CHIN\\a5566" Date: Fri, 1 Mar 2024 16:55:29 +0800 Subject: [PATCH] feat: add `getInstancePathsByQueryOpts` in instance model --- models/mongodb/models/instance.model.js | 21 ++++++++++++++++++++- utils/typeDef/models/instance.d.ts | 2 ++ 2 files changed, 22 insertions(+), 1 deletion(-) diff --git a/models/mongodb/models/instance.model.js b/models/mongodb/models/instance.model.js index a297984..4755e45 100644 --- a/models/mongodb/models/instance.model.js +++ b/models/mongodb/models/instance.model.js @@ -8,7 +8,7 @@ const { dicomJsonAttributeDASchema, getVRSchema } = require("../schema/dicomJsonAttribute"); -const { getStoreDicomFullPath, IncludeFieldsFactory } = require("../service"); +const { getStoreDicomFullPath, IncludeFieldsFactory, getStoreDicomFullPathGroup } = require("../service"); const { logger } = require("../../../utils/logs/log"); const { raccoonConfig } = require("@root/config-class"); const { dictionary } = require("@models/DICOM/dicom-tags-dic"); @@ -150,6 +150,25 @@ let dicomSchemaOptions = _.merge( ] }; }, + /** + * + * @type { import("@root/utils/typeDef/models/instance").InstanceModelConstructor["getInstanceFilesByQueryOpts"] } + */ + getInstancePathsByQueryOpts: async function (queryOptions) { + let docs = await mongoose.model("dicom").find({ + ...queryOptions.query, + deleteStatus: { + $eq: queryOptions.isRecycle ? 1 : 0 + } + }, { instancePath: 1, studyUID: 1, seriesUID: 1, instanceUID: 1 }) + .limit(queryOptions.limit) + .skip(queryOptions.skip) + .lean(); + + if (!docs) return []; + + return await getStoreDicomFullPathGroup(docs); + }, /** * @type { import("@root/utils/typeDef/models/instance").InstanceModelConstructor["getInstanceOfMedianIndex"] } */ diff --git a/utils/typeDef/models/instance.d.ts b/utils/typeDef/models/instance.d.ts index d5ec797..0e55598 100644 --- a/utils/typeDef/models/instance.d.ts +++ b/utils/typeDef/models/instance.d.ts @@ -1,3 +1,4 @@ +import type { DicomJsonQueryOptions } from "../dicom"; import type { ImagePathObj, InstanceFrameObj } from "../dicomImage"; import type { ImageModelConstructor, ImageModel } from "./imageModel"; @@ -21,6 +22,7 @@ export interface InstanceModelConstructor extends ImageModelConstructor { public static getPathOfInstance(iParam: { studyUID: string, seriesUID: string, instanceUID: string }): Promise; public static getInstanceOfMedianIndex(query: { studyUID: string }): Promise; public static getInstanceFrame(iParam: { studyUID: string, seriesUID: string, instanceUID: string }): Promise; + public static getInstancePathsByQueryOpts(queryOptions: DicomJsonQueryOptions): Promise } export interface InstanceModel extends ImageModel {