@pih/esm-dispensing-app
Version:
Medication dispensing application
110 lines (100 loc) • 2.96 kB
text/typescript
import { type APIRequestContext, expect } from '@playwright/test';
export interface Patient {
uuid: string;
identifiers: Identifier[];
display: string;
person: {
uuid: string;
display: string;
gender: string;
age: number;
birthdate: string;
birthdateEstimated: boolean;
dead: boolean;
deathDate?: string;
causeOfDeath?: string;
preferredAddress: {
address1: string;
cityVillage: string;
country: string;
postalCode: string;
stateProvince: string;
countyDistrict: string;
};
attributes: Array<Record<string, unknown>>;
voided: boolean;
birthtime?: string;
deathdateEstimated: boolean;
resourceVersion: string;
};
attributes: { value: string; attributeType: { uuid: string; display: string } }[];
voided: boolean;
}
export interface Address {
preferred: boolean;
address1: string;
cityVillage: string;
country: string;
postalCode: string;
stateProvince: string;
}
export interface Identifier {
uuid: string;
display: string;
}
export const generateRandomPatient = async (api: APIRequestContext): Promise<Patient> => {
const identifierRes = await api.post('idgen/identifiersource/8549f706-7e85-4c1d-9424-217d50a2988b/identifier', {
data: {},
});
// eslint-disable-next-line @typescript-eslint/await-thenable
await expect(identifierRes.ok()).toBeTruthy();
const { identifier } = await identifierRes.json();
const patientRes = await api.post('patient', {
// TODO: This is not configurable right now. It probably should be.
data: {
identifiers: [
{
identifier,
identifierType: '05a29f94-c0ed-11e2-94be-8c13b969e334',
location: '44c3efb0-2583-4c80-a79e-1f756a03c0a1',
preferred: true,
},
],
person: {
addresses: [
{
address1: 'Bom Jesus Street',
address2: '',
cityVillage: 'Recife',
country: 'Brazil',
postalCode: '50030-310',
stateProvince: 'Pernambuco',
},
],
attributes: [],
birthdate: '2020-2-1',
birthdateEstimated: true,
dead: false,
gender: 'M',
names: [
{
familyName: `Smith${Math.floor(Math.random() * 10000)}`,
givenName: `John${Math.floor(Math.random() * 10000)}`,
middleName: '',
preferred: true,
},
],
},
},
});
// eslint-disable-next-line @typescript-eslint/await-thenable
await expect(patientRes.ok()).toBeTruthy();
return await patientRes.json();
};
export const getPatient = async (api: APIRequestContext, uuid: string): Promise<Patient> => {
const patientRes = await api.get(`patient/${uuid}?v=full`);
return await patientRes.json();
};
export const deletePatient = async (api: APIRequestContext, uuid: string) => {
await api.delete(`patient/${uuid}`);
};