Gabinet dentystyczny - przygotowania do rysowania diagramu

Przymierzam się powoli do narysowania diagramu zębów.
Założenia
-
Na początku przygotuję bazę - dodam potrzebne tabele - i zastanowię się nad API, jakie może mi się przydać podczas rysowania.
-
Później zamierzam napisać kawałek kodu w JavaScript, który ściągnie z serwera listę zmian (operacji, jakie były wykonywane na poszczególnych zębach) i wyrysuje je na diagramie widocznym w widoku wizyty.
-
Docelowo diagram będzie interaktywny - klikanie w zęby będzie generować po stronie serwera “zmiany stanu uzębienia”.
Dwie tabele
Zacznę od dodania dwóch tabel:
state
przechowuje nazwy “stanów” uzębienia i określa, czy stan dotyczy całego zęba (np. “do usunięcia”) czy tylko części (np. “wypełnienie czasowe”)change
opisuje pojedynczą zmianę (która nakłada się na poprzednie zmiany), która odbywa się w kontekście określonej wizyty, dotyczy zęba o pewnym numerze, określonej (liczbą) strony zęba (0 - całość, 1 - powierzchnia centralna, 2…5 - lewa, górna, prawa, dolna)
|
|
Tabela state
Zainicjuję tabelę state
stanami (se strony diagramzebowy.pl):
|
|
W przyszłości stomatolog będzie mógł dodać swoje rodzaje “stanów”, określić, czy są “lokalne” i występują na powierzchi zęba, czy “globalne” i dotyczą całego zęba, a później zdefiniować szczegóły dotyczące renderowania.
API
Dodawanie zmian
Jak ma wyglądać API do rejestrowania zmian?
- Zmiany mogą być jedynie dodawane, nie będzie ich usuwania (nie implementuję endpointów DELETE)
- Dodawanie zmiany odbywa się zawsze w ramach wizyty, więc stworzę endpoint pozwalający na wywołanie żądania POST:
POST /api/visits/:id/add
- Do bazy pójdzie taka modyfikacja:
|
|
Wyszukanie zmian w ramach bieżącej wizyty
Do określenia zmian, jakie zostały wykonane w ramach bieżącej wizyty będzie służył endpoint GET /api/visits/:id/visitchanges
:
|
|
Stan uzębienia w dniu wizyty
Na podstawie zmian stanu dla każdego pacjenta będzie można “wyrenderować” bieżący stan uzębienia, a nawet (hm…) pokazać na osi czasu, jak i kiedy były wykonywane poszczególne zabiegi.
Na razie jednak skupię się na przygotowaniu danych potrzebnych do rysowania: posortuję zmiany dla bieżącego pacjenta w kolejności chronologicznej wizyt (aż do bieżącej wizyty, dla której renderuję widok), a w ramach wizyty posortuję po kolumnie time
przechowującej timestamp zmiany:
|
|
Dzięki temu uzyskam listę zmian, które mogę nanieść na (nieistniejący jescze) widok uzębienia pokazujący stan jamy ustnej podczas wizyty.
Co dalej?
Na dziś to tyle. Trzeba w końcu zakasać rękawy i zasiąść do javascripta. Ale do tego potrzebuję jakiegoś spokojnego wieczoru.
A dziś jeszcze trzeba zdjąć pranie i nastawić kolejne, umyć naczynia, zetrzeć podłogę poplamioną bulgocącym leczo i przeczytać córeczce “Pucio na wakacjach”.
Kod
Ten wpis jest częścią serii gabinet.
- 2021-13-09 - Gabinet dentystyczny - zapis zmian i podsumowanie
- 2021-11-09 - Gabinet dentystyczny - Legenda
- 2021-07-09 - Gabinet dentystyczny - diagram
- 2021-27-08 - Gabinet dentystyczny - przygotowania do rysowania diagramu
- 2021-26-08 - Gabinet dentystyczny - usuwanie pacjentów i wizyt
- 2021-23-08 - Gabinet dentystyczny - dodanie wizyt
- 2021-15-08 - Gabinet dentystyczny - prosta aplikacja webowa w Go