Skip to content

Rozwiązanie organizacji

MIND + MED

Jeśli jesteś administratorem organizacji Multigabinet, masz możliwość jej rozwiązania. Proces jest dwufazowy z 7-dniowym okresem ochronnym, dane są migrowane z powrotem do specjalistów, którzy je utworzyli.

  • Klinika zamyka się lub łączy z inną organizacją
  • Wszyscy specjaliści chcą kontynuować pracę indywidualnie
  • Admin zmienia model rozliczeniowy (np. każdy specjalista płaci osobno)

Faza 1: Zgłoszenie i okres ochronny (7 dni)

Section titled “Faza 1: Zgłoszenie i okres ochronny (7 dni)”
  1. Otwórz aplikację jako admin organizacji
  2. Przejdź do Profil organizacji → Subskrypcja
  3. W sekcji „Niebezpieczna strefa” kliknij „Rozwiąż organizację”
  4. W dialogu potwierdzającym:
    • Wpisz dokładnie nazwę organizacji (zabezpieczenie przed pomyłką)
    • Opcjonalnie powód
  5. Klik Rozwiąż

System:

  • Ustawia organizations/{orgId}.dissolutionScheduledFor = now + 7 dni
  • Wysyła e-mail do wszystkich członków organizacji z informacją o terminie i opcji przejścia na indywidualne konto

W tym okresie cała organizacja wciąż działa normalnie — pacjenci dostępni, sesje/wizyty przechodzą, faktura wciąż generowana. Tylko status dissolutionScheduledFor jest aktywny.

Po 7 dniach scheduled Cloud Function process_pending_org_dissolutions (uruchamiana co 24h) wykonuje:

  1. Migracja danych z org pool z powrotem do twórców:
    • patients/{pid} z orgId → usuwa orgId, zostaje therapistId (twórca)
    • To samo dla: sessions/{sid}, wizyty/{wid}, notes/{nid}, attachments/{aid}
  2. Czyszczenie członków:
    • Wszystkim członkom (admin + non-admin) usuwa orgId, orgRole, orgAddons z users/{uid}
    • Usuwa Custom Claims orgId, orgRole
  3. Bonus trial 30 dni dla non-admin członków:
    • Każdy non-admin member dostaje 30-dniowe trial na pełny plan, żeby zdążył skonfigurować indywidualną subskrypcję
  4. Archiwizacja organizacji:
    • organizations/{orgId}.dissolvedAt = now
    • memberUids = [] (pusty array)
    • status = 'dissolved'
  5. Audit log: wpis org_dissolved (art. 30 RODO)

Admin może anulować rozwiązanie:

  1. Przejdź do Profil organizacji → Subskrypcja
  2. W sekcji „Rozwiązanie zaplanowane” kliknij „Anuluj rozwiązanie”

Cloud Function cancel_org_dissolution wyczyści dissolutionScheduledFor. Organizacja wraca do normalnego stanu.

Pacjenci zostają w systemie, ale ich orgId jest usunięte. Każdy pacjent przechodzi z powrotem do specjalisty, który go utworzył (pole therapistId).

Pytanie: Co jeśli pacjenta utworzyło kilku specjalistów (np. terapeuta A, potem konsultacja u terapeuty B)?

Odpowiedź: W systemie pacjent ma jedno pole therapistId (twórca). Po rozwiązaniu organizacji pacjent trafia do twórcy. Inni specjaliści, którzy mieli z pacjentem sesje/wizyty, wciąż widzą te sesje w swojej karcie pacjenta (każda sesja ma własne therapistId), ale nie widzą innych sesji pacjenta z innymi terapeutami.

Jeśli wymaga to korekty (np. pacjent powinien zostać u terapeuty B, nie A), admin powinien przed rozwiązaniem zaktualizować pole therapistId w karcie pacjenta.

Subskrypcja organizacji zostaje anulowana w Stripe (cancel_at_period_end).

Non-admin członkowie dostają 30-dniowy bonus trial na pełny plan, żeby zdążyli skonfigurować indywidualną subskrypcję bez przerwy w pracy.

Admin organizacji nie dostaje bonus trial — zakłada się, że to on rozwiązał organizację świadomie i ma plan na dalsze działanie.