Jaxforms (siehe https://jaxforms.ch/) der Firma XCentric GmbH stellt für den Kt Bern eine Formularlösung für eine Beratungsanmeldung zur verfügung.
Nach Eingabe der Daten landen diese Informationen heute bereits in BISO, in einer "Inbox", von wo aus die Berater dann Fälle erstellen können. Diese Daten sind heute aber beschränkt auf Stammdaten (Personen-Daten), es findet keine Online-Terminfindung statt.
Ziel ist nun, dass sich Ratsuchende online auf einen bestimmten Termin anmelden können: Jaxforms soll also bereits eine Terminauswahl anbieten können, welche dann in BISO bei der Falleröffnung zur Verfügung steht.
Als ersten Schritt werden die freien Termine wie gehabt in BISO erfasst. Ein speziell markiertes Termin-Thema markiert den Termin zur Freigabe im Web.

Die Termine sind nun in BISO verfügbar, und können im Web via Jaxforms zur Auswahl angeboten werden. Nach Abschluss des Jaxform-Formularprozesses landen die eingegebenen Daten inkl. Terminwahl in der BISO-Inbox zur weiteren Bearbeitung. Der Termin wird dabei reserviert.

Nach erfolgter Online-Anmeldungen muss in BISO aus den Inbox-Daten nun ein Fall eröffnet werden. Dies passiert durch eine leichte Anpassung am heutigen Fall-Eröffnungsprozess: Die Eröffnung wird aus der Inbox heraus angestossen, der reservierte Termin aufgeführt.

Auch eine Termin-Absage wird von Jaxforms aus angestossen: Die Ratsuchenden habend die Möglichkeit, den gewählten Termin via URL wieder abzusagen. Der Termin wird, sofern noch möglich, wieder zu einem freien Termin in BISO.

Die Termin-Verschiebung ist eine Kombination aus Termin-Absage und Suche eines neuen Termins: Aus Sicht BISO sind hier keine weiteren Schnittstellen / Abläufe zu planen:
Jaxforms muss die entsprechenden Schritte (Absage, Neuwahl) zusammenfassen und im Frontend entsprechend anzeigen.
Die Architektur sieht vor, dass BISO die notwendigen Daten und Funktionen als REST-Schnittstelle für Jaxforms anbieten kann: BISO stellt somit für alle notwendigen Abfragen / Operationen REST-Services zur Verfügung.
Angestossen wird somit der Prozess immer von Jaxforms aus.. BISO dient als REST-Server, während Jaxforms den REST-Client darstellt.

Aufgrund der gelieferten Spezifikation werden in Jaxforms folgende Daten aus BISO benötigt, welche BISO via Schnittstelle zur Verfügung stellen muss:
getLookupValues(table)): zu definierende Wertelisten (z.B. BIZ-Standorte)getFreeDates(location_id)): BISO liefert die freien Termine nach StandortsendForm(data)): Jaxforms liefert alle FormulardatencancelDate(termin_id)): Jaxforms cancelt einern Termin in BISOEs wird nun notwendig, dass Beratungsfall-Termine Zustände erhalten: Bis anhin
gab es nur 2 Zustände: Frei oder am Beratungsfall zugewiesen. Dies wurde ganz einfach über
den zugewiesenen Beratungsfall ermittelt (bf_termin.beratungsfall_id).
Dies reicht nun nicht mehr aus: Ein Termin muss nun verschiedene Zustände unterscheiden können:

Die API-Schnittstelle bietet verschiedene Entry-Points, welche in folgender OpenAPI-Dokumentation ersichtlich sind:
https://proxy.kadenpartner.ch/biso3/integration/doc/api-doc/dist/
(Quelle: doc/api-doc/).
Dabei sind vor allem folgende Endpoints wichtig / erwähnenswert:
backend/api/jaxforms/getFreieTermine: Liefert die zur Veröffentlichung freigegebenen verfügbaren Termine, nach Filterkriterienbackend/api/jaxforms/sendFormData: die eigentliche Lieferung der Formulardaten: Hochspezifisch für Kt Bern. Diese Daten landen als ImportInbox-Records in BISO.backend/api/jaxforms/cancelTermin: Bereits reservierten Termin wieder cancelnDie Daten, welche Jaxforms and sendFormData liefert sind hochspezifisch, und genau abgestimmt auf die Jaxforms-Lösung. Sie werden als JSON-Datenstruktur geliefert, und im JaxFormsService::parseJsonFormData() geparst.
Eine Beispiellieferung ist hier verlinkt.
TBD: config.php, ...? TBD: Gaia-Kommandos dokumentieren: api-key generieren, routen freigeben