sql >> Databáze >  >> RDS >> Database

Datový model pro aplikaci pro rezervaci lékařských schůzek

Rezervace návštěvy lékaře pomocí online aplikace je inovací, která celý proces zjednodušuje. Pojďme se ponořit do datového modelu aplikace pro rezervaci schůzek.

Proč používat aplikaci? Usnadňuje lidem vyhledání lékařů podle jejich výběru a umožňuje jim vidět profesní záznamy lékaře a recenze pacientů. Když někdo najde lékaře, který se mu líbí, může si s ním zarezervovat schůzku, aniž by opustil aplikaci. Aplikace může také pomoci lékařům zkrátit čekací doby jejich pacientů, pomoci jim naplánovat jejich pacienty a umožnit jim sledovat online recenze pacientů.

Požadavky na aplikaci pro lékařskou schůzku

Stručně řečeno, očekáváme, že naše aplikace:

  • Umožněte pacientům vyhledávat lékaře různých specializací (rodinný lékař, kardiolog, podiatr atd.) podle místa.
  • Ukažte seřazený seznam lékařů na základě jejich let zkušeností, vzdálenosti od místa pacienta, doporučení pacientů a jejich revizních indexů (souhrnné hodnocení pacientů u lůžka, čekací doby, personálu atd.)
  • Ukažte poplatky lékařům za počáteční a následné konzultace.
  • Zachyťte a zobrazte profily lékařů, včetně podrobností o jejich titulech, certifikacích, stážích a minulých a současných přidruženích k nemocnicím.
  • Zaznamenávejte recenze o lékařích od uživatelů aplikace. Tato recenze poskytne podrobný náhled na lékaře a jejich personál ostatním uživatelům aplikace.

A nezapomeňte na jedinečný prodejní argument aplikace:zobrazení nadcházejících dostupných schůzek a umožnění uživatelům zarezervovat si schůzku .

Kategorizace požadavků na aplikace

V zásadě můžeme požadavky aplikace rozdělit do těchto čtyř oblastí:

  1. Správa údajů lékařů – Lékaři se mohou zaregistrovat a zadat všechny své údaje.
  2. Správa OPD (ambulance) a podrobností o klinice – Lékaři (nebo jejich zaměstnanci) mohou zaznamenávat podrobnosti o své klinice nebo plánu OPD a dostupnosti.
  3. Správa klientských a kontrolních dat – Uživatelé se mohou zaregistrovat a zadat své základní údaje. Mohou také zveřejňovat recenze o lékařích.
  4. Správa schůzek – Uživatelé mohou vyhledávat lékaře na základě určitých kritérií.

Podívejme se na tyto oblasti jednotlivě.

Správa údajů lékařů

Lékaři se mohou do aplikace zaregistrovat vyplněním určitých povinných údajů, ale funkce rezervace schůzky je povolena až poté, co dokončí svůj úplný profil. To zahrnuje jejich kvalifikace (odborné tituly, certifikace/specializace a stáže) a jejich minulé a současné vztahy s nemocnicemi a poskytovateli zdravotních služeb.

Níže uvedené tabulky spravují tyto informace.

doctor tabulka ukládá základní údaje o lékařích, které zadávají při registraci. Sloupce v této tabulce jsou:

  • id – Jedinečné číslo, které aplikace přiřadí lékařům při registraci.
  • first_name – Křestní jméno lékaře.
  • last_name – Příjmení lékaře.
  • professional_statement – Podrobný přehled kvalifikace, praxe lékaře, jeho profesního motta atd. Tyto informace zadává lékař a jsou zobrazeny na stránce profilu každého lékaře.
  • practicing_from – Datum, kdy lékař začal vykonávat lékařskou praxi. To má hluboký význam, protože aplikace odvozuje hodnocení zkušeností každého lékaře na základě informací v tomto sloupci.

specialization tabulka obsahuje všechny existující lékařské specializace jako ortoped, neurolog, zubař atd. Lékař může mít více než jednu specializaci; ve skutečnosti je docela běžné, že se lékař specializuje na příbuzné obory. Neurolog může být například i psychiatr; gynekolog může být endokrinolog a tak dále. Proto doctor_specialization tabulka umožňuje vztah many-to-many mezi doctor a specialization tabulky. Atributy v těchto dvou tabulkách jsou samozřejmé.

