Skip to content

Commit bd8c0ab

Browse files
committed
9.16 - 9.18
1 parent 933ebcc commit bd8c0ab

3 files changed

Lines changed: 28 additions & 6 deletions

File tree

part9/patientor-backend/src/routes/patient.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,4 +20,10 @@ router
2020
res.json(newPatient);
2121
});
2222

23+
router.route("/:id").get((req, res) => {
24+
const { id } = req.params;
25+
const patient = patientService.getPatientById(id);
26+
res.json(patient);
27+
});
28+
2329
export default router;
Lines changed: 13 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
import { v4 as uuid } from "uuid";
22
import patientData from "../../data/patients";
3-
import { NewPatient, Patient } from "../types";
3+
import { NewPatient, Patient, PublicPatient } from "../types";
44

55
const patients: Patient[] = patientData;
66

7-
const getPatients = (): Omit<Patient, "ssn">[] => {
7+
const getPatients = (): Omit<PublicPatient, "ssn">[] => {
88
return patients.map(({ id, name, dateOfBirth, occupation, gender }) => ({
99
id,
1010
name,
@@ -14,13 +14,23 @@ const getPatients = (): Omit<Patient, "ssn">[] => {
1414
}));
1515
};
1616

17+
const getPatientById = (id: string): Patient | undefined => {
18+
const patient = patients.find((patient) => patient.id === id);
19+
if (!patient) {
20+
throw new Error(`Patient with id ${id} not found`);
21+
}
22+
patient["entries"] = [];
23+
return patient;
24+
};
25+
1726
const addPatient = (patient: NewPatient): Patient => {
1827
const newPatient = {
1928
id: uuid(),
29+
entries: [],
2030
...patient,
2131
};
2232
patients.push(newPatient);
2333
return newPatient;
2434
};
2535

26-
export default { getPatients, addPatient };
36+
export default { getPatients, addPatient, getPatientById };
Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,28 @@
1+
/* eslint-disable @typescript-eslint/no-empty-interface */
12
export interface Diagnose {
23
code: string;
34
name: string;
45
latin?: string;
56
}
67

8+
export interface Entry {}
9+
710
export interface Patient {
811
id: string;
912
name: string;
10-
dateOfBirth: string;
1113
ssn: string;
1214
occupation: string;
13-
gender: string;
15+
gender: Gender;
16+
dateOfBirth: string;
17+
entries: Entry[];
1418
}
1519

20+
export type PublicPatient = Omit<Patient, "ssn" | "entries">;
21+
1622
export enum Gender {
1723
MALE = "male",
1824
FEMALE = "female",
1925
OTHER = "other",
2026
}
2127

22-
export type NewPatient = Omit<Patient, "id">;
28+
export type NewPatient = Omit<Patient, "id" | "entries">;

0 commit comments

Comments
 (0)