feat(MED-161): use shared types
This commit is contained in:
@@ -1,12 +1,14 @@
|
||||
'use server';
|
||||
|
||||
import {
|
||||
AnalysisOrderStatus,
|
||||
GetMessageListResponse,
|
||||
MedipostAction,
|
||||
MedipostOrderResponse,
|
||||
ResponseUuringuGrupp,
|
||||
} 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 axios from 'axios';
|
||||
|
||||
|
||||
@@ -1,8 +1,8 @@
|
||||
'use server';
|
||||
|
||||
import {
|
||||
import type {
|
||||
IMedipostResponseXMLBase,
|
||||
} from '@/lib/types/medipost';
|
||||
} from '@/packages/shared/src/types/medipost-analysis';
|
||||
|
||||
import { MedipostValidationError } from './MedipostValidationError';
|
||||
import { parseXML } from '../util/xml.service';
|
||||
|
||||
@@ -1,11 +1,4 @@
|
||||
export interface IMedipostResponseXMLBase {
|
||||
'?xml': {
|
||||
'@_version': string;
|
||||
'@_encoding': string;
|
||||
'@_standalone': 'yes' | 'no';
|
||||
};
|
||||
ANSWER?: { CODE: number };
|
||||
}
|
||||
import type { IMedipostResponseXMLBase } from "@/packages/shared/src/types/medipost-analysis";
|
||||
|
||||
export type Message = {
|
||||
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