Skip to content

Commit

Permalink
refactor: duplicate codes in Thumbnail controller
Browse files Browse the repository at this point in the history
- Extract duplicate part to base thumbnail controller
  • Loading branch information
Chinlinlee committed Oct 29, 2023
1 parent 9882b4b commit 3d7db77
Show file tree
Hide file tree
Showing 5 changed files with 63 additions and 112 deletions.
38 changes: 38 additions & 0 deletions api/dicom-web/controller/WADO-RS/thumbnail/base.controller.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
const { Controller } = require("@root/api/controller.class");
const { StudyImagePathFactory } = require("../service/WADO-RS.service");
const { ThumbnailService } = require("../service/thumbnail.service");
const { ApiLogger } = require("@root/utils/logs/api-logger");

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);
return thumbnailService.getThumbnailAndResponse();
} catch (e) {
let errorStr = JSON.stringify(e, Object.getOwnPropertyNames(e));
this.apiLogger.logger.error(errorStr);

this.response.writeHead(500, {
"Content-Type": "application/dicom+json"
});
return this.response.end({
code: 500,
message: "An exception occurred"
});
}
}
}

module.exports.BaseThumbnailController = BaseThumbnailController;
38 changes: 7 additions & 31 deletions api/dicom-web/controller/WADO-RS/thumbnail/frame.js
Original file line number Diff line number Diff line change
@@ -1,42 +1,18 @@
const { Controller } = require("../../../../controller.class");
const { ApiLogger } = require("../../../../../utils/logs/api-logger");
const {
ThumbnailService,
InstanceThumbnailFactory
} = require("../service/thumbnail.service");
const { BaseThumbnailController } = require("./base.controller");



class RetrieveFrameThumbnailController extends Controller {
class RetrieveFrameThumbnailController extends BaseThumbnailController {
constructor(req, res) {
super(req, res);
this.factory = InstanceThumbnailFactory;
}

async mainProcess() {

let apiLogger = new ApiLogger(this.request, "WADO-RS");
apiLogger.addTokenValue();

apiLogger.logger.info(`Get Study's Series' Instance Thumbnail [study UID: ${this.request.params.studyUID},\
series UID: ${this.request.params.seriesUID}]\
instance UID: ${this.request.params.instanceUID}\
frames: ${JSON.stringify(this.request.params.frameNumber)}`);

try {
let thumbnailService = new ThumbnailService(this.request, this.response, apiLogger, InstanceThumbnailFactory);
return thumbnailService.getThumbnailAndResponse();
} catch (e) {
let errorStr = JSON.stringify(e, Object.getOwnPropertyNames(e));
apiLogger.logger.error(errorStr);

this.response.writeHead(500, {
"Content-Type": "application/dicom+json"
});
return this.response.end({
code: 500,
message: "An exception occurred"
});
}
logAction() {
this.apiLogger.logger.info(`Get Study's Series' Instance Thumbnail [series UID: ${this.request.params.seriesUID}]\
instance UID: ${this.request.params.instanceUID}\
frames: ${JSON.stringify(this.request.params.frameNumber)}`);
}
}

Expand Down
35 changes: 7 additions & 28 deletions api/dicom-web/controller/WADO-RS/thumbnail/instance.js
Original file line number Diff line number Diff line change
@@ -1,41 +1,20 @@
const { Controller } = require("../../../../controller.class");
const { ApiLogger } = require("../../../../../utils/logs/api-logger");
const {
ThumbnailService,
InstanceThumbnailFactory
} = require("../service/thumbnail.service");
const { BaseThumbnailController } = require("./base.controller");



class RetrieveInstanceThumbnailController extends Controller {
class RetrieveInstanceThumbnailController extends BaseThumbnailController {
constructor(req, res) {
super(req, res);
this.factory = InstanceThumbnailFactory;
}

async mainProcess() {

let apiLogger = new ApiLogger(this.request, "WADO-RS");
apiLogger.addTokenValue();

apiLogger.logger.info(`Get Study's Series' Instance Thumbnail [study UID: ${this.request.params.studyUID},\
series UID: ${this.request.params.seriesUID}]\
instance UID: ${this.request.params.instanceUID}`);

try {
let thumbnailService = new ThumbnailService(this.request, this.response, apiLogger, InstanceThumbnailFactory);
return thumbnailService.getThumbnailAndResponse();
} catch (e) {
let errorStr = JSON.stringify(e, Object.getOwnPropertyNames(e));
apiLogger.logger.error(errorStr);

this.response.writeHead(500, {
"Content-Type": "application/dicom+json"
});
return this.response.end({
code: 500,
message: "An exception occurred"
});
}
logAction() {
this.apiLogger.logger.info(`Get Study's Series' Instance Thumbnail [study UID: ${this.request.params.studyUID},\
series UID: ${this.request.params.seriesUID}]\
instance UID: ${this.request.params.instanceUID}`);
}
}

Expand Down
30 changes: 6 additions & 24 deletions api/dicom-web/controller/WADO-RS/thumbnail/series.js
Original file line number Diff line number Diff line change
Expand Up @@ -4,37 +4,19 @@ const {
ThumbnailService,
SeriesThumbnailFactory
} = require("../service/thumbnail.service");
const { BaseThumbnailController } = require("./base.controller");



class RetrieveSeriesThumbnailController extends Controller {
class RetrieveSeriesThumbnailController extends BaseThumbnailController {
constructor(req, res) {
super(req, res);
this.factory = SeriesThumbnailFactory;
}

async mainProcess() {

let apiLogger = new ApiLogger(this.request, "WADO-RS");
apiLogger.addTokenValue();

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

try {
let thumbnailService = new ThumbnailService(this.request, this.response, apiLogger, SeriesThumbnailFactory);
return thumbnailService.getThumbnailAndResponse();
} catch (e) {
let errorStr = JSON.stringify(e, Object.getOwnPropertyNames(e));
apiLogger.logger.error(errorStr);

this.response.writeHead(500, {
"Content-Type": "application/dicom+json"
});
return this.response.end({
code: 500,
message: "An exception occurred"
});
}
logAction() {
this.apiLogger.logger.info(`Get Study's Series' Thumbnail [study UID: ${this.request.params.studyUID},\
series UID: ${this.request.params.seriesUID}]`);
}
}

Expand Down
34 changes: 5 additions & 29 deletions api/dicom-web/controller/WADO-RS/thumbnail/study.js
Original file line number Diff line number Diff line change
@@ -1,39 +1,15 @@
const { Controller } = require("../../../../controller.class");
const { ApiLogger } = require("../../../../../utils/logs/api-logger");
const {
ThumbnailService,
StudyThumbnailFactory
} = require("../service/thumbnail.service");
const {
BaseThumbnailController
} = require("./base.controller");



class RetrieveStudyThumbnailController extends Controller {
class RetrieveStudyThumbnailController extends BaseThumbnailController {
constructor(req, res) {
super(req, res);
}

async mainProcess() {

let apiLogger = new ApiLogger(this.request, "WADO-RS");
apiLogger.addTokenValue();

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

try {
let thumbnailService = new ThumbnailService(this.request, this.response, apiLogger, StudyThumbnailFactory);
return thumbnailService.getThumbnailAndResponse();
} catch (e) {
let errorStr = JSON.stringify(e, Object.getOwnPropertyNames(e));
apiLogger.logger.error(errorStr);

this.response.writeHead(500, {
"Content-Type": "application/dicom+json"
});
return this.response.end({
code: 500,
message: "An exception occurred"
});
}
this.factory = StudyThumbnailFactory;
}
}

Expand Down

0 comments on commit 3d7db77

Please sign in to comment.