Skip to content

Commit

Permalink
refactor: centralize retrieve bulkdata controller
Browse files Browse the repository at this point in the history
- Using inherit class may be redundant
- Set `imagePathFactory`, `bulkDataFactoryType`, `logger` in request object and use them in after process
  • Loading branch information
Chinlinlee committed Jan 13, 2024
1 parent 73004a7 commit 9e4703a
Show file tree
Hide file tree
Showing 6 changed files with 54 additions and 21 deletions.
2 changes: 1 addition & 1 deletion api/dicom-web/controller/WADO-RS/bulkdata/bulkdata.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
const { SpecificBulkDataFactory } = require("@api/dicom-web/controller/WADO-RS/bulkdata/service/bulkdata");
const { BaseBulkDataController } = require("./base.controller");
const { BaseBulkDataController } = require("./retrieveBulkData.controller");

class BulkDataController extends BaseBulkDataController {
constructor(req, res) {
Expand Down
2 changes: 1 addition & 1 deletion api/dicom-web/controller/WADO-RS/bulkdata/instance.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
const { InstanceBulkDataFactory } = require("@api/dicom-web/controller/WADO-RS/bulkdata/service/bulkdata");
const { BaseBulkDataController } = require("./base.controller");
const { BaseBulkDataController } = require("./retrieveBulkData.controller");
const { InstanceImagePathFactory } = require("@api/dicom-web/controller/WADO-RS/service/WADO-RS.service");

class InstanceBulkDataController extends BaseBulkDataController {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,20 +7,10 @@ const { ApiErrorArrayHandler } = require("@error/api-errors.handler");
class BaseBulkDataController extends Controller {
constructor(req, res) {
super(req, res);
this.apiLogger = new ApiLogger(this.request, "WADO-RS");
this.apiLogger.addTokenValue();
this.bulkDataFactoryType = StudyBulkDataFactory;
this.imagePathFactoryType = StudyImagePathFactory;
this.bulkDataService = new BulkDataService(this.request, this.response, this.bulkDataFactoryType);
}

logAction() {
throw new Error("Abstract Method not implemented.");
this.bulkDataService = new BulkDataService(this.request, this.response, this.request.bulkDataFactoryType);
}

async mainProcess() {
this.logAction();

try {

let bulkData = await this.bulkDataService.getBulkData();
Expand All @@ -33,7 +23,7 @@ class BaseBulkDataController extends Controller {
this.bulkDataService.multipartWriter.writeFinalBoundary();
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 All @@ -43,7 +33,7 @@ class BaseBulkDataController extends Controller {
await this.bulkDataService.writeBulkData(bulkData);
}

let imagePathFactory = new this.imagePathFactoryType({
let imagePathFactory = new this.request.imagePathFactoryType({
...this.request.params
});
await imagePathFactory.getImagePaths();
Expand Down
2 changes: 1 addition & 1 deletion api/dicom-web/controller/WADO-RS/bulkdata/series.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
const { SeriesBulkDataFactory } = require("@api/dicom-web/controller/WADO-RS/bulkdata/service/bulkdata");
const { BaseBulkDataController } = require("./base.controller");
const { BaseBulkDataController } = require("./retrieveBulkData.controller");
const { SeriesImagePathFactory } = require("@api/dicom-web/controller/WADO-RS/service/WADO-RS.service");

class SeriesBulkDataController extends BaseBulkDataController {
Expand Down
2 changes: 1 addition & 1 deletion api/dicom-web/controller/WADO-RS/bulkdata/study.js
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
const { StudyBulkDataFactory } = require("@api/dicom-web/controller/WADO-RS/bulkdata/service/bulkdata");
const { BaseBulkDataController } = require("./base.controller");
const { BaseBulkDataController } = require("./retrieveBulkData.controller");
const { StudyImagePathFactory } = require("@api/dicom-web/controller/WADO-RS/service/WADO-RS.service");

class StudyBulkDataController extends BaseBulkDataController {
Expand Down
51 changes: 47 additions & 4 deletions api/dicom-web/wado-rs-bulkdata.route.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,16 @@ const Joi = require("joi");
const { validateParams, intArrayJoi } = require("../validator");
const router = express();

const { BaseBulkDataController } = require("./controller/WADO-RS/bulkdata/retrieveBulkData.controller");
const { ApiLogger } = require("@root/utils/logs/api-logger");
const { StudyBulkDataFactory, SeriesBulkDataFactory, InstanceBulkDataFactory, SpecificBulkDataFactory } = require("./controller/WADO-RS/bulkdata/service/bulkdata");
const { StudyImagePathFactory, SeriesImagePathFactory, InstanceImagePathFactory } = require("./controller/WADO-RS/service/WADO-RS.service");

const BulkDataController = async (req, res) => {
let bulkDataController = new BaseBulkDataController(req, res);
await bulkDataController.doPipeline();
};

/**
* @openapi
* /dicom-web/studies/{studyUID}/bulkdata:
Expand All @@ -19,7 +29,15 @@ const router = express();
*/
router.get(
"/studies/:studyUID/bulkdata",
require("./controller/WADO-RS/bulkdata/study")
(req, res, next) => {
req.logger = new ApiLogger(req, "WADO-RS");
req.logger.addTokenValue();
req.logger.logger.info(`Get bulk data from study: ${req.params.studyUID}`);
req.bulkDataFactoryType = StudyBulkDataFactory;
req.imagePathFactoryType = StudyImagePathFactory;
next();
},
BulkDataController
);

/**
Expand All @@ -39,7 +57,15 @@ router.get(
*/
router.get(
"/studies/:studyUID/series/:seriesUID/bulkdata",
require("./controller/WADO-RS/bulkdata/series")
(req, res, next) => {
req.logger = new ApiLogger(req, "WADO-RS");
req.logger.addTokenValue();
req.logger.logger.info(`Get series' bulk data from study: ${req.params.studyUID}, series: ${req.params.seriesUID}`);
req.bulkDataFactoryType = SeriesBulkDataFactory;
req.imagePathFactoryType = SeriesImagePathFactory;
next();
},
BulkDataController
);

/**
Expand All @@ -60,7 +86,15 @@ router.get(
*/
router.get(
"/studies/:studyUID/series/:seriesUID/instances/:instanceUID/bulkdata",
require("./controller/WADO-RS/bulkdata/instance")
(req, res, next) => {
req.logger = new ApiLogger(req, "WADO-RS");
req.logger.addTokenValue();
req.logger.logger.info(`Get instance's bulk data from study: ${req.params.studyUID}, series: ${req.params.seriesUID}, instance: ${req.params.instanceUID}`);
req.bulkDataFactoryType = InstanceBulkDataFactory;
req.imagePathFactoryType = InstanceImagePathFactory;
next();
},
BulkDataController
);

/**
Expand All @@ -82,7 +116,16 @@ router.get(
*/
router.get(
"/studies/:studyUID/series/:seriesUID/instances/:instanceUID/bulkdata/:binaryValuePath",
require("./controller/WADO-RS/bulkdata/bulkdata")
(req, res, next) => {
req.logger = new ApiLogger(req, "WADO-RS");
req.logger.addTokenValue();
req.logger.logger.info(`Get bulk data from study: ${req.params.studyUID}, series: ${req.params.seriesUID}, instance: ${req.params.instanceUID}`+
`, binaryValuePath: ${req.params.binaryValuePath}`);
req.bulkDataFactoryType = SpecificBulkDataFactory;
req.imagePathFactoryType = StudyImagePathFactory;
next();
},
BulkDataController
);

module.exports = router;

0 comments on commit 9e4703a

Please sign in to comment.