https://www.gravatar.com/avatar/306d401b2a8c0efe0996fec60e0c90aa?s=240&d=mp

My coding journey

Disclaimer: it's just for fun

Gabinet dentystyczny - usuwanie pacjentów i wizyt

Nadszedł czas na implementację usuwania pacjentów oraz wizyt.

Usuwanie nie będzie tak naprawdę usuwaniem, lecz ukrywaniem - dodatkowa, boolowska kolumna deleted w tabelach patient oraz visit będzie flagą oznaczającą “usunięty” rekord w bazie. Dzięki temu omyłkowe usunięcie będzie “odwracalne”.

Zmiany w SQL

Zmiana schematu bazy

Konieczna będzie mała zmiana schematu: każdaą encję poszerzam o pole deleted:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
create table if not exists patient (
  id integer primary key,
  name string not null,
  surname string not null,
  birthdate date not null,
  note_id integer,
  deleted boolean default false,
  foreign key(note_id) references note(id) 
);

create table if not exists note (
  id integer primary key,
  deleted boolean default false,
  text string not null
);

create table if not exists visit (
  id integer primary key,
  vdatetime datetime not null default CURRENT_TIMESTAMP,
  patient_id integer not null,
  note_id integer,
  deleted boolean default false,
  foreign key(patient_id) references patient(id),
  foreign key(note_id) references note(id)
);

Zmiana zapytań pobierających pacjentów

Zapytanie o listę pacjentów uwzględnia tylko te wiersze, dla których deleted=false:

Gabinet dentystyczny - dodanie wizyt

Ostatnie dwie drzemki mojej córki spędziłam na “rozszerzaniu”  prorgamu “Gabinet”.

W “Gabinecie” można już dodawać pacjentom wizyty. Oprócz notatki związanej z wizytą oraz daty i godziny nic więcej na temat wizyt nie zapisuję. Programik posiada więc podstawową funkcjonalność biednego, CRUD-owego prototypu.

Rzeczy do zrobienia (TODO)

Aby był on choć trochę używalny, koniecznie trzeba jeszcze dodać:

  • stronicowanie (w sensie: paginację) dla tabel
  • wyszukiwanie pacjentów
  • pokazywanie wizyt: dzisiejszych, w tym ygodniu, wszystkich
  • schemat zębowy dla pacjenta (to pewnie byłaby bardziej interaktywna część)

Ciekawe, czy starczy mi motywacji, żeby zaimplementować choć część z powyższych funkcji.