Skip to content

Commit

Permalink
refactor: centralize retrieve instance controller
Browse files Browse the repository at this point in the history
- Using inherit class may be redundant
- Set `zipResponseHandlerType`, `logger`,  `multipartResponseHandlerType` in request object and use them in after process
  • Loading branch information
Chinlinlee committed Jan 13, 2024
1 parent afe65d4 commit b83979b
Show file tree
Hide file tree
Showing 5 changed files with 50 additions and 83 deletions.
25 changes: 0 additions & 25 deletions api/dicom-web/controller/WADO-RS/retrieveInstance.js

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -17,10 +17,6 @@ const { ApiErrorArrayHandler } = require("@error/api-errors.handler");
class BaseRetrieveController extends Controller {
constructor(req, res) {
super(req, res);
this.apiLogger = new ApiLogger(this.request, "WADO-RS");
this.apiLogger.addTokenValue();
this.zipResponseHandlerType = BaseZipResponseHandler;
this.multipartResponseHandlerType = BaseMultipartRelatedResponseHandler;
}

logAction() {
Expand All @@ -40,18 +36,18 @@ class BaseRetrieveController extends Controller {

return sendNotSupportedMediaType(this.response, this.request.headers.accept);
} catch (e) {
let apiErrorArrayHandler = new ApiErrorArrayHandler(this.response, this.apiLogger, e);
let apiErrorArrayHandler = new ApiErrorArrayHandler(this.response, this.request.logger, e);
return apiErrorArrayHandler.doErrorResponse();
}
}

async responseZip() {
let zipResponseHandler = new this.zipResponseHandlerType(this.request, this.response);
let zipResponseHandler = new this.request.zipResponseHandlerType(this.request, this.response);
await zipResponseHandler.doResponse();
}

async responseMultipartRelated() {
let multipartResponseHandler = new this.multipartResponseHandlerType(this.request, this.response);
let multipartResponseHandler = new this.request.multipartResponseHandlerType(this.request, this.response);
await multipartResponseHandler.doResponse();
}
}
Expand Down
24 changes: 0 additions & 24 deletions api/dicom-web/controller/WADO-RS/retrieveStudy-Series-Instances.js

This file was deleted.

24 changes: 0 additions & 24 deletions api/dicom-web/controller/WADO-RS/retrieveStudyInstances.js

This file was deleted.

50 changes: 47 additions & 3 deletions api/dicom-web/wado-rs-instance.route.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,23 @@ const Joi = require("joi");
const { validateParams, intArrayJoi } = require("../validator");
const router = express();


const {
BaseRetrieveController,
StudyZipResponseHandler,
StudyMultipartRelatedResponseHandler,
SeriesZipResponseHandler,
SeriesMultipartRelatedResponseHandler,
InstanceZipResponseHandler,
InstanceMultipartRelatedResponseHandler
} = require("./controller/WADO-RS/retrieveInstances.controller");
const { ApiLogger } = require("@root/utils/logs/api-logger");

let retrieveController = async (req, res) => {
let controller = new BaseRetrieveController(req, res);
await controller.doPipeline();
};

//#region WADO-RS Retrieve Transaction Instance Resources

/**
Expand All @@ -21,7 +38,15 @@ const router = express();
*/
router.get(
"/studies/:studyUID",
require("./controller/WADO-RS/retrieveStudyInstances")
(req, res, next) => {
req.zipResponseHandlerType = StudyZipResponseHandler;
req.multipartResponseHandlerType = StudyMultipartRelatedResponseHandler;
req.logger = new ApiLogger(req, "WADO-RS");
req.logger.addTokenValue();
req.logger.logger.info(`[Get study's instances, study UID: ${req.params.studyUID}] [Request Accept: ${req.headers?.accept}]`);
next();
},
retrieveController
);

/**
Expand All @@ -41,7 +66,15 @@ router.get(
*/
router.get(
"/studies/:studyUID/series/:seriesUID",
require("./controller/WADO-RS/retrieveStudy-Series-Instances")
(req, res, next) => {
req.zipResponseHandlerType = SeriesZipResponseHandler;
req.multipartResponseHandlerType = SeriesMultipartRelatedResponseHandler;
req.logger = new ApiLogger(req, "WADO-RS");
req.logger.addTokenValue();
req.logger.logger.info(`[Get study's series' instances, study UID: ${req.params.studyUID}, series UID: ${req.params.seriesUID}] [Request Accept: ${req.headers?.accept}]`);
next();
},
retrieveController
);

/**
Expand All @@ -62,7 +95,18 @@ router.get(
*/
router.get(
"/studies/:studyUID/series/:seriesUID/instances/:instanceUID",
require("./controller/WADO-RS/retrieveInstance")
(req, res, next) => {
req.zipResponseHandlerType = InstanceZipResponseHandler;
req.multipartResponseHandlerType = InstanceMultipartRelatedResponseHandler;
req.logger = new ApiLogger(req, "WADO-RS");
req.logger.addTokenValue();
req.logger.logger.info(`[Get study's series' instance,`+
`study UID: ${req.params.studyUID}, series UID: ${req.params.seriesUID}, instance UID: ${req.params.instanceUID}]`
+ ` [Request Accept: ${req.headers?.accept}]`);

next();
},
retrieveController
);

//#endregion
Expand Down

0 comments on commit b83979b

Please sign in to comment.