Přejít k obsahu
Integrace a automatizace5 min čtení

Rezervační systém v Google Kalendáři, bez vlastní databáze

Spousta ordinací a studií už plánuje v Google Kalendáři. Online objednávání pak řeší dalším systémem, který se s kalendářem musí synchronizovat. U jednodušších provozů to jde i bez něj. Web může volné termíny číst přímo z kalendáře a nové rezervace do něj rovnou zapisovat. Přesně tak jsme to postavili pro Alma Medical.

Proč kalendář místo rezervačního systému

Klinika Alma Medical chtěla, aby se pacienti mohli online objednat na vyšetření znamének.

Recepce přitom už všechno plánuje v Google Kalendáři: ordinační hodiny, dovolené, školení i návštěvy domluvené po telefonu.

Přidat další rezervační systém by znamenalo dvě místa, kde se musí termíny shodovat, a další synchronizaci, která může selhat.

Proto rezervace nemají vlastní databázi termínů. Zdrojem pravdy je kalendář kliniky. Web z něj vypočítá volné časy a nové návštěvy do něj zapisuje jako běžné události.

Recepce dál pracuje tam, kde pracovala vždycky.

Jak to funguje

Volné termíny určuje recepce

Kdy se dá online objednat, nenastavuje nikdo v administraci webu.

Recepce vytvoří v kalendáři událost, jejíž název začíná slovem „Online“. Třeba opakovanou „Online · Dermatoskopie“ každý pracovní den od 8 do 14 hodin.

Jen uvnitř těchto oken web nabídne pacientům dvacetiminutové termíny.

Potřebuje klinika příští středu skončit dřív? Upraví událost v kalendáři. Hotovo. Bez zásahu do webu.

Všechno ostatní termín blokuje

Každá jiná událost v kalendáři daný čas obsadí. Platí to i pro celodenní události, třeba dovolenou.

Výjimkou jsou události nastavené v Google Kalendáři jako Volno. Ty neblokují běžné plánování a ignoruje je i rezervační web.

Web zároveň nenabízí termíny dřív než dvě hodiny předem ani dál než čtyři týdny.

Pacient dostane jen seznam volných časů. Jména pacientů, názvy schůzek ani obsah ostatních událostí se do prohlížeče neposílají.

Výběr termínu online rezervace na webu Alma Medical
Výběr termínu na webu Alma Medical. Volné časy na snímku jsou ukázkové.

Dva pacienti, jeden termín

Mezi zobrazením volného času a odesláním formuláře může uběhnout několik minut. Mezitím si stejný termín může vybrat někdo jiný.

Proto dostupnost nekontrolujeme jen při načtení stránky.

Před vytvořením rezervace web ověří kalendář znovu. Po zápisu navíc kontroluje, jestli ve stejném čase nevznikl souběžný konflikt.

Pokud ano, systém jednu rezervaci nepovažuje za potvrzenou a pacientovi nabídne výběr jiného termínu.

Tohle je detail, který na obrázku rezervačního formuláře není vidět. Ale bez něj může i jednoduchý systém začít rozdávat jeden termín dvěma lidem.

Potvrzení, připomínka a zrušení

Po rezervaci přijde pacientovi e-mail s potvrzením a odkazem na zrušení. Den před návštěvou odejde připomínka.

Odkaz pro zrušení je podepsaný, takže nestačí změnit pár znaků v URL a dostat se k cizí rezervaci.

Samotný odkaz navíc nic neruší. Nejprve otevře stránku a teprve na ní pacient zrušení potvrdí tlačítkem.

Důvod je docela praktický: e-mailové služby, bezpečnostní filtry a náhledy odkazů URL často automaticky otevírají. Kdyby samotné načtení odkazu rezervaci rušilo, zvládl by to e-mailový filtr dřív než pacient.