qualification tabulka ukládá podrobnosti o vzdělání lékařů a odborných kvalifikacích, včetně titulů, certifikací, výzkumných prací, seminářů, průběžného školení atd. Abych usnadnil různé typy podrobností o kvalifikaci, dal jsem těmto polím docela obecné názvy:

  • id – Primární klíč tabulky.
  • doctor_id – Odkazuje na doctor tabulky a spojuje lékaře s kvalifikací.
  • qualification_name – Označuje název titulu, certifikace, výzkumné práce atd.
  • institute_name – Instituce, která lékaři kvalifikaci vydala. Může to být univerzita, lékařská instituce, mezinárodní sdružení lékařů atd.
  • procurement_year – Datum, kdy byla kvalifikace získána nebo udělena.

hospital_affiliation tabulka obsahuje informace o spojení lékařů s nemocnicemi a poskytovateli zdravotních služeb. Tyto údaje slouží pouze k zobrazení v profilu lékaře a nemají žádný význam ve funkci rezervace schůzky. Údaje OPD (Ambulantní oddělení) se zadávají samostatně a budou řešeny dále v tomto článku.

Sloupce této tabulky jsou:

  • id – Primární klíč tabulky.
  • doctor_id – Odkazuje na doctor stůl a spojí lékaře s přidruženou nemocnicí.
  • hospital_name – Název přidružené nemocnice.
  • city and country – Město a země, kde se nemocnice nachází. Tyto sloupce adres nehrají žádnou roli ve funkci vyhledávání aplikace; jsou pouze k zobrazení na profilu lékaře.
  • start_date – Když začal vztah lékaře k nemocnici.
  • end_date – Když skončilo spojení. Může být zrušena, protože aktuální přidružení nebudou mít datum ukončení.

Správa OPD lékařů / Podrobnosti o klinice

Informace v této sekci zadávají lékaři (nebo jejich zaměstnanci) a hrají významnou roli při vyhledávání a rezervačních funkcích aplikace.

office tabulka obsahuje informace o ambulancích nemocnic, ve kterých jsou lékaři sdruženi, a také o vlastních klinikách (tj. ordinacích nebo ordinacích). Sloupce v této tabulce jsou:

  • id – Primární klíč této tabulky.
  • doctor_id – Odkazuje na doctor tabulky a označuje příslušného lékaře.
  • hospital_affiliation_id – Označuje nemocnici, kde je lékař k dispozici pro OPD. Vzhledem k tomu, že sloupec je použitelný pro OPD, ale ne pro kliniky, je možné u něj nulovat.
  • time_slot_per_client_in_min – Ukládá množství času (v minutách) vyhrazeného pro konzultace. Počet minut zadávají lékaři na základě svých zkušeností. Tento sloupec pomáhá aplikaci určit další dostupný slot. Upozorňujeme, že toto číslo nezaručuje délku schůzky, ale pomáhá minimalizovat dobu čekání pacientů, pokud si pomocí aplikace zarezervují schůzku.
  • first_consultation_fee – Poplatek účtovaný lékařem za úvodní návštěvu. To se může zdát nedůležité, ale pro funkci vyhledávání je to velmi důležité; poplatek je velmi běžné kritérium filtru.
  • followup_consultation_fee – Mnoho lékařů si účtuje méně za následnou návštěvu než za úvodní konzultaci. V tomto sloupci jsou uloženy náklady na následnou konzultaci.
  • street_address – Adresa nemocnice OPD nebo kliniky.
  • city , state a country –Město, stát a země, kde se nemocnice nebo klinika nachází.
  • zip – PSČ, kde se nachází klinika nebo nemocnice. Lidé často vyhledávají lékaře v blízkých oblastech pomocí poštovního směrovacího čísla, takže toto pole bude důležité pro funkci vyhledávání aplikace.

Proč existuje samostatná tabulka „kancelář“, když lze podrobnosti OPD snadno sledovat v tabulce „přidružení k nemocnici“?

