feat(MED-131): move jobs to /api/job/* secured with key

This commit is contained in:
2025-08-04 11:51:11 +03:00
parent 5746e1b087
commit 43493c261c
12 changed files with 204 additions and 93 deletions

View File

@@ -10,7 +10,6 @@ import {
getClientInstitution,
getClientPerson,
getConfidentiality,
getOrderEnteredByPerson,
getPais,
getPatient,
getProviderInstitution,
@@ -149,6 +148,7 @@ export async function getPrivateMessage(messageId: string) {
const parsed = parser.parse(data);
if (parsed.ANSWER?.CODE && parsed.ANSWER?.CODE !== 0) {
console.error("Bad response", data);
throw new Error(`Failed to get private message (id: ${messageId})`);
}
@@ -378,10 +378,13 @@ export async function syncPublicMessage(
}
}
// TODO use actual parameters
export async function composeOrderXML(
/* chosenAnalysisElements?: number[],
chosenAnalyses?: number[], */
person: {
idCode: string,
firstName: string,
lastName: string,
phone: string,
},
comment?: string,
) {
const supabase = createCustomClient(
@@ -512,11 +515,9 @@ export async function composeOrderXML(
<!--<TeostajaAsutus>-->
${getProviderInstitution()}
<!--<TellijaIsik>-->
${getClientPerson()}
<!--<SisestajaIsik>-->
${getOrderEnteredByPerson()}
${getClientPerson(person)}
<TellijaMarkused>${comment ?? ''}</TellijaMarkused>
${getPatient(49610230861, 'Surname', 'First Name', '1996-10-23', 'N')}
${getPatient(person)}
${getConfidentiality()}
${specimenSection.join('')}
${analysisSection?.join('')}

View File

@@ -1,6 +1,7 @@
import { DATE_TIME_FORMAT } from '@/lib/constants';
import { Tables } from '@/packages/supabase/src/database.types';
import { format } from 'date-fns';
import Isikukood from 'isikukood';
import { Tables } from '@/packages/supabase/src/database.types';
import { DATE_FORMAT, DATE_TIME_FORMAT } from '@/lib/constants';
const isProd = process.env.NODE_ENV === 'production';
@@ -48,47 +49,60 @@ export const getProviderInstitution = () => {
</Asutus>`;
};
export const getClientPerson = () => {
export const getClientPerson = ({
idCode,
firstName,
lastName,
phone,
}: {
idCode: string,
firstName: string,
lastName: string,
phone: string,
}) => {
if (isProd) {
// return correct data
}
return `<Personal tyyp="TELLIJA" jarjenumber="1">
<PersonalOID>1.3.6.1.4.1.28284.6.2.4.9</PersonalOID>
<PersonalKood>D07907</PersonalKood>
<PersonalPerekonnaNimi>Eduard</PersonalPerekonnaNimi>
<PersonalEesNimi>Tsvetkov</PersonalEesNimi>
<Telefon>+37258131202</Telefon>
<PersonalKood>${idCode}</PersonalKood>
<PersonalPerekonnaNimi>${lastName}</PersonalPerekonnaNimi>
<PersonalEesNimi>${firstName}</PersonalEesNimi>
<Telefon>${phone}</Telefon>
</Personal>`;
};
export const getOrderEnteredPerson = () => {
if (isProd) {
// return correct data
}
return `<Personal tyyp="SISESTAJA" jarjenumber="1">
<PersonalOID>1.3.6.1.4.1.28284.6.2.4.9</PersonalOID>
<PersonalKood>D07907</PersonalKood>
<PersonalPerekonnaNimi>Eduard</PersonalPerekonnaNimi>
<PersonalEesNimi>Tsvetkov</PersonalEesNimi>
<Telefon>+37258131202</Telefon>
</Personal>`;
};
// export const getOrderEnteredPerson = () => {
// if (isProd) {
// // return correct data
// }
// return `<Personal tyyp="SISESTAJA" jarjenumber="1">
// <PersonalOID>1.3.6.1.4.1.28284.6.2.4.9</PersonalOID>
// <PersonalKood>D07907</PersonalKood>
// <PersonalPerekonnaNimi>Eduard</PersonalPerekonnaNimi>
// <PersonalEesNimi>Tsvetkov</PersonalEesNimi>
// <Telefon>+37258131202</Telefon>
// </Personal>`;
// };
export const getPatient = (
idCode: number,
surname: string,
export const getPatient = ({
idCode,
lastName,
firstName,
}: {
idCode: string,
lastName: string,
firstName: string,
birthDate: string,
genderLetter: string,
) => {
}) => {
const isikukood = new Isikukood(idCode);
return `<Patsient>
<IsikukoodiOID>1.3.6.1.4.1.28284.6.2.2.1</IsikukoodiOID>
<Isikukood>${idCode}</Isikukood>
<PerekonnaNimi>${surname}</PerekonnaNimi>
<PerekonnaNimi>${lastName}</PerekonnaNimi>
<EesNimi>${firstName}</EesNimi>
<SynniAeg>${birthDate}</SynniAeg>
<SynniAeg>${format(isikukood.getBirthday(), DATE_FORMAT)}</SynniAeg>
<SuguOID>1.3.6.1.4.1.28284.6.2.3.16.2</SuguOID>
<Sugu>${genderLetter}</Sugu>
<Sugu>${isikukood.getGender()}</Sugu>
</Patsient>`;
};
@@ -106,19 +120,19 @@ export const getConfidentiality = () => {
</Konfidentsiaalsus>`;
};
export const getOrderEnteredByPerson = () => {
if (isProd) {
// return correct data
}
return `
<Personal tyyp="SISESTAJA" jarjenumber="1">
<PersonalOID>1.3.6.1.4.1.28284.6.2.4.9</PersonalOID>
<PersonalKood>D07907</PersonalKood>
<PersonalPerekonnaNimi>Eduard</PersonalPerekonnaNimi>
<PersonalEesNimi>Tsvetkov</PersonalEesNimi>
<Telefon>+37258131202</Telefon>
</Personal>`;
};
// export const getOrderEnteredByPerson = () => {
// if (isProd) {
// // return correct data
// }
// return `
// <Personal tyyp="SISESTAJA" jarjenumber="1">
// <PersonalOID>1.3.6.1.4.1.28284.6.2.4.9</PersonalOID>
// <PersonalKood>D07907</PersonalKood>
// <PersonalPerekonnaNimi>Eduard</PersonalPerekonnaNimi>
// <PersonalEesNimi>Tsvetkov</PersonalEesNimi>
// <Telefon>+37258131202</Telefon>
// </Personal>`;
// };
export const getSpecimen = (
materialTypeOid: string,