Skip to content

Commit

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

This file was deleted.

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

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -7,23 +7,15 @@ const { ApiErrorArrayHandler } = require("@error/api-errors.handler");
class BaseThumbnailController extends Controller {
constructor(req, res) {
super(req, res);
this.factory = StudyImagePathFactory;
this.apiLogger = new ApiLogger(this.request, "WADO-RS");
this.apiLogger.addTokenValue();
}

logAction() {
this.apiLogger.logger.info(`Get Study's Thumbnail [study UID: ${this.request.params.studyUID}]`);
}

async mainProcess() {
try {
this.logAction();
let thumbnailService = new ThumbnailService(this.request, this.response, this.apiLogger, this.factory);
let thumbnailService = new ThumbnailService(this.request, this.response, this.request.logger, this.request.factory);
let thumbnail = await thumbnailService.getThumbnail();
return this.response.end(thumbnail, "binary");
} 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
32 changes: 0 additions & 32 deletions api/dicom-web/controller/WADO-RS/thumbnail/series.js

This file was deleted.

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

This file was deleted.

48 changes: 43 additions & 5 deletions api/dicom-web/wado-rs-thumbnail.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 { BaseThumbnailController } = require("./controller/WADO-RS/thumbnail/retrieveThumbnail.controller");
const { ApiLogger } = require("@root/utils/logs/api-logger");
const { StudyThumbnailFactory, SeriesThumbnailFactory, InstanceThumbnailFactory } = require("./controller/WADO-RS/service/thumbnail.service");

const RetrieveThumbnailController = async function (req, res) {
let controller = new BaseThumbnailController(req, res);
await controller.doPipeline();
};

//#region WADO-RS Retrieve Transaction Thumbnail Resources

Expand All @@ -27,7 +35,14 @@ const router = express();
*/
router.get(
"/studies/:studyUID/thumbnail",
require("./controller/WADO-RS/thumbnail/study")
(req, res, next) => {
req.factory = StudyThumbnailFactory;
req.logger = new ApiLogger(req, "WADO-RS");
req.logger.addTokenValue();
req.logger.logger.info(`Get Study's Thumbnail [study UID: ${req.params.studyUID}]`);
next();
},
RetrieveThumbnailController
);

/**
Expand All @@ -52,7 +67,14 @@ router.get(
*/
router.get(
"/studies/:studyUID/series/:seriesUID/thumbnail",
require("./controller/WADO-RS/thumbnail/series")
(req, res, next) => {
req.factory = SeriesThumbnailFactory;
req.logger = new ApiLogger(req, "WADO-RS");
req.logger.addTokenValue();
req.logger.logger.info(`Get Study's Series' Thumbnail [study UID: ${req.params.studyUID}, series UID: ${req.params.seriesUID}]`);
next();
},
RetrieveThumbnailController
);

/**
Expand All @@ -78,7 +100,15 @@ router.get(
*/
router.get(
"/studies/:studyUID/series/:seriesUID/instances/:instanceUID/thumbnail",
require("./controller/WADO-RS/thumbnail/instance")
(req, res, next) => {
req.factory = InstanceThumbnailFactory;
req.logger = new ApiLogger(req, "WADO-RS");
req.logger.addTokenValue();
req.logger.logger.info(`Get Study's Series' Instance's Thumbnail [study UID: ${req.params.studyUID},`+
` series UID: ${req.params.seriesUID}, instance UID: ${req.params.instanceUID}]`);
next();
},
RetrieveThumbnailController
);

/**
Expand Down Expand Up @@ -107,8 +137,16 @@ router.get(
"/studies/:studyUID/series/:seriesUID/instances/:instanceUID/frames/:frameNumber/thumbnail",
validateParams({
frameNumber : intArrayJoi.intArray().items(Joi.number().integer().min(1)).single()
} , "params" , {allowUnknown : true}),
require("./controller/WADO-RS/thumbnail/frame")
} , "params" , {allowUnknown : true}),
(req, res, next) => {
req.factory = InstanceThumbnailFactory;
req.logger = new ApiLogger(req, "WADO-RS");
req.logger.addTokenValue();
req.logger.logger.info(`Get Study's Instance's Frame's Thumbnail [study UID: ${req.params.studyUID},`+
` series UID: ${req.params.seriesUID}, instance UID: ${req.params.instanceUID}, frame number: ${req.params.frameNumber}]`);
next();
},
RetrieveThumbnailController
);


Expand Down

0 comments on commit f01dc82

Please sign in to comment.