System gabinetowy przychodni nie udostępnia swojej bazy, więc każdy raport o wizytach trzeba było wyklikać w programie. Dziś robi to automat co wieczór po godzinach pracy, a zespół docelowo zapyta o dane po polsku w czacie z asystentem AI, który nigdy nie zobaczy tożsamości pacjenta. Całość stoi na serwerze przychodni.
Klient
Przychodnia lekarska, kilkanaście osób personelu
Branża
Ochrona zdrowia
Usługi
Chatbot AI, Automatyzacja, Integracje
Czas
w realizacji
Rok
2026
- Przed
dostępu do bazy systemu gabinetowego
brak
każdy raport wyklikany w programie, dzień po dniu
ręcznie
jedyna pora, kiedy program nie jest obciążony
wieczór
Sytuacja
Przychodnia pracuje na komercyjnym systemie gabinetowym: wizyty, grafik, rozliczenia z ubezpieczycielami. Producent nie daje dostępu do bazy, a w godzinach przyjęć program jest zbyt obciążony, żeby dokładać mu pracy.
Właściciel chciał dwóch rzeczy: żeby dane o wizytach wychodziły z programu same i żeby personel mógł o nie pytać zwykłym językiem, bez informatyka. Warunek brzegowy od pierwszej rozmowy: tożsamość pacjentów nie trafia do żadnego modelu językowego.
Co nie działało
Dane były w programie, ale program nie oddawał ich nikomu poza ekranem.
Każdy raport to ta sama sekwencja: logowanie, widok wizyt, data, drukarka, podgląd wydruku, eksport, zapis pliku. Dzień po dniu, ręcznie.
Eksport to wydruk przełożony na CSV: preambuła placówki, nagłówek zawinięty na dwie linie, lekarz w osobnym wierszu zamiast w kolumnie. Przed analizą trzeba było go czyścić.
Pytanie w rodzaju „ilu pacjentów danego ubezpieczyciela mieliśmy w sierpniu” wymagało kogoś, kto usiądzie i policzy.
Co zbudowaliśmy
Trzy elementy, każdy z jednym zadaniem.
Ekstraktor (.NET 8, UI Automation): loguje się do systemu gabinetowego na koncie technicznym z rolą rejestracji i klika w interfejs tak jak człowiek. Nie dotyka bazy, nie czyta siatki wizyt z ekranu, nie uruchamia się w godzinach pracy. Pliki dzienne scala w jedną płaską tabelę z kolumnami lekarza i daty.
Baza i czat: pliki trafiają do PostgreSQL, a zespół dostaje kanały w Rocket.Chat z botem w Pythonie podpiętym do Claude API. Bot zamienia pytanie po polsku na zapytanie tylko do odczytu i odpowiada w kanale.
Porównywarka ubezpieczeń dla recepcji: zestawia dzienne listy wizyt z rozliczeniami ubezpieczycieli. Nocne eksporty są jej wejściem, więc dostała świeże dane bez dodatkowej pracy.
Jak to działa na co dzień
Wieczorem zadanie harmonogramu uruchamia ekstraktor na ostatnie cztery dni. Dni z gotowym plikiem pomija, bieżący zawsze odświeża, więc przerwany przebieg dokańcza się sam następnego wieczoru. Każdy plik musi zawierać w treści zadaną datę, inaczej dzień jest odrzucany: lepsza dziura niż wizyty pod złą datą. Błąd jednego dnia nie przerywa reszty.
Kilka zasad, które kosztowały nas najwięcej nauki: daty wyłącznie w formacie ISO, bo 07-08-2026 znaczy co innego w Polsce i w USA, a argumenty będzie kiedyś generował model; twardy limit 62 dni na zakres, żeby literówka nie uruchomiła setek przejść po GUI systemu medycznego; przycisk fizycznej drukarki nie jest klikany nigdy.
Dane pacjentów, RODO i koszty
Przed wysłaniem czegokolwiek do modelu PESEL, imiona, nazwiska, telefony, e-maile i adresy są zamieniane na tokeny w rodzaju OSOBA-0001. Mapowanie zostaje w lokalnej bazie, osobno dla każdego pokoju czatu, a bot podstawia prawdziwe wartości dopiero w odpowiedzi, po stronie przychodni.
Każde zapytanie ląduje w dzienniku audytu: kto, kiedy, o co i za ile. Budżet dzienny liczymy z kosztu, nie z tokenów, bo cache promptu wielokrotnie zawyża ich licznik. Dostęp do danych jest ustalany per dział. Zmiana w trakcie: czat i baza miały stanąć na VPS w UE, ale serwer przychodni okazał się wystarczająco mocny, więc całość stoi u klienta i dane nie opuszczają placówki.
Stan prac i czego się nauczyliśmy
Ekstraktor działa produkcyjnie od września 2026 i eksportuje dzień w około 25 sekund. Pierwsza wersja potrzebowała 4 do 5 minut, bo przeszukiwała całe drzewo kontrolek razem z siatką wizyt; płytkie szukanie z pominięciem tabel dało dziesięciokrotne przyspieszenie. Ładowanie do bazy i czat są w budowie.
Uczciwie: gdyby producent dawał API albo zaplanowany eksport, ekstraktor byłby zbędny i zaczęlibyśmy od czatu. Automatyzacja interfejsu to ostatnia deska, nie pierwszy wybór, i wymaga pilnowania po każdej aktualizacji programu. Tu innej drogi nie było, więc zbudowaliśmy ją tak, żeby wolała się zatrzymać, niż kliknąć coś złego.
Przepływ danych
01Wieczór: harmonogram uruchamia ekstraktor
02Logowanie do systemu gabinetowego na koncie technicznym
03Raport dnia eksportowany do CSV
04Scalanie i kontrola daty w pliku
05Ładowanie do PostgreSQL i do porównywarki ubezpieczeń
06Pytanie w czacie, pseudonimizacja, model AI
07Odpowiedź w kanale działu z przywróconymi danymi
Cel projektu
eksport jednego dnia z systemu gabinetowego
~25 s
zmierzone · zmierzone na serwerze przychodni, wrzesień 2026
danych osobowych wysyłanych do modelu
0
zakres
czat, baza i bot na serwerze przychodni
on-prem
zakres
- Co dalej
Najbliższy krok: zasilanie bazy z nocnych eksportów i czat na produkcji, potem grafik na 60 dni w przód, o który poprosił właściciel. Masz system, który nie oddaje danych? Bezpłatna konsultacja trwa 30 minut, a audyt za 699 zł netto kończy się dokumentem z architekturą, zakresem, ryzykami, stałą ceną i terminem, w całości odliczanym od ceny wdrożenia: napisz do nas.
- Stack
.NET 8
PYTHON
POSTGRESQL
ROCKET.CHAT
CLAUDE API
- Masz podobny proces?
Opisz, co u Ciebie zjada godziny.
Wrócimy w ciągu 4 godzin roboczych z pytaniami albo od razu z propozycją, jak to spiąć. Bez zobowiązań.
5 marketplace'ów EU · faktura do każdego zamówienia
Aplikacja C# .NET obok Subiekta nexo PRO: pobiera zamówienia z Amazon SP-API z pięciu rynków EU, ustala kraj i stawkę VAT i wystawia fakturę przez Sferę.
Producent dachów fotowoltaicznych · WordPress · 24/7
Chatbot na stronie WordPress: zbiera dane o dachu i instalacji, kwalifikuje zapytanie i przekazuje je handlowcowi z kompletem informacji, także w nocy i w weekend.
czas odpowiedzi
< 2 s
przyjmuje zapytania
24/7
do uruchomienia
2 tyg.
NODE.JS
OPENAI API
LANGCHAIN
WORDPRESS
Case
- Zacznijmy
Chcesz taki efekt u siebie?
30-minutowa rozmowa, zero opłat. Powiesz nam, gdzie tracisz godziny, wrócimy z propozycją, ile da się tam odzyskać.