Organizacja (Multigabinet)
Od maja 2026 MIND obsługuje organizacje wielogabinetowe — kliniki, przychodnie i zespoły do 15 specjalistów (psycholog, psychoterapeuta, psychiatra, coach) korzystających z jednej instancji z wspólnym pool-em pacjentów, sesji i dokumentów.
Jak włączyć
Section titled “Jak włączyć”W Ustawienia → Subskrypcja wybierz dodatek „Wielogabinetowość” (89 PLN/mies). Po zapisie MIND automatycznie:
- Tworzy Twoją organizację z Tobą jako administratorem
- Migruje Twoje dotychczasowe dane (pacjenci, sesje, notatki, załączniki, RODO consents) do wspólnego pool-u organizacji
- Dodaje pozycję 🏢 Organizacja w menu bocznym
- Resetuje zgody RODO Twoich pacjentów (status → „outdated”) — należy je odnowić z nowego org-level template
Panel administratora — /organization
Section titled “Panel administratora — /organization”Pięć zakładek (od 2026-05-17):
1. Profil organizacji
Section titled “1. Profil organizacji”Pełne dane podmiotu, które MIND wykorzystuje w nagłówkach aplikacji, na fakturach oraz w dokumentach dla pacjentów.
Identyfikacja:
- Pełna nazwa (np. „Centrum Medyczne ALFA Sp. z o.o.”)
- Krótka nazwa (max 24 znaki) — wyświetlana w pasku bocznym aplikacji obok logo
- Logo organizacji (kwadratowe, max 5 MB) — zastępuje sygnet MIND w nagłówku aplikacji u wszystkich członków organizacji
Dane rejestrowe:
- NIP (10 cyfr, walidacja długości)
- REGON (9 lub 14 cyfr)
- KRS (10 cyfr — opcjonalnie, jeśli organizacja ma osobowość prawną)
Adres siedziby: ulica, kod pocztowy, miasto, kraj.
Dane kontaktowe: e-mail, telefon, strona www, dodatkowo osobny e-mail rozliczeniowy (na który trafiają faktury).
Podmiot leczniczy (toggle): Jeśli organizacja jest wpisana do RPWDL (Rejestr Podmiotów Wykonujących Działalność Leczniczą):
- Numer księgi RPWDL
- Numer komórki organizacyjnej
- Kierownik podmiotu leczniczego (imię i nazwisko)
- Nr PWZ kierownika
2. Członkowie
Section titled “2. Członkowie”Lista wszystkich osób w organizacji z:
- Awatar (zdjęcie z profilu specjalisty)
- Imię i nazwisko + e-mail
- Badge ADMIN dla właściciela
- Przypisane addony (mini-tagi)
- Koszt miesięczny per osoba
Dodaj osobę — wpisujesz adres e-mail + opcjonalnie zaznaczasz addony, które od razu ma otrzymać. Wysyłany jest link zaproszenia na podany adres (ważny 7 dni).
Menu „…” na każdym członku — cztery akcje
Section titled “Menu „…” na każdym członku — cztery akcje”Po kliknięciu w ikonę „…” przy karcie członka dostępne są:
🎛️ Addony — w dowolnym momencie możesz dorzucić lub zabrać dostęp do konkretnych modułów (VoiceBot, Strona WWW, Baza wiedzy itp.). Zmiany od razu propagują się do subscriptions/{uid}.selectedAddons — gating w UI reaguje natychmiast.
🎓 Zawód i typy sesji — admin edytuje:
- Główny zawód członka (psycholog, psychoterapeuta, psychiatra, coach…)
- Dostępne typy sesji — które typy ten specjalista może prowadzić (auto-dopełnione na podstawie zawodu, ale można nadpisać)
Wartości zapisywane do users/{uid}/settings/profile z polem editedByOrgAdmin (kto edytował, kiedy) — pełen ślad audytowy.
🛡️ Mianuj administratorem — przekazanie roli administratora organizacji innej osobie:
- Wybrana osoba staje się adminem (
orgRole='admin') - Obecny admin zostaje zwykłym członkiem (
orgRole='user') - Custom Claims oraz dane org doc (
adminUid) są zaktualizowane - Caveat: aktywna subskrypcja Stripe pozostaje przypisana do starego admina. Aby przenieść billing — stary admin musi anulować subskrypcję, nowy admin rozpocząć własną.
- Akcja wymaga potwierdzenia w dialogu z opisem konsekwencji
- Audit log:
admin_transferred
🗑️ Usuń z organizacji — usunięcie członka z org:
- Członek traci dostęp do danych organizacji
- Pacjenci, sesje, notatki i załączniki utworzone przez tę osobę pozostają w org pool (są nadal własnością organizacji, zgodnie z Q11 spec)
- Custom Claims zostają wyczyszczone, subskrypcja użytkownika „odmrażana” (może rozpocząć własną solo)
- Nie można usunąć siebie ani innego admina (najpierw przekaż uprawnienia)
- Audit log:
member_removed
3. Subskrypcja
Section titled “3. Subskrypcja”Miesięczny rachunek organizacji z breakdown:
| Element | Wartość |
|---|---|
| Liczba osób w org | N / 15 |
| Suma podstawowa + addony | X PLN |
| Rabat (na podstawie liczby osób) | -Y PLN |
| Do zapłaty miesięcznie | X-Y PLN |
Progi rabatowe (dotyczą całej faktury — podstawy + per-user addony, bez samego addonu Wielogabinetowość):
| Liczba osób | Rabat |
|---|---|
| 1-2 | 0% |
| 3-5 | 15% |
| 6-10 | 25% |
| 11-15 | 35% |
Addon „Wielogabinetowość” (89 PLN) doliczany jest do rachunku osobno — bez rabatu, tylko raz na całą organizację.
Co widzi admin na stronie /subscription
Section titled “Co widzi admin na stronie /subscription”Gdy zalogujesz się jako admin organizacji, prawy panel strony Subskrypcja pokazuje rozbicie kosztów zespołu:
Twój plan─────────Plan bazowy: 59 PLN[Twoje addony…]─────────Twój koszt netto: XX PLN
🏢 Zespół · N specjalistówKonta zespołu: YY PLNRabat zespołowy (-25%): -ZZ PLN[Szczegóły zespołu →]
─────────Razem netto: AA PLNVAT 23%: BB PLN─────────ŁĄCZNIE BRUTTO CC PLNZmiany w Twoich addonach reagują na żywo. Zmiany w addonach zespołu — przeładuj stronę po edycji w /organization.
4. Zaproszenia
Section titled “4. Zaproszenia”Lista oczekujących zaproszeń (jeszcze nie zaakceptowanych). Możesz każde odwołać (link w mailu zostaje natychmiast unieważniony).
5. Audit log
Section titled “5. Audit log”Pełna historia akcji administracyjnych:
- 🏢 Utworzenie organizacji (
org_created) - ✏️ Aktualizacja profilu org (
profile_updated) — wraz z listą zmienionych pól - 📨 Wysłane zaproszenia (
invitation_sent) - ❌ Odwołane zaproszenia (
invitation_revoked) - ✅ Dołączenie nowego członka (
member_joined) - 🔧 Edycja addonów członka (
member_addons_updated) - 🎓 Edycja zawodu/typów sesji członka (
member_settings_updated) - 🛡️ Przekazanie uprawnień admina (
admin_transferred) - 🗑️ Usunięcie członka z organizacji (
member_removed)
Wymóg RODO Art. 30 — rejestr czynności przetwarzania.
Zaproszenie osoby do organizacji
Section titled “Zaproszenie osoby do organizacji”Co widzi zaproszony
Section titled “Co widzi zaproszony”Po kliknięciu w link /join-org/{token} w mailu:
- Strona z informacjami o organizacji (nazwa, kto zaprosił, jakie addony przyznano)
- Lista konsekwencji akceptacji:
- Dostęp do wspólnego pool-u pacjentów i sesji organizacji
- Migracja jego dotychczasowych danych do organizacji
- Reset jego dotychczasowych addonów (admin przyzna nowe)
- Reset zgód RODO jego pacjentów (status → outdated)
- Subskrypcja i płatności przechodzą do administratora
- Przycisk „Akceptuję — dołącz do organizacji”
Co dzieje się po akceptacji
Section titled “Co dzieje się po akceptacji”- Wszystkie dane (pacjenci, sesje, notatki, załączniki) zaproszonego specjalisty migrują do org pool
- Sesje zachowują flagę
assignedTowskazującą prowadzącego specjalistę - Wszyscy w organizacji widzą wszystkie sesje (z badge’em kto jest prowadzącym)
- Subskrypcja zaproszonego zostaje zamrożona — admin platnik dalej
- Custom Auth Claims są aktualizowane (orgId, orgRole=‘user’)
Ograniczenia zaproszeń
Section titled “Ograniczenia zaproszeń”❌ Nie można zaprosić osoby która jest administratorem innej organizacji — musi najpierw rozwiązać swoją.
❌ Nie można zaprosić osoby która już jest w innej organizacji — musi z niej wystąpić.
❌ Limit 15 osób w organizacji (admin + 14 user-ów). Po osiągnięciu limitu przycisk „Zaproś osobę” jest wyłączony.
Branding organizacji w aplikacji
Section titled “Branding organizacji w aplikacji”Po wgraniu logo i ustawieniu krótkiej nazwy organizacji, wszyscy członkowie (admin + user-zy) zobaczą w sidebar:
- Kwadratowe logo organizacji w miejscu sygnetu MIND
- Krótką nazwę organizacji obok logo (gdy sidebar jest rozwinięty)
- Mały podpis „organizacja” pod nazwą
Po zwinięciu sidebar-a do wąskiej kolumny — widoczne pozostaje samo logo.
W trybie solo (bez organizacji) sidebar wyświetla „MIND” / „synapsa.app” w dwóch wierszach obok sygnetu aplikacji.
Dziedziczenie subskrypcji
Section titled “Dziedziczenie subskrypcji”Subskrypcja organizacji jest jedna — przypisana do admina. Wszyscy członkowie dziedziczą od niego:
| Pole | Co znaczy |
|---|---|
status | trial / active / cancelled / past_due |
trialEnd | data zakończenia okresu próbnego |
periodEnd | data końca opłaconego okresu |
cancelAtPeriodEnd | czy subskrypcja zakończy się na koniec okresu |
billingInterval | month / year |
Implikacje:
- Jeśli admin jest w trial → wszyscy członkowie też są w trial (do tej samej daty)
- Jeśli adminowi kończy się subskrypcja → członkom również
- Jeśli admin anuluje na koniec okresu → wszyscy członkowie tracą dostęp w tej samej chwili
Synchronizacja dzieje się automatycznie przez Firestore trigger propagate_org_admin_subscription przy każdej zmianie statusu admina.
Co widzi user (osoba podrzędna)
Section titled “Co widzi user (osoba podrzędna)”Po dołączeniu do organizacji jako zwykły członek (orgRole='user'):
Widoczne:
- Dashboard, Pacjenci (org pool), Sesje (org pool), Notatki, Załączniki, Kalendarz, Analityka, Strona WWW (własna), Mindbook, Ustawienia → Profil
Niewidoczne / wyłączone:
- Subskrypcja — rozlicza administrator
- Panel administratora Multigabinet — tylko admin widzi
- Przyjmowanie płatności pacjentów przez Stripe — admin zbiera wszystko
- Migracja z Supabase (oldUid legacy) — niedostępne dla user-ów org
- Edycja szablonu zgód RODO — szablon na poziomie organizacji, admin edytuje
Bezpieczeństwo i RODO
Section titled “Bezpieczeństwo i RODO”Współadministrowanie danymi
Section titled “Współadministrowanie danymi”Organizacja staje się współadministratorem danych pacjentów (RODO art. 26). Wszyscy specjaliści w org widzą wszystkich pacjentów + wszystkie sesje. Wymaga to:
- Wewnętrznego porozumienia o podziale ról administratorskich
- Aktualizacji klauzul informacyjnych dla pacjentów — pacjent musi wiedzieć kto będzie miał dostęp do jego danych
- Odnowienia zgód RODO — po wejściu do organizacji wszystkie istniejące zgody są oznaczane jako outdated; należy wysłać nowe z org-level template
Audit log
Section titled “Audit log”Każda akcja administracyjna (zaproszenie, odwołanie, edycja addonów, dołączenie członka) jest zapisywana w logu organizacji. Niedostępna dla user-ów, tylko dla admina.
Custom Claims w Auth
Section titled “Custom Claims w Auth”Po dołączeniu do organizacji Twój token Firebase Auth otrzymuje pola:
orgId— identyfikator organizacjiorgRole—adminlubuser
Firestore rules używają tych claimów do izolacji danych między organizacjami (członek org A nie widzi org B).
Powiązane
Section titled “Powiązane”- Subskrypcja i addony — gdzie kupujesz “Wielogabinetowość”
- Zgody RODO pacjenta — po dołączeniu do org wszystkie wymagają odnowienia
- Prywatność i RODO — RODO art. 26 (współadministratorzy)