Tři důvody:

  • Lékař může být propojen s nemocnicí kvůli jednomu aspektu své práce (tj. provádění operací), ale ne kvůli jiným (tj. návštěva přijímaných pacientů). Pokud se pokusíme zachovat podrobnosti o kanceláři v hospital_affiliation pouze stůl.
  • Mnoho lékařů není spojeno s nemocnicemi, ale má své vlastní kliniky nebo kanceláře. Musíme uchovávat informace i pro tyto lékaře.
  • Lékař může mít několik ordinací na různých místech nebo může pracovat v několika pobočkách nemocnice. Pokud je lékař zobrazen pouze jako přidružený k jedné nemocnici, můžeme ztratit některé informace. To je důvod, proč udržujeme samostatné podrobnosti o adrese.

office_doctor_availability tabulka ukládá dostupnost OPD/kliniky lékařů z hlediska časových úseků (řekněme 2 hodiny ráno a 4 hodiny večer). Rozdělení dne tímto způsobem je docela běžné, takže mít další stůl pro ukládání slotů dostupnosti má smysl. Navíc mohou lékaři pracovat více než jednu směnu OPD. Sloupce pro tuto tabulku jsou:

  • id – Primární klíč tabulky.
  • office_id – Odkazuje na tabulku „kancelář“.
  • day_of_week – Den v týdnu, tj. pondělí, úterý atd. To umožňuje lékařům mít různé možnosti pro různé dny (například víkendy oproti všedním dnům).
  • start_time – Když je lékař připraven na prvního pacienta.
  • end_time – Když je naplánován konec poslední schůzky nebo směny.
  • is_available – Umožňuje lékařům označit jejich dostupnost pro konkrétní dny nebo časové úseky. Tento sloupec je ve výchozím nastavení inicializován „Y“ a je aktualizován na „N“, když lékaři označí svou nedostupnost.
  • reason_of_unavailablity – Mnoho lékařů raději zveřejňuje, proč jsou nedostupní nebo musí zrušit schůzku. To pomáhá budovat transparentní vztah mezi lékaři a jejich pacienty. Protože je volitelný, ponechal jsem tento sloupec jako sloupec s možnou hodnotou Null.

in_network_insurance tabulka ukládá informace o pojištění. V mnoha zemích jsou lékařské služby velmi nákladné a zdravotní pojištění je povinné. V takových případech tato tabulka obsahuje podrobnosti o tom, které pojišťovny jsou plně akceptovány na OPD v nemocnici nebo na klinice.

Správa dat klienta a kontrola

Pro pacienta vyžaduje registrace do aplikace velmi málo informací. Od této chvíle budu používat „klient“ spíše než „uživatel“ nebo „pacient“.

client_account tabulka ukládá základní údaje pro klienty. Tyto podrobnosti jsou zachyceny v době registrace. Sloupce v této tabulce jsou:

  • id – Jedinečné číslo přidělené každému klientovi.
  • first_name – Křestní jméno klienta.
  • last_name – Příjmení klienta.
  • contact_number – Telefonní číslo klienta, nejlépe mobilní číslo, na které lze zasílat informace o schůzce. Toto je také číslo, na kterém může klienta kontaktovat personál ordinace.
  • email – E-mailová adresa klienta. Aplikace může klientům odesílat připomenutí schůzek.

client_review tabulka nabízí nejen zpětnou vazbu (tj. hodnocení klientů) pro lékaře, ale také pomáhá potenciálním klientům při výběru lékařů. Je nedílnou součástí této aplikace. Sloupce pro tuto tabulku jsou:

  • id – Primární klíč této tabulky.
  • user_account_id – Označuje, který uživatel recenzi odesílá.
  • doctor_id – Kontrolovaný lékař.
  • is_review_anonymous – Zda bude jméno klienta zveřejněno s recenzí či nikoli. Toto je bezpečnostní funkce pro klienty.
  • wait_time_rating – Tento číselný sloupec obsahuje hodnocení v rozsahu od 1 (nejhorší) do 10 (nejlepší). Odráží názor klienta na to, jak dlouho čekal na návštěvu lékaře.
  • bedside_manner_rating – Uchovává názor klienta na chování lékaře u lůžka (tj. zda je lékař laskavý, soucitný, dobře komunikuje atd.)
  • overall_rating – Klientovo hodnocení jeho obecných zkušeností s lékařem.
  • review – Klienti zde mohou poskytnout podrobnou zpětnou vazbu.
  • is_doctor_recommended – Tento sloupec indikátoru uvádí, zda by klient doporučil lékaře.
  • review_date – Kdy byla recenze odeslána.

