B2B-85: add order xml generation (#8)
* B2B-85: add order xml generation * some fixes after merge --------- Co-authored-by: Helena <helena@Helenas-MacBook-Pro.local>
This commit is contained in:
172
lib/templates/medipost-order.ts
Normal file
172
lib/templates/medipost-order.ts
Normal file
@@ -0,0 +1,172 @@
|
||||
import { DATE_TIME_FORMAT } from '@/lib/constants';
|
||||
import { Tables } from '@/supabase/database.types';
|
||||
import { format } from 'date-fns';
|
||||
|
||||
const isProd = process.env.NODE_ENV === 'production';
|
||||
|
||||
export const getPais = (
|
||||
sender: string,
|
||||
recipient: string,
|
||||
createdAt: Date,
|
||||
messageId: number,
|
||||
) => {
|
||||
if (isProd) {
|
||||
// return correct data
|
||||
}
|
||||
return `<Pais>
|
||||
<Pakett versioon="20">OL</Pakett>
|
||||
<Saatja>${sender}</Saatja>
|
||||
<Saaja>${recipient}</Saaja>
|
||||
<Aeg>${format(createdAt, DATE_TIME_FORMAT)}</Aeg>
|
||||
<SaadetisId>${messageId}</SaadetisId>
|
||||
<Email>argo@medreport.ee</Email>
|
||||
</Pais>`;
|
||||
};
|
||||
|
||||
export const getClientInstitution = () => {
|
||||
if (isProd) {
|
||||
// return correct data
|
||||
}
|
||||
return `<Asutus tyyp="TELLIJA">
|
||||
<AsutuseId>16381793</AsutuseId>
|
||||
<AsutuseNimi>MedReport OÜ</AsutuseNimi>
|
||||
<AsutuseKood>TSU</AsutuseKood>
|
||||
<Telefon>+37258871517</Telefon>
|
||||
</Asutus>`;
|
||||
};
|
||||
|
||||
export const getProviderInstitution = () => {
|
||||
if (isProd) {
|
||||
// return correct data
|
||||
}
|
||||
return `<Asutus tyyp="TEOSTAJA">
|
||||
<AsutuseId>11107913</AsutuseId>
|
||||
<AsutuseNimi>Synlab HTI Tallinn</AsutuseNimi>
|
||||
<AsutuseKood>SLA</AsutuseKood>
|
||||
<AllyksuseNimi>Synlab HTI Tallinn</AllyksuseNimi>
|
||||
<Telefon>+3723417123</Telefon>
|
||||
</Asutus>`;
|
||||
};
|
||||
|
||||
export const getClientPerson = () => {
|
||||
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>
|
||||
</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,
|
||||
firstName: string,
|
||||
birthDate: string,
|
||||
genderLetter: string,
|
||||
) => {
|
||||
return `<Patsient>
|
||||
<IsikukoodiOID>1.3.6.1.4.1.28284.6.2.2.1</IsikukoodiOID>
|
||||
<Isikukood>${idCode}</Isikukood>
|
||||
<PerekonnaNimi>${surname}</PerekonnaNimi>
|
||||
<EesNimi>${firstName}</EesNimi>
|
||||
<SynniAeg>${birthDate}</SynniAeg>
|
||||
<SuguOID>1.3.6.1.4.1.28284.6.2.3.16.2</SuguOID>
|
||||
<Sugu>${genderLetter}</Sugu>
|
||||
</Patsient>`;
|
||||
};
|
||||
|
||||
export const getConfidentiality = () => {
|
||||
if (isProd) {
|
||||
// return correct data
|
||||
}
|
||||
return `<Konfidentsiaalsus>
|
||||
<PatsiendileOID>2.16.840.1.113883.5.25</PatsiendileOID>
|
||||
<Patsiendile>N</Patsiendile>
|
||||
<ArstileOID>1.3.6.1.4.1.28284.6.2.2.39.1</ArstileOID>
|
||||
<Arstile>N</Arstile>
|
||||
<EsindajaleOID>1.3.6.1.4.1.28284.6.2.2.37.1</EsindajaleOID>
|
||||
<Esindajale>N</Esindajale>
|
||||
</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 getSpecimen = (
|
||||
materialTypeOid: string,
|
||||
materialGroupId: string,
|
||||
materialName: string,
|
||||
order: number,
|
||||
sampleContainerOid?: string,
|
||||
sampleContainerId?: string,
|
||||
) =>
|
||||
`
|
||||
<Proov>
|
||||
${sampleContainerOid ? `<ProovinouIdOID>${sampleContainerOid}</ProovinouIdOID>` : null}
|
||||
${sampleContainerId ? `<ProovinouId>${sampleContainerId}</ProovinouId>` : null}
|
||||
<MaterjaliTyypOID>${materialTypeOid}</MaterjaliTyypOID>
|
||||
<MaterjaliTyyp>${materialGroupId}</MaterjaliTyyp>
|
||||
<MaterjaliNimi>${materialName}</MaterjaliNimi>
|
||||
<Jarjenumber>${order}</Jarjenumber>
|
||||
</Proov>`;
|
||||
|
||||
export const getAnalysisElement = (
|
||||
analysisIdOid: string,
|
||||
analysisIdOriginal: string,
|
||||
tehikShortLoinc: string,
|
||||
tehikLoincName: string,
|
||||
analysisElementId: number,
|
||||
analysisNameLab?: string | null,
|
||||
) => {
|
||||
return `<UuringuElement>
|
||||
<UuringIdOID>${analysisIdOid}</UuringIdOID>
|
||||
<UuringId>${analysisIdOriginal}</UuringId>
|
||||
<TLyhend>${tehikShortLoinc}</TLyhend>
|
||||
<KNimetus>${tehikLoincName}</KNimetus>
|
||||
<UuringNimi>${analysisNameLab ?? tehikLoincName}</UuringNimi>
|
||||
<TellijaUuringId>${analysisElementId}</TellijaUuringId>
|
||||
</UuringuElement>`;
|
||||
};
|
||||
|
||||
export const getAnalysisGroup = (
|
||||
analysisGroupOriginalId: string,
|
||||
analysisGroupName: string,
|
||||
specimenOrderNr: number,
|
||||
analysisElement: Tables<'analysis_elements'>,
|
||||
) =>
|
||||
`<UuringuGrupp>
|
||||
<UuringuGruppId>${analysisGroupOriginalId}</UuringuGruppId>
|
||||
<UuringuGruppNimi>${analysisGroupName}</UuringuGruppNimi>
|
||||
<Uuring>
|
||||
${getAnalysisElement(analysisElement.analysis_id_oid, analysisElement.analysis_id_original, analysisElement.tehik_short_loinc, analysisElement.tehik_loinc_name, analysisElement.id, analysisElement.analysis_name_lab)}
|
||||
<ProoviJarjenumber>${specimenOrderNr}</ProoviJarjenumber>
|
||||
</Uuring>
|
||||
</UuringuGrupp>`;
|
||||
Reference in New Issue
Block a user