From 21750b6f44b010ffaf35cd913c1492d6e644948f Mon Sep 17 00:00:00 2001 From: "CHIN\\a5566" Date: Fri, 11 Aug 2023 15:46:26 +0800 Subject: [PATCH] feat: support build date time query --- .../QIDO-RS/service/querybuilder.js | 39 +++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/api-sql/dicom-web/controller/QIDO-RS/service/querybuilder.js b/api-sql/dicom-web/controller/QIDO-RS/service/querybuilder.js index d79f4247..428c50f3 100644 --- a/api-sql/dicom-web/controller/QIDO-RS/service/querybuilder.js +++ b/api-sql/dicom-web/controller/QIDO-RS/service/querybuilder.js @@ -259,10 +259,49 @@ class BaseQueryBuilder { } } + /** + * + * @param {string} tag + * @param {string} value + */ + getDateTimeQuery(tag, value) { + let dashIndex = value.indexOf("-"); + if (dashIndex === 0) { // -YYYYMMDD + return { + [`x${tag}`]: { + [Op.lte]: this.dateTimeStringToSqlDateTime(value.substring(1)) + } + }; + } else if (dashIndex === value.length - 1) { // YYYYMMDD- + return { + [`x${tag}`]: { + [Op.gte]: this.dateTimeStringToSqlDateTime(value.substring(0, dashIndex)) + } + }; + } else if (dashIndex > 0) { // YYYYMMDD-YYYYMMDD + return { + [`x${tag}`]: { + [Op.and]: [ + { [Op.gte]: this.dateTimeStringToSqlDateTime(value.substring(0, dashIndex)) }, + { [Op.lte]: this.dateTimeStringToSqlDateTime(value.substring(dashIndex + 1)) } + ] + } + }; + } else { // YYYYMMDD + return { + [`x${tag}`]: this.dateTimeStringToSqlDateTime(value) + }; + } + } + dateStringToSqlDateOnly(value) { return moment(value, "YYYYMMDD").format("YYYY-MM-DD"); } + dateTimeStringToSqlDateTime(value) { + return moment(value, "YYYYMMDDhhmmss.SSSSSSZZ").toISOString(); + } + /** * * @param {string} timeStr