in src/router/routes/exportRoute.ts [57:129]
init() {
// Start export job
this.router.get(
'/\\$export',
RouteHelper.wrapAsync(async (req: express.Request, res: express.Response) => {
const exportType: ExportType = 'system';
await this.initiateExportRequests(req, res, exportType);
}),
);
this.router.get(
'/Group/:id/\\$export',
RouteHelper.wrapAsync(async (req: express.Request, res: express.Response) => {
const exportType: ExportType = 'group';
await this.initiateExportRequests(req, res, exportType);
}),
);
this.router.get('/Patient/\\$export', () => {
throw new createHttpError.BadRequest('We currently do not support Patient export');
});
// Export Job Status
this.router.get(
'/\\$export/:jobId',
RouteHelper.wrapAsync(async (req: express.Request, res: express.Response) => {
const { userIdentity, requestContext, tenantId } = res.locals;
const { jobId } = req.params;
const response = await this.exportHandler.getExportJobStatus(
jobId,
userIdentity,
requestContext,
tenantId,
);
if (response.jobStatus === 'in-progress') {
res.status(202).header('x-progress', 'in-progress').send();
} else if (response.jobStatus === 'failed') {
throw new createHttpError.InternalServerError(response.errorMessage);
} else if (response.jobStatus === 'completed') {
const { outputFormat, since, type, groupId } = response;
const queryParams = { outputFormat, since, type };
const jsonResponse = {
transactionTime: response.transactionTime,
request: ExportRouteHelper.getExportUrl(
res.locals.serverUrl,
response.exportType,
queryParams,
groupId,
),
requiresAccessToken: response.requiresAccessToken,
output: response.exportedFileUrls,
error: response.errorArray,
};
res.status(200).send(jsonResponse);
} else if (response.jobStatus === 'canceled') {
res.send('Export job has been canceled');
} else if (response.jobStatus === 'canceling') {
res.send('Export job is being canceled');
}
}),
);
// Cancel export job
this.router.delete(
'/\\$export/:jobId',
RouteHelper.wrapAsync(async (req: express.Request, res: express.Response) => {
const { jobId } = req.params;
const { userIdentity, requestContext, tenantId } = res.locals;
await this.exportHandler.cancelExport(jobId, userIdentity, requestContext, tenantId);
res.status(202).send();
}),
);
}