Co je potřeba nastavit

  • Google Calendar API. Web potřebuje technický účet a přístup ke konkrétnímu kalendáři, ze kterého bude číst a do kterého bude zapisovat.
  • Přístup jen tam, kam je potřeba. Technický účet dostane oprávnění k určenému kalendáři. Nemusí mít přístup k e-mailu ani k ostatním kalendářům kliniky.
  • Odesílání e-mailů. Potvrzení a připomínky posíláme z domény kliniky přes ověřenou e-mailovou službu.
  • Přístupové údaje jen na serveru. Klíče ke Googlu ani e-mailové službě nejsou v kódu posílaném do prohlížeče. Jsou uložené v serverovém prostředí hostingu.

A počítáme i s tím, že některá služba zrovna nemusí odpovídat.

Pokud web nemůže bezpečně zjistit dostupnost termínů, nenabízí rezervaci naslepo. Místo formuláře ukáže možnost objednat se telefonicky.

Kde tahle cesta končí

Google Kalendář jako zdroj rezervací funguje dobře pro jeden nebo několik jednoduchých typů návštěv s pevnou délkou.

Pak ale přijde bod, kdy už si vlastní databáze nebo hotový rezervační systém svoji složitost zaslouží.

  • Platba předem. Termín bývá potřeba po dobu platby dočasně zablokovat a řešit, co se stane při nedokončené transakci.
  • Více kapacit. Tři pacienti ve stejném čase, několik zaměstnanců, konkrétní přístroj nebo místnost už z jednoho kalendáře rychle udělají hlavolam.
  • Různě dlouhé služby. Dvacet minut na jednu návštěvu a devadesát na jinou znamená složitější práci s dostupností.
  • Statistiky a další automatizace. Kolik rezervací přišlo z webu, kolik jich lidé zrušili nebo kdo se opakovaně nedostavil, se z kalendáře zjistit dá. S databází se s tím ale pracuje podstatně lépe.
  • Citlivá data. U zdravotnického zařízení může už samotná informace o rezervaci vypovídat o čerpání zdravotní péče. Proto do kalendáře ukládáme jen údaje, které klinika pro rezervaci skutečně potřebuje, a řešíme přístupová práva, zabezpečení účtů i podmínky zpracování dat.

Jednodušší technické řešení není automaticky horší. Jen musí být opravdu jednodušší i v provozu, ne pouze při vývoji.

Kdy stačí hotový rezervační systém a kdy už dává smysl něco vlastního, rozebíráme v článku Rezervační systém: hotový, doplněk, nebo vlastní?

Časté otázky

Uvidí pacient, kdo je objednaný před ním?

Ne. Web z kalendáře používá informace potřebné k výpočtu dostupnosti, ale pacientovi vrací jen volné časy. Obsah ostatních událostí zůstává na serveru.

Co když recepce zapíše návštěvu ručně?

Nic dalšího dělat nemusí. Jakmile je v kalendáři událost, daný čas se při příštím načtení už nenabídne jako volný. Stejně fungují dovolené, porady nebo jiné blokace.

Jde to i s kalendářem v Microsoft 365?

Ano. Princip může být stejný: dostupnost se čte z kalendáře a nové rezervace se do něj zapisují přes API. Microsoft 365 k tomu používá Microsoft Graph, takže nejde o stejné napojení jako u Googlu, ale z pohledu uživatele může celý systém fungovat prakticky stejně.

AutorOndřej Koziorek

Founder a creative director NKZ. V nkz.dev vede zadání, UX/UI a směřování digitálních produktů.

Dál ze zápisků
E-shopy

Rezervační systém: hotový, nebo vlastní

Kdy stačí hotový systém, kdy doplněk a kdy začíná dávat smysl vlastní řešení.

Přečíst
Integrace a automatizace

Co připravit před napojením účetnictví a e-shopu?

Číselné řady, DPH, vratky, platby a chyby: co rozhodnout před vývojem.

Přečíst
Služba

Integrace a automatizace

Propojení systémů, které si dnes data předávají ručně.

Více o službě