Správa schůzek

Tato sekce je přední USP (Unique Selling Point) pro tuto aplikaci, protože umožňuje klientům zkontrolovat dostupnost různých lékařů a rezervovat si schůzku.

appointment stůl obsahuje podrobnosti o schůzce pro klienty. Mezi jeho sloupce patří:

  • id – Každé schůzce je přiřazeno jedinečné číslo. Toto číslo je uvedeno jinde.
  • user_account_id – Který klient si schůzku rezervuje.
  • office_id – Označuje, který lékař a která nemocniční OPD nebo klinika se účastní schůzky.
  • probable_start_time – Toto je sloupec časového razítka, který obsahuje pravděpodobný čas začátku schůzky. Časy zahájení lékařských schůzek jsou obvykle spíše pravděpodobné než absolutní.
  • actual_end_time – Skutečný čas ukončení konzultace. Zpočátku je tento sloupec prázdný, protože konec schůzky může ovlivnit mnoho faktorů. Proto se jedná o sloupec s možnou hodnotou Null.
  • appointment_status_id – Toto je odkazováno ze appointment_status tabulka a označuje aktuální stav schůzky. Možné hodnoty pro stav jsou „aktivní“, „zrušeno“ a „dokončeno“. Zpočátku bude stav „aktivní“. Jakmile je jmenování dokončeno, stane se „úplným“. Bude „zrušeno“, pokud klient svou schůzku zruší.
  • appointment_taken_date – Datum, kdy byla schůzka provedena.
  • app_booking_channel_id – Kanál, přes který byla schůzka rezervována. Existuje několik kanálů, přes které lze schůzky provádět:prostřednictvím aplikace, zavoláním do nemocnice, zavoláním lékaře nebo jeho kanceláře atd.

Viz úplný datový model




Funkce vyhledávání v akci

Hledejme oftalmologa v PSČ 63101. Výsledky hledání by měly být seřazeny podle následujících kritérií:

  • Nejvíce zkušeností
  • Nejvyšší hodnocení doporučení klientů
  • Nejnižší poplatek za úvodní konzultaci

Zde je kód:

SELECT doctor_name, hospital_name, practicing_from, first_consultation_fee, recomm_count FROM
(SELECT d.doctor_id, d.first_name || ‘ ‘ || d.last_name as doctor_name, 
ha.hospital_name, d.practicing_from, o.first_consultation_fee 
FROM office o, doctor d, doctor_specialization ds, specialization s, hospital_affiliation ha 
WHERE o.doctor_id = d.id AND d.id = ds.doctor_id 
AND s.id = ds.specialization_id AND s.specialization_name = ‘Ophthalmologist’
AND o.hospital_affiliation_id = ha.id (+)
AND o.zip = ‘63101’) doctor_detail, 
(SELECT doctor_id, count(1) as recomm_count FROM client_review 
WHERE is_doctor_recommended = ‘Y’ GROUP BY doctor_id) review_count
WHERE doctor_detail.doctor_id = review_count.doctor_id
ORDER BY doctor_detail.practicing_from DESC, review_count.recomm_count DESC doctor_detail.first_consultation_fee ASC;

Co byste přidali?

Co dalšího lze do této aplikace a tohoto datového modelu přidat? Podělte se o své názory v komentářích.


  1. SQL Server pojmenovaná instance s projektem instalačního programu Visual Studio 2017

  2. SQL Server Lock Eskalace

  3. PostgreSQL:Proč se psql nemůže připojit k serveru?

  4. node.js + sdružování připojení mysql