Skip to content

Commit

Permalink
refactor: centralize retrieve rendered controller
Browse files Browse the repository at this point in the history
- Using inherit class may be redundant
- Set `imagePathFactory`, `framesWriter`, `logger` in request object and use them in after process
  • Loading branch information
Chinlinlee committed Jan 13, 2024
1 parent f01dc82 commit a8a2541
Show file tree
Hide file tree
Showing 6 changed files with 51 additions and 145 deletions.
31 changes: 0 additions & 31 deletions api/dicom-web/controller/WADO-RS/rendered/instanceFrames.js

This file was deleted.

31 changes: 0 additions & 31 deletions api/dicom-web/controller/WADO-RS/rendered/instances.js

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -16,23 +16,9 @@ class BaseRetrieveRenderedController extends Controller {
*/
constructor(req, res) {
super(req, res);
this.apiLogger = new ApiLogger(this.request, "WADO-RS");
this.apiLogger.addTokenValue();
this.imagePathFactory = StudyImagePathFactory;
this.framesWriter = renderedService.StudyFramesWriter;
}

logAction() {
throw new Error("abstract, not implement");
}

logSuccessful() {
throw new Error("abstract, not implement");
}

async mainProcess() {
this.logAction();

let headerAccept = _.get(this.request.headers, "accept", "");
if (!headerAccept == `multipart/related; type="image/jpeg"`) {
let badRequestMessage = errorResponse.getBadRequestErrorMessage(`header accept only allow \`multipart/related; type="image/jpeg"\`, exception : ${headerAccept}`);
Expand All @@ -47,21 +33,19 @@ class BaseRetrieveRenderedController extends Controller {
let renderedImageMultipartWriter = new renderedService.RenderedImageMultipartWriter(
this.request,
this.response,
this.imagePathFactory,
this.framesWriter
this.request.imagePathFactory,
this.request.framesWriter
);

let buffer = await renderedImageMultipartWriter.write();

this.logSuccessful();

if (buffer instanceof Buffer) {
return this.response.end(buffer, "binary");
}

return this.response.end();
} catch(e) {
let apiErrorArrayHandler = new ApiErrorArrayHandler(this.response, this.apiLogger, e);
let apiErrorArrayHandler = new ApiErrorArrayHandler(this.response, this.request.logger, e);
return apiErrorArrayHandler.doErrorResponse();
}
}
Expand Down
30 changes: 0 additions & 30 deletions api/dicom-web/controller/WADO-RS/rendered/series.js

This file was deleted.

30 changes: 0 additions & 30 deletions api/dicom-web/controller/WADO-RS/rendered/study.js

This file was deleted.

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

const { BaseRetrieveRenderedController } = require("./controller/WADO-RS/rendered/retrieveRendered.controller");
const { ApiLogger } = require("@root/utils/logs/api-logger");
const { StudyImagePathFactory, SeriesImagePathFactory, InstanceImagePathFactory } = require("./controller/WADO-RS/service/WADO-RS.service");
const { StudyFramesWriter, SeriesFramesWriter, InstanceFramesWriter, InstanceFramesListWriter } = require("./controller/WADO-RS/service/rendered.service");
const RetrieveRenderedController = async (req, res) => {
let controller = new BaseRetrieveRenderedController(req, res);
await controller.doPipeline();
};

//#region WADO-RS Retrieve Transaction Rendered Resources

Expand Down Expand Up @@ -60,7 +68,16 @@ const renderedQueryValidation = {
router.get(
"/studies/:studyUID/rendered",
validateParams(renderedQueryValidation, "query", { allowUnknown: false }),
require("./controller/WADO-RS/rendered/study")
(req, res, next) => {
req.logger = new ApiLogger(req, "WADO-RS");
req.logger.addTokenValue();
req.logger.logger.info();
req.logger.logger.info(`Get study's rendered images, study UID: ${req.params.studyUID}`);
req.imagePathFactory = StudyImagePathFactory;
req.framesWriter = StudyFramesWriter;
next();
},
RetrieveRenderedController
);

/**
Expand All @@ -84,7 +101,16 @@ router.get(
router.get(
"/studies/:studyUID/series/:seriesUID/rendered",
validateParams(renderedQueryValidation, "query", { allowUnknown: false }),
require("./controller/WADO-RS/rendered/series")
(req, res, next) => {
req.logger = new ApiLogger(req, "WADO-RS");
req.logger.addTokenValue();
req.logger.logger.info();
req.logger.logger.info(`Get study's series' rendered images, study UID: ${req.params.studyUID}, series UID: ${req.params.seriesUID}`);
req.imagePathFactory = SeriesImagePathFactory;
req.framesWriter = SeriesFramesWriter;
next();
},
RetrieveRenderedController
);

/**
Expand All @@ -109,7 +135,16 @@ router.get(
router.get(
"/studies/:studyUID/series/:seriesUID/instances/:instanceUID/rendered",
validateParams(renderedQueryValidation, "query", { allowUnknown: false }),
require("./controller/WADO-RS/rendered/instances")
(req, res, next) => {
req.logger = new ApiLogger(req, "WADO-RS");
req.logger.addTokenValue();
req.logger.logger.info(`Get study's series' instance rendered images, study UID: ${req.params.studyUID}, series UID: ${req.params.seriesUID}`+
`, instance UID: ${req.params.instanceUID}`);
req.imagePathFactory = InstanceImagePathFactory;
req.framesWriter = InstanceFramesWriter;
next();
},
RetrieveRenderedController
);

/**
Expand Down Expand Up @@ -138,7 +173,16 @@ router.get(
frameNumber : intArrayJoi.intArray().items(Joi.number().integer().min(1)).single()
} , "params" , {allowUnknown : true}),
validateParams(renderedQueryValidation, "query", { allowUnknown: false }),
require("./controller/WADO-RS/rendered/instanceFrames")
(req, res, next) => {
req.logger = new ApiLogger(req, "WADO-RS");
req.logger.addTokenValue();
req.logger.logger.info(`Get instance' rendered frames, study UID: ${req.params.studyUID}, series UID: ${req.params.seriesUID}`+
`, instance UID: ${req.params.instanceUID}, frame numbers: ${req.params.frameNumber}`);
req.imagePathFactory = InstanceImagePathFactory;
req.framesWriter = InstanceFramesListWriter;
next();
},
RetrieveRenderedController
);

//#endregion
Expand Down

0 comments on commit a8a2541

Please sign in to comment.