in src/router/routes/exportRouteHelper.ts [9:49]
static buildInitiateExportRequest(
req: express.Request,
res: express.Response,
exportType: ExportType,
allowedResourceTypes: string[],
fhirVersion?: FhirVersion,
) {
if (req.query._outputFormat && req.query._outputFormat !== 'ndjson') {
throw new createHttpError.BadRequest('We only support exporting resources into ndjson formatted file');
}
if (req.headers.prefer && req.headers.prefer !== 'respond-async') {
throw new createHttpError.BadRequest('We only support asyncronous export job request');
}
if (
(req.query._since && !isString(req.query._since)) ||
(req.query._since && isString(req.query._since) && !dateTimeWithTimeZoneRegExp.test(req.query._since))
) {
throw new createHttpError.BadRequest(
"Query '_since' should be in the FHIR Instant format: YYYY-MM-DDThh:mm:ss.sss+zz:zz (e.g. 2015-02-07T13:28:17.239+02:00 or 2017-01-01T00:00:00Z)",
);
}
const { userIdentity } = res.locals;
const initiateExportRequest: InitiateExportRequest = {
requesterUserId: userIdentity.sub,
exportType,
transactionTime: new Date().toISOString(),
outputFormat: isString(req.query._outputFormat) ? req.query._outputFormat : undefined,
since:
isString(req.query._since) && dateTimeWithTimeZoneRegExp.test(req.query._since)
? new Date(req.query._since).toISOString()
: undefined,
type: isString(req.query._type) ? req.query._type : undefined,
groupId: isString(req.params.id) ? req.params.id : undefined,
tenantId: res.locals.tenantId,
serverUrl: res.locals.serverUrl,
fhirVersion,
allowedResourceTypes,
};
return initiateExportRequest;
}