feat(MED-161): use shared types
This commit is contained in:
@@ -1,12 +1,14 @@
|
|||||||
'use server';
|
'use server';
|
||||||
|
|
||||||
import {
|
import {
|
||||||
AnalysisOrderStatus,
|
|
||||||
GetMessageListResponse,
|
GetMessageListResponse,
|
||||||
MedipostAction,
|
MedipostAction,
|
||||||
MedipostOrderResponse,
|
|
||||||
ResponseUuringuGrupp,
|
|
||||||
} from '@/lib/types/medipost';
|
} from '@/lib/types/medipost';
|
||||||
|
import { AnalysisOrderStatus } from '@/packages/shared/src/types/medipost-analysis';
|
||||||
|
import type {
|
||||||
|
ResponseUuringuGrupp,
|
||||||
|
MedipostOrderResponse
|
||||||
|
} from '@/packages/shared/src/types/medipost-analysis';
|
||||||
import { toArray } from '@/lib/utils';
|
import { toArray } from '@/lib/utils';
|
||||||
import axios from 'axios';
|
import axios from 'axios';
|
||||||
|
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
'use server';
|
'use server';
|
||||||
|
|
||||||
import {
|
import type {
|
||||||
IMedipostResponseXMLBase,
|
IMedipostResponseXMLBase,
|
||||||
} from '@/lib/types/medipost';
|
} from '@/packages/shared/src/types/medipost-analysis';
|
||||||
|
|
||||||
import { MedipostValidationError } from './MedipostValidationError';
|
import { MedipostValidationError } from './MedipostValidationError';
|
||||||
import { parseXML } from '../util/xml.service';
|
import { parseXML } from '../util/xml.service';
|
||||||
|
|||||||
@@ -1,11 +1,4 @@
|
|||||||
export interface IMedipostResponseXMLBase {
|
import type { IMedipostResponseXMLBase } from "@/packages/shared/src/types/medipost-analysis";
|
||||||
'?xml': {
|
|
||||||
'@_version': string;
|
|
||||||
'@_encoding': string;
|
|
||||||
'@_standalone': 'yes' | 'no';
|
|
||||||
};
|
|
||||||
ANSWER?: { CODE: number };
|
|
||||||
}
|
|
||||||
|
|
||||||
export type Message = {
|
export type Message = {
|
||||||
messageId: string;
|
messageId: string;
|
||||||
@@ -143,125 +136,3 @@ export type MedipostPublicMessageResponse = IMedipostResponseXMLBase & {
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
export type UuringuVastus = {
|
|
||||||
VastuseVaartus: string; // numeric or text like 'Negatiivne'
|
|
||||||
VastuseAeg: string;
|
|
||||||
NormYlem?: {
|
|
||||||
'#text': number;
|
|
||||||
'@_kaasaarvatud': string;
|
|
||||||
}; // 0..1
|
|
||||||
NormAlum?: {
|
|
||||||
'#text': number;
|
|
||||||
'@_kaasaarvatud': string;
|
|
||||||
};
|
|
||||||
NormiStaatus: keyof typeof NormStatus;
|
|
||||||
ProoviJarjenumber: number;
|
|
||||||
};
|
|
||||||
|
|
||||||
export type ResponseUuring = {
|
|
||||||
UuringuElement: {
|
|
||||||
UuringIdOID: string;
|
|
||||||
UuringId: string;
|
|
||||||
TLyhend: string;
|
|
||||||
KNimetus: string;
|
|
||||||
UuringNimi: string;
|
|
||||||
TellijaUuringId: number;
|
|
||||||
TeostajaUuringId: string;
|
|
||||||
UuringOlek: keyof typeof AnalysisOrderStatus;
|
|
||||||
Mootyhik?: string; // 0..1
|
|
||||||
Kood: {
|
|
||||||
HkKood: number;
|
|
||||||
HkKoodiKordaja: number;
|
|
||||||
Koefitsient: number;
|
|
||||||
Hind: number;
|
|
||||||
};
|
|
||||||
UuringuVastus?: UuringuVastus | UuringuVastus[]; // 0..n
|
|
||||||
UuringuKommentaar?: string;
|
|
||||||
}; // 1..1
|
|
||||||
UuringuTaitjaAsutuseJnr: number;
|
|
||||||
};
|
|
||||||
|
|
||||||
export type ResponseUuringuGrupp = {
|
|
||||||
UuringuGruppId: string;
|
|
||||||
UuringuGruppNimi: string;
|
|
||||||
Uuring: ResponseUuring | ResponseUuring[]; // 1..n
|
|
||||||
};
|
|
||||||
|
|
||||||
// type for UuringuGrupp is correct, but some of this is generated by an LLM and should be checked if data in use
|
|
||||||
export type MedipostOrderResponse = IMedipostResponseXMLBase & {
|
|
||||||
Saadetis: {
|
|
||||||
Pais: {
|
|
||||||
Pakett: {
|
|
||||||
'#text': string;
|
|
||||||
'@_versioon': string;
|
|
||||||
};
|
|
||||||
Saatja: string;
|
|
||||||
Saaja: string;
|
|
||||||
Aeg: string;
|
|
||||||
SaadetisId: string;
|
|
||||||
Email: string;
|
|
||||||
};
|
|
||||||
Vastus?: {
|
|
||||||
ValisTellimuseId: string;
|
|
||||||
Asutus: {
|
|
||||||
'@_tyyp': string; // TEOSTAJA
|
|
||||||
'@_jarjenumber': string;
|
|
||||||
AsutuseId: number;
|
|
||||||
AsutuseNimi: string;
|
|
||||||
AsutuseKood: string;
|
|
||||||
AllyksuseNimi?: string;
|
|
||||||
Telefon: number;
|
|
||||||
}[]; //@_tyyp = TELLIJA 1..1, @_tyyp = TEOSTAJA 1..n
|
|
||||||
Personal: {
|
|
||||||
'@_tyyp': string;
|
|
||||||
'@_jarjenumber': string;
|
|
||||||
PersonalOID: string;
|
|
||||||
PersonalKood: string;
|
|
||||||
PersonalPerekonnaNimi: string;
|
|
||||||
PersonalEesNimi: string;
|
|
||||||
Telefon: number;
|
|
||||||
};
|
|
||||||
Patsient: {
|
|
||||||
IsikukoodiOID: string;
|
|
||||||
Isikukood: string;
|
|
||||||
PerekonnaNimi: string;
|
|
||||||
EesNimi: string;
|
|
||||||
SynniAeg: string;
|
|
||||||
SuguOID: string;
|
|
||||||
Sugu: string;
|
|
||||||
};
|
|
||||||
Proov: Array<{
|
|
||||||
ProovinouIdOID: string;
|
|
||||||
ProovinouId: string;
|
|
||||||
MaterjaliTyypOID: string;
|
|
||||||
MaterjaliTyyp: number;
|
|
||||||
MaterjaliNimi: string;
|
|
||||||
Ribakood: string;
|
|
||||||
Jarjenumber: number;
|
|
||||||
VotmisAeg: string;
|
|
||||||
SaabumisAeg: string;
|
|
||||||
}>;
|
|
||||||
TellimuseNumber: string;
|
|
||||||
TellimuseOlek: keyof typeof AnalysisOrderStatus;
|
|
||||||
UuringuGrupp?: ResponseUuringuGrupp | ResponseUuringuGrupp[];
|
|
||||||
};
|
|
||||||
Tellimus?: {
|
|
||||||
ValisTellimuseId: string;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
export const AnalysisOrderStatus = {
|
|
||||||
1: 'QUEUED',
|
|
||||||
2: 'ON_HOLD',
|
|
||||||
3: 'PROCESSING',
|
|
||||||
4: 'COMPLETED',
|
|
||||||
5: 'REJECTED',
|
|
||||||
6: 'CANCELLED',
|
|
||||||
} as const;
|
|
||||||
export const NormStatus: Record<number, string> = {
|
|
||||||
0: 'NORMAL',
|
|
||||||
1: 'WARNING',
|
|
||||||
2: 'REQUIRES_ATTENTION',
|
|
||||||
} as const;
|
|
||||||
|
|||||||
132
packages/shared/src/types/medipost-analysis.ts
Normal file
132
packages/shared/src/types/medipost-analysis.ts
Normal file
@@ -0,0 +1,132 @@
|
|||||||
|
export const NormStatus: Record<number, string> = {
|
||||||
|
0: 'NORMAL',
|
||||||
|
1: 'WARNING',
|
||||||
|
2: 'REQUIRES_ATTENTION',
|
||||||
|
} as const;
|
||||||
|
|
||||||
|
export const AnalysisOrderStatus = {
|
||||||
|
1: 'QUEUED',
|
||||||
|
2: 'ON_HOLD',
|
||||||
|
3: 'PROCESSING',
|
||||||
|
4: 'COMPLETED',
|
||||||
|
5: 'REJECTED',
|
||||||
|
6: 'CANCELLED',
|
||||||
|
} as const;
|
||||||
|
|
||||||
|
export type UuringuVastus = {
|
||||||
|
VastuseVaartus: string; // numeric or text like 'Negatiivne'
|
||||||
|
VastuseAeg: string;
|
||||||
|
NormYlem?: {
|
||||||
|
'#text': number;
|
||||||
|
'@_kaasaarvatud': string;
|
||||||
|
}; // 0..1
|
||||||
|
NormAlum?: {
|
||||||
|
'#text': number;
|
||||||
|
'@_kaasaarvatud': string;
|
||||||
|
};
|
||||||
|
NormiStaatus: keyof typeof NormStatus;
|
||||||
|
ProoviJarjenumber: number;
|
||||||
|
};
|
||||||
|
|
||||||
|
export type UuringElement = {
|
||||||
|
UuringIdOID: string;
|
||||||
|
UuringId: string;
|
||||||
|
TLyhend: string;
|
||||||
|
KNimetus: string;
|
||||||
|
UuringNimi: string;
|
||||||
|
TellijaUuringId: number;
|
||||||
|
TeostajaUuringId: string;
|
||||||
|
UuringOlek: keyof typeof AnalysisOrderStatus;
|
||||||
|
Mootyhik?: string; // 0..1
|
||||||
|
Kood: {
|
||||||
|
HkKood: number;
|
||||||
|
HkKoodiKordaja: number;
|
||||||
|
Koefitsient: number;
|
||||||
|
Hind: number;
|
||||||
|
};
|
||||||
|
UuringuVastus?: UuringuVastus | UuringuVastus[]; // 0..n
|
||||||
|
UuringuKommentaar?: string;
|
||||||
|
}
|
||||||
|
|
||||||
|
export type ResponseUuring = {
|
||||||
|
UuringuElement: UuringElement;
|
||||||
|
UuringuTaitjaAsutuseJnr: number;
|
||||||
|
};
|
||||||
|
|
||||||
|
export type ResponseUuringuGrupp = {
|
||||||
|
UuringuGruppId: string;
|
||||||
|
UuringuGruppNimi: string;
|
||||||
|
Uuring: ResponseUuring | ResponseUuring[]; // 1..n
|
||||||
|
};
|
||||||
|
|
||||||
|
export interface IMedipostResponseXMLBase {
|
||||||
|
'?xml': {
|
||||||
|
'@_version': string;
|
||||||
|
'@_encoding': string;
|
||||||
|
'@_standalone': 'yes' | 'no';
|
||||||
|
};
|
||||||
|
ANSWER?: { CODE: number };
|
||||||
|
}
|
||||||
|
|
||||||
|
export type MedipostOrderResponse = IMedipostResponseXMLBase & {
|
||||||
|
Saadetis: {
|
||||||
|
Pais: {
|
||||||
|
Pakett: {
|
||||||
|
'#text': string;
|
||||||
|
'@_versioon': string;
|
||||||
|
};
|
||||||
|
Saatja: string;
|
||||||
|
Saaja: string;
|
||||||
|
Aeg: string;
|
||||||
|
SaadetisId: string;
|
||||||
|
Email: string;
|
||||||
|
};
|
||||||
|
Vastus?: {
|
||||||
|
ValisTellimuseId: string;
|
||||||
|
Asutus: {
|
||||||
|
'@_tyyp': string; // TEOSTAJA
|
||||||
|
'@_jarjenumber': string;
|
||||||
|
AsutuseId: number;
|
||||||
|
AsutuseNimi: string;
|
||||||
|
AsutuseKood: string;
|
||||||
|
AllyksuseNimi?: string;
|
||||||
|
Telefon: number;
|
||||||
|
}[]; //@_tyyp = TELLIJA 1..1, @_tyyp = TEOSTAJA 1..n
|
||||||
|
Personal: {
|
||||||
|
'@_tyyp': string;
|
||||||
|
'@_jarjenumber': string;
|
||||||
|
PersonalOID: string;
|
||||||
|
PersonalKood: string;
|
||||||
|
PersonalPerekonnaNimi: string;
|
||||||
|
PersonalEesNimi: string;
|
||||||
|
Telefon: number;
|
||||||
|
};
|
||||||
|
Patsient: {
|
||||||
|
IsikukoodiOID: string;
|
||||||
|
Isikukood: string;
|
||||||
|
PerekonnaNimi: string;
|
||||||
|
EesNimi: string;
|
||||||
|
SynniAeg: string;
|
||||||
|
SuguOID: string;
|
||||||
|
Sugu: string;
|
||||||
|
};
|
||||||
|
Proov: Array<{
|
||||||
|
ProovinouIdOID: string;
|
||||||
|
ProovinouId: string;
|
||||||
|
MaterjaliTyypOID: string;
|
||||||
|
MaterjaliTyyp: number;
|
||||||
|
MaterjaliNimi: string;
|
||||||
|
Ribakood: string;
|
||||||
|
Jarjenumber: number;
|
||||||
|
VotmisAeg: string;
|
||||||
|
SaabumisAeg: string;
|
||||||
|
}>;
|
||||||
|
TellimuseNumber: string;
|
||||||
|
TellimuseOlek: keyof typeof AnalysisOrderStatus;
|
||||||
|
UuringuGrupp?: ResponseUuringuGrupp | ResponseUuringuGrupp[];
|
||||||
|
};
|
||||||
|
Tellimus?: {
|
||||||
|
ValisTellimuseId: string;
|
||||||
|
}
|
||||||
|
};
|
||||||
|
};
|
||||||
Reference in New Issue
Block a user