{"id":"DRK-Kardiologie-1.7.3","projectName":"DRK-Kardiologie-1.7.3","startPassage":"start","passages":[{"_id_":"dates","_x_":2301,"_y_":1100,"name":"dates","tags":["Datum"],"tasks":[{"type":"goto","if":"!$isType()","passage":"start","options":[]},{"type":"msg","typingAnimationTime":500,"options":[{"text":"$appointment_desc"}],"act":[],"btn":[]},{"type":"msg","if":"$isUserRequired($appointment_slug)","options":[{"text":"Dieser Termin kann nur mit einem Samedi-Konto gebucht werden.","if":"$isUserRequired($appointment_slug)"}],"act":[],"btn":[]},{"type":"msg","classname":"samedi-dates","userData":"loadDates","options":[{"text":"Termine $appointment_type","classname":"samedi-dates"}],"act":[],"btn":[]},{"type":"msg","options":[{"text":"\n\n\n"}],"act":[{"text":"Mehr laden|dates|loadMore","if":"$clicks_counter < 3"},{"text":"Zurück zur Terminauswahl|start"}],"btn":[]}]},{"_id_":"times","_x_":2427,"_y_":1100,"name":"times","tags":["Uhrzeit"],"tasks":[{"type":"goto","if":"!$isType()","passage":"start","options":[]},{"type":"goto","if":"!$isDate()","passage":"dates","options":[]},{"type":"msg","classname":"samedi-times","userData":"loadTimes","options":[{"text":"Uhrzeit '$appointment_type' am $appointment_date","classname":"samedi-times"}],"act":[],"btn":[]},{"type":"msg","options":[{"text":""}],"act":[{"text":"Zurück zur Datumsauswahl|dates"}],"btn":[]}]},{"_id_":"booking","_x_":2549,"_y_":1100,"name":"booking","tags":[],"tasks":[{"type":"goto","if":"!$isType()","passage":"start","options":[{"text":"Das ist keine gültige Email-Adresse."}]},{"type":"goto","if":"!$isTime()","passage":"times","options":[{"text":"Das ist keine gültige Email-Adresse."}]},{"type":"msg","classname":"samedi-appointment","options":[{"text":"Termin '$appointment_type'
am $appointment_date um $appointment_time Uhr","classname":"samedi-appointment"}],"act":[],"btn":[]},{"type":"msg","options":[{"text":""}],"act":[],"btn":[{"text":"Anderen Termin wählen|start"}]},{"type":"msg","if":"!($first_name && $last_name && $email)","options":[{"text":"Zur Buchung benötigen wir noch einige Informationen von Ihnen...","if":"!($first_name && $last_name && $email)"}],"act":[],"btn":[]},{"type":"msg","if":"!$first_name","options":[{"text":"Ihr Vorname ist:","if":"!$first_name"}],"act":[],"btn":[]},{"type":"wait","if":"!$first_name","var":"$first_name","options":[{"text":"","if":"!$first_name"}],"act":[],"btn":[],"autocomplete":[]},{"type":"msg","if":"!$last_name","options":[{"text":"Ihr Nachname ist:","if":"!$last_name"}],"act":[],"btn":[]},{"type":"wait","if":"!$last_name","var":"$last_name","options":[{"text":"","if":"!$last_name"}],"act":[],"btn":[],"autocomplete":[]},{"type":"msg","if":"!$email","options":[{"text":"Ihre E-Mail-Adresse lautet:","if":"!$email"}],"act":[],"btn":[]},{"type":"wait","if":"!$email","var":"$email","validate":"$isEmail($msg)","options":[{"text":"Das ist keine gültige Email-Adresse."}],"act":[],"btn":[],"autocomplete":[]},{"type":"msg","if":"!$geburtsdatum","options":[{"text":"Bitte nennen Sie mir noch Ihr Geburtsdatum:","if":"!$geburtsdatum"}],"act":[],"btn":[]},{"type":"wait","if":"!$geburtsdatum","var":"$geburtsdatum","options":[{"text":"","if":"!$geburtsdatum"}],"act":[],"btn":[],"autocomplete":[]},{"type":"msg","options":[{"text":"Name: $first_name $last_name
Email: $email
Geburtsdatum: $geburtsdatum"}],"act":[],"btn":[]},{"type":"msg","options":[{"text":"Wollen Sie Ihre Angaben ändern?"}],"act":[],"btn":[{"text":"Angaben ändern|booking|resetProfile"}]},{"type":"msg","options":[{"text":""}],"act":[{"text":"Jetzt Termin buchen|booked|book","classname":"highlight"}],"btn":[]}]},{"_id_":"booked","_x_":2675,"_y_":1099,"name":"booked","tags":[],"tasks":[{"type":"goto","if":"!$booking_complete","passage":"booking","options":[]},{"type":"msg","img":"https://www.fb-berlin.de/clients/samedi/checked.gif","options":[{"text":""}],"act":[],"btn":[]},{"type":"msg","options":[{"text":"Ihr Termin $appointment_type am $appointment_date um $appointment_time wurde gebucht.
Sie erhalten in Kürze eine E-Mail-Bestätigung an '$email'."}],"act":[],"btn":[]},{"type":"msg","if":"$isType() && $hasPassage($appointment_slug)","options":[{"text":"","if":"$isType() && $hasPassage($appointment_slug)"}],"act":[{"text":"Mehr über $appointment_type erfahren||callTypePassage"},{"text":"Zurück zur Terminauswahl|start"}],"btn":[]},{"type":"msg","if":"!($isType() && $hasPassage($appointment_slug))","userData":"gotoTypePassage","options":[{"text":"","if":"!($isType() && $hasPassage($appointment_slug))"}],"act":[{"text":"Zurück zur Terminauswahl|start"}],"btn":[]},{"type":"msg","options":[{"text":"\n\n\n\n"}],"act":[],"btn":[{"text":"[[Was soll ich mitbringen?|Mitbringen]]"},{"text":"[[Wie komme ich hin?|Anfahrt]]"},{"text":"[[Wie kann ich mich vorbereiten?|Vorbereitung]]"}]}]},{"_id_":"Instructions","_x_":2800,"_y_":1100,"name":"Instructions","tags":["#Hilfe","Instruktionen"],"tasks":[{"type":"msg","options":[{"text":""}],"act":[],"btn":[{"text":"Dokumentation|https://pidoco.github.io/chatbot-drkk/samedi/documentation"}]},{"type":"msg","src":"https://pidoco.github.io/chatbot-drkk/samedi/documentation","options":[{"text":""}],"act":[],"btn":[],"iframe":{"src":"https://pidoco.github.io/chatbot-drkk/samedi/documentation","height":"400"}}]},{"_id_":"Version","_x_":75,"_y_":80,"name":"Version","tags":["version"],"tasks":[{"type":"msg","options":[{"text":"Das ist die Version 1.7.3 erstellt am 01.02.22 um 1230."}],"act":[],"btn":[]}]},{"_id_":"start","_x_":1693,"_y_":101,"name":"start","tags":["Neu","Anfang","Chat-starten","Zum-Anfang","Zurück-zum-Anfang","#Zum-Start"],"tasks":[{"type":"msg","options":[{"text":"Hallo und herzlich Willkommen in der Klinik für Innere Medizin - Kardiologie, DRK Kliniken Berlin Westend."}],"act":[],"btn":[]},{"type":"msg","options":[{"text":"Dieser Buchungsassistent hilft Ihnen, schnell und einfach den passenden Termin bei uns zu finden."}],"act":[],"btn":[]},{"type":"msg","options":[{"text":"Vorweg benötigen wir bitte folgende Information von Ihnen:"}],"act":[],"btn":[]},{"type":"msg","options":[{"text":"\n\n"}],"act":[],"btn":[{"text":"[[Ich bin gesetztlich versichert|Vorfilter]]"}]},{"type":"msg","options":[{"text":"\n\n"}],"act":[],"btn":[{"text":"[[Ich bin privat versichert|Privatpatient]]"}]},{"type":"msg","options":[{"text":"\n\n"}],"act":[],"btn":[{"text":"[[Ich habe akute Beschwerden|Beschwerden]]","classname":"red"}]}]},{"_id_":"Vorfilter","_x_":1678,"_y_":294,"name":"Vorfilter","tags":["Termin-buchen"],"tasks":[{"type":"msg","options":[{"text":"Bitte beachten Sie, dass Sie zur Vorstellung in unserer Klinik eine Verordnung für Krankenhauspflege (Einweisung) benötigen."}],"act":[],"btn":[]},{"type":"msg","img":"plain-einweisung.png","options":[{"text":""}],"act":[],"btn":[]},{"type":"msg","eval":"$einweisung = 'true'","options":[{"text":""}],"act":[],"btn":[]},{"type":"msg","options":[{"text":"Was für einen Termin möchten Sie gerne vereinbaren?"}],"act":[],"btn":[]},{"type":"carousel","carouselItems":[{"title":"Vorgespräch","img":"herz.gif","text":"Rhythmologie","buttons":["[[Termin buchen|rhythmusambulanz]]"]},{"title":"Vorgespräch","img":"berat1.gif","text":"invasive Kardiologie","buttons":["[[Termin buchen|privatsprechstunde]]"]}]}]},{"_id_":"Info-Kardiologie","_x_":1694,"_y_":699,"name":"Info-Kardiologie","tags":["Abteilung-Kardiologie","Fachbereich-Kardiologie","Kardologie","#Infos-zur-Kardiologie","Christian-Opitz","Sascha-Rolf","Silvia-Knoblich","Antje-Sahm","Sahm","Knoblich","Opitz","Chefarzt","Oberarzt","Sekretärin","Sekretär"],"tasks":[{"type":"msg","options":[{"text":"Willkommen in der Klinik für Innere Medizin - Kardiologie, DRK Kliniken Berlin Westend."}],"act":[],"btn":[]},{"type":"msg","options":[{"text":" Mit modernster Technik und einem erfahrenen Team aus hochqualifizierten Ärzten, Schwestern und Pflegern gewährleisten wir die Versorgung von Patienten mit Herz- und Gefäßerkrankungen auf überdurchschnittlich hohem Niveau."}],"act":[],"btn":[]},{"type":"msg","options":[{"text":"Lernen Sie uns kennen:"}],"act":[],"btn":[]},{"type":"carousel","carouselItems":[{"title":"Priv.-Doz. Dr. med. Christian Opitz","img":"01opitz.jpeg","text":"Chefarzt","buttons":[]},{"title":"Priv.-Doz. Dr. med. Sascha Rolf","img":"02rolf.jpeg","text":"Chefarzt","buttons":[]},{"title":"Silvia Knoblich","img":"03knoblich.jpeg","text":"Sekretärin","buttons":[]},{"title":"Antje Sahm","img":"04sahm.jpeg","text":"Abteilungsleitung","buttons":[]}]},{"type":"msg","options":[{"text":"Das gesamte Team finden Sie hier auf unserer Webseite."}],"act":[],"btn":[]},{"type":"msg","options":[{"text":"\n\n\n"}],"act":[{"text":"[[Unsere Schwerpunkte|Schwerpunkte]]"},{"text":"[[Ich habe akute Beschwerden|Beschwerden]]","classname":"red"}],"btn":[]}]},{"_id_":"Schwerpunkte","_x_":1366,"_y_":977,"name":"Schwerpunkte","tags":["Funktionsdiagnostik","Katheterdiagnostik","Katheder","Elektrophysiologie","Elektrotherapie","crt","icd"],"tasks":[{"type":"msg","options":[{"text":"Unser Team hat sich unter anderem auf folgende Schwerpunkte spezialisiert:"}],"act":[],"btn":[]},{"type":"msg","options":[{"text":"\n⚕️ Funktionsdiagnostik
\n⚕️ Invasive Katheterdiagnostik
\n⚕️ Spezialverfahren
\n⚕️ Elektrophysiologie
\n⚕️ Elektrotherapie
\n⚕️ Schrittmacher, ICD und CRT
\n"}],"act":[],"btn":[]},{"type":"msg","options":[{"text":"\nIn der Kardiologie bieten wir folgende Sprechstunden an:\n"}],"act":[],"btn":[]},{"type":"msg","options":[{"text":"\n\n\n\n"}],"act":[{"text":"[[Vorgespräch Rhythmologie|Vorgespräch Rhythmologie]]"},{"text":"[[Vorgespräch invasive Kardiologie |Invasive Kardiologie]]"},{"text":"[[Über die Kardiologie |Info-Kardiologie]]"}],"btn":[]}]},{"_id_":"rhythmusambulanz","_x_":1170,"_y_":556,"name":"rhythmusambulanz","tags":["rhythmusambulanz","herzkatheter","Vorgespräch-Rhythmologie"],"tasks":[{"type":"msg","options":[{"text":"Sie interessieren sich für einen Termin für das Vorgespräch Rhythmologie."}],"act":[],"btn":[]},{"type":"msg","if":"$hasType('001-indikationssprechstunde-herzrhythmusstorungen') && !$isBooked('001-indikationssprechstunde-herzrhythmusstorungen')","options":[{"text":"\n\t\n\t\n","if":"$hasType('001-indikationssprechstunde-herzrhythmusstorungen') && !$isBooked('001-indikationssprechstunde-herzrhythmusstorungen')"}],"act":[],"btn":[{"text":"Zur Buchung|dates|@001-indikationssprechstunde-herzrhythmusstorungen","classname":"samedi-type"},{"text":"[[Infos zur Kardiologie|Info-Kardiologie]]"}]}]},{"_id_":"howto","_x_":307,"_y_":90,"name":"howto","tags":[],"tasks":[{"type":"msg","options":[{"text":"In diesem Bereich erfahren Sie alles rund um die Terminbuchung."}],"act":[],"btn":[]},{"type":"msg","options":[{"text":"Dies ist aktuell nur eine Testinstanz."}],"act":[],"btn":[]},{"type":"msg","options":[{"text":"Alle verfügbaren Termintypen können auch direkt über das Hamburger-Menü erreicht werden."}],"act":[],"btn":[]},{"type":"msg","options":[{"text":"\n\t\n"}],"act":[],"btn":[{"text":"[[Zum Start|Vorfilter]]"}]}]},{"_id_":"Termin buchen Fertig","_x_":2625,"_y_":1298,"name":"Termin buchen Fertig","tags":[],"tasks":[{"type":"msg","options":[{"text":"Ihr Termin $appointment_type am $appointment_date um $appointment_time wurde gebucht.
Sie erhalten in Kürze eine E-Mail-Bestätigung an '$email'."}],"act":[],"btn":[]},{"type":"msg","options":[{"text":"\n\n\n\n"}],"act":[],"btn":[{"text":"[[Was soll ich mitbringen?|Mitbringen]]"},{"text":"[[Wie komme ich hin?|Anfahrt]]"},{"text":"[[Wie kann ich mich vorbereiten?|Vorbereitung]]"}]}]},{"_id_":"Show sent data","_x_":3350,"_y_":1291,"name":"Show sent data","tags":[],"tasks":[{"type":"msg","options":[{"text":"Folgende Daten wurden für die Terminbuchung übermittelt:"}],"act":[],"btn":[]},{"type":"msg","options":[{"text":"Überweisung Info1: $ueberweisung_1"}],"act":[],"btn":[]},{"type":"msg","options":[{"text":"Überweisung Info2: $ueberweisung_2"}],"act":[],"btn":[]},{"type":"msg","options":[{"text":"Überweisung Info3: $ueberweisung_3"}],"act":[],"btn":[]},{"type":"msg","options":[{"text":"Einweisung Info1: $einweisung_1"}],"act":[],"btn":[]},{"type":"msg","options":[{"text":"Einweisung Info2: $einweisung_2"}],"act":[],"btn":[]},{"type":"msg","options":[{"text":"Einweisung Info3: $einweisung_3"}],"act":[],"btn":[]},{"type":"msg","options":[{"text":"Name: $first_name $last_name
Email: $email
Versicherung: $insurance"}],"act":[],"btn":[]},{"type":"msg","options":[{"text":"Sind die Angaben korrekt?"}],"act":[],"btn":[{"text":"Angaben ändern|booking|resetProfile"}]}]},{"_id_":"Mitbringen","_x_":2334,"_y_":1600,"name":"Mitbringen","tags":["#mitbringen"],"tasks":[{"type":"msg","if":"$appointment_slug === '001-indikationssprechstunde-herzrhythmusstorungen'","options":[{"text":"\nFür Ihren Termin zum Vorgespräch Rhythmologie sollten Sie folgende Dinge mitbringen:","if":"$appointment_slug === '001-indikationssprechstunde-herzrhythmusstorungen'"}],"act":[],"btn":[]},{"type":"msg","if":"$appointment_slug === '001-indikationssprechstunde-herzrhythmusstorungen'","options":[{"text":"\n✅ Krankenhaus-Einweisung","if":"$appointment_slug === '001-indikationssprechstunde-herzrhythmusstorungen'"}],"act":[],"btn":[]},{"type":"msg","if":"$appointment_slug === '001-indikationssprechstunde-herzrhythmusstorungen'","options":[{"text":"\n✅ Aktuelle Medikamentenliste","if":"$appointment_slug === '001-indikationssprechstunde-herzrhythmusstorungen'"}],"act":[],"btn":[]},{"type":"msg","if":"$appointment_slug === '001-indikationssprechstunde-herzrhythmusstorungen'","options":[{"text":"\n✅ Für die Beurteilung der Rhythmusstörungen ein Anfalls-EKG bzw. Aufzeichnungen eines Langzeit-EKG’s","if":"$appointment_slug === '001-indikationssprechstunde-herzrhythmusstorungen'"}],"act":[],"btn":[]},{"type":"msg","if":"$appointment_slug === '001-indikationssprechstunde-herzrhythmusstorungen'","options":[{"text":"\n✅ Arztbriefe, Untersuchungsergebnisse und Befunde","if":"$appointment_slug === '001-indikationssprechstunde-herzrhythmusstorungen'"}],"act":[],"btn":[]},{"type":"msg","if":"$appointment_slug === '001-indikationssprechstunde-herzrhythmusstorungen'","options":[{"text":"\n✅ Krankenversicherungskarte","if":"$appointment_slug === '001-indikationssprechstunde-herzrhythmusstorungen'"}],"act":[],"btn":[]},{"type":"msg","if":"$appointment_slug === '001-indikationssprechstunde-herzrhythmusstorungen'","options":[{"text":"\n✅ Personalausweis","if":"$appointment_slug === '001-indikationssprechstunde-herzrhythmusstorungen'"}],"act":[],"btn":[]},{"type":"msg","if":"$appointment_slug === '002-vorgesprach-invasive-kardiologie'","options":[{"text":"\n✅ Krankenhaus-Einweisung","if":"$appointment_slug === '002-vorgesprach-invasive-kardiologie'"}],"act":[],"btn":[]},{"type":"msg","if":"$appointment_slug === '002-vorgesprach-invasive-kardiologie'","options":[{"text":"\n✅ Radiologische Befunde auf CD","if":"$appointment_slug === '002-vorgesprach-invasive-kardiologie'"}],"act":[],"btn":[]},{"type":"msg","if":"$appointment_slug === '002-vorgesprach-invasive-kardiologie'","options":[{"text":"\n✅ Aktuelle Medikamentenliste","if":"$appointment_slug === '002-vorgesprach-invasive-kardiologie'"}],"act":[],"btn":[]},{"type":"msg","if":"$appointment_slug === '002-vorgesprach-invasive-kardiologie'","options":[{"text":"\n✅ Arztbriefe, Untersuchungsergebnisse und Befunde","if":"$appointment_slug === '002-vorgesprach-invasive-kardiologie'"}],"act":[],"btn":[]},{"type":"msg","if":"$appointment_slug === '002-vorgesprach-invasive-kardiologie'","options":[{"text":"\n✅ Krankenversicherungskarte","if":"$appointment_slug === '002-vorgesprach-invasive-kardiologie'"}],"act":[],"btn":[]},{"type":"msg","if":"$appointment_slug === '002-vorgesprach-invasive-kardiologie'","options":[{"text":"\n✅ Personalausweis","if":"$appointment_slug === '002-vorgesprach-invasive-kardiologie'"}],"act":[],"btn":[]},{"type":"msg","options":[{"text":"\n\n\n\n"}],"act":[],"btn":[{"text":"[[Wie komme ich hin?|Anfahrt]]"},{"text":"[[Wie kann ich mich vorbereiten?|Vorbereitung]]"},{"text":"[[Keine weiteren Fragen?|Outro]]"}]}]},{"_id_":"Anfahrt","_x_":2851,"_y_":1511,"name":"Anfahrt","tags":[],"tasks":[{"type":"msg","options":[{"text":"Wie reisen Sie an?"}],"act":[],"btn":[]},{"type":"msg","options":[{"text":"\n\n\n"}],"act":[{"text":"[[Mit den Öffentlichen|ÖPNV]]"},{"text":"[[Mit dem Auto|Car]]"}],"btn":[]}]},{"_id_":"privatsprechstunde","_x_":2153,"_y_":606,"name":"privatsprechstunde","tags":["privatsprechstunde","Sprechstunde","private-sprechstunde","Termin-buchen-invasive-Diagnostik","invasive-Diagnostik"],"tasks":[{"type":"msg","options":[{"text":"Sie interessieren sich für ein Vorgespäch zur invasiven Kardiologie."}],"act":[],"btn":[]},{"type":"msg","if":"$hasType('002-vorgesprach-invasive-kardiologie') && !$isBooked('002-vorgesprach-invasive-kardiologie')","options":[{"text":"\n\t\n\t\n\t\n","if":"$hasType('002-vorgesprach-invasive-kardiologie') && !$isBooked('002-vorgesprach-invasive-kardiologie')"}],"act":[],"btn":[{"text":"Zur Buchung|dates|@002-vorgesprach-invasive-kardiologie","classname":"samedi-type"},{"text":"[[Was muss ich mitbringen|Mitbringen]]"},{"text":"[[Infos zur Kardiologie|Info-Kardiologie]]"}]}]},{"_id_":"Fragen","_x_":2338,"_y_":1301,"name":"Fragen","tags":[],"tasks":[{"type":"msg","options":[{"text":"Willkommen zurück."}],"act":[],"btn":[]},{"type":"msg","options":[{"text":"Ihre Terminbuchung war erfolgreich."}],"act":[],"btn":[]},{"type":"msg","options":[{"text":"Hier finden Sie Antworten rund um alle Fragen zu Ihrem Termin."}],"act":[],"btn":[]},{"type":"msg","options":[{"text":"\n\n\n\n"}],"act":[],"btn":[{"text":"[[Was soll ich mitbringen?|Mitbringen]]"},{"text":"[[Wie komme ich hin?|Anfahrt]]"},{"text":"[[Wie kann ich mich vorbereiten?|Vorbereitung]]"}]}]},{"_id_":"Mein Termin","_x_":405,"_y_":244,"name":"Mein Termin","tags":[],"tasks":[{"type":"msg","if":"$booking_complete","options":[{"text":"Termin '$appointment_type'
am $appointment_date um $appointment_time Uhr","if":"$booking_complete"}],"act":[],"btn":[]},{"type":"msg","if":"!$booking_complete","options":[{"text":"Sie haben noch keinen Termin gebucht.","if":"!$booking_complete"}],"act":[],"btn":[]},{"type":"msg","if":"!$booking_complete","options":[{"text":"\n\t\n","if":"!$booking_complete"}],"act":[],"btn":[{"text":"[[Zur Übersicht|Vorfilter]]"}]}]},{"_id_":"ÖPNV","_x_":2814,"_y_":1685,"name":"ÖPNV","tags":["Öffentliche-Verkehrsmittel","#BVG","Öffentlicher-Nachverkehr","Bus","S-Bahn","U-Bahn","Tram"],"tasks":[{"type":"msg","options":[{"text":"Unser Krankenhaus erreichen Sie mit den S-Bahn-Linien 🚃 S41, 🚃 S42 und 🚃 S46 - Haltestelle 🚏 Westend."}],"act":[],"btn":[]},{"type":"msg","options":[{"text":"Unmittelbar vor dem Krankenhaus an der Haltestelle DRK-Krankenhaus Westend hält die Buslinie 🚌 M45."}],"act":[],"btn":[]},{"type":"msg","options":[{"text":"\n\n\n"}],"act":[],"btn":[{"text":"[[Wo finde ich die Kardiologie?|Lageplan Kardiologie]]"},{"text":"[[Keine weiteren Fragen?|Outro]]"}]}]},{"_id_":"Car","_x_":3096,"_y_":1702,"name":"Car","tags":["#Auto","Autobahn","Parkplatz"],"tasks":[{"type":"msg","src":"https://maps.google.com/maps?q=Spandauer%20Damm%20130,%2014050%20Berlin&t=&z=13&ie=UTF8&iwloc=&output=embed","height":600,"options":[{"text":" "}],"act":[],"btn":[],"iframe":{"src":"https://maps.google.com/maps?q=Spandauer%20Damm%20130,%2014050%20Berlin&t=&z=13&ie=UTF8&iwloc=&output=embed","height":"600"}},{"type":"msg","options":[{"text":"\n\n\n"}],"act":[],"btn":[{"text":"[[Wo finde ich die Kardiologie?|Lageplan Kardiologie]]"},{"text":"[[Keine weiteren Fragen?|Outro]]"}]}]},{"_id_":"Westend-Notaufnahme","_x_":2761,"_y_":632,"name":"Westend-Notaufnahme","tags":[],"tasks":[{"type":"msg","options":[{"text":"Die Notaufnahme befindet sich im ..."}],"act":[],"btn":[]},{"type":"msg","img":"https://www.fb-berlin.de/clients/samedi/Closeup-Westend-Notaufnahme.gif","options":[{"text":""}],"act":[],"btn":[]}]},{"_id_":"Lageplan Kardiologie","_x_":2588,"_y_":1925,"name":"Lageplan Kardiologie","tags":["#Lageplan-Kardiologie"],"tasks":[{"type":"msg","options":[{"text":"Anmeldung vor Ort: Bitte melden Sie sich in der Zentralen Aufnahme im Haus E \"Hochhaus\", Eingang E0 mit Ihrer Einweisung an."}],"act":[],"btn":[]},{"type":"msg","img":"https://www.drk-kliniken-berlin.de/fileadmin/user_upload/Klinikum/Westend/Einrichtungen-Bilder/lageplan-kardiologie-neu.gif","options":[{"text":"\n"}],"act":[],"btn":[]},{"type":"msg","options":[{"text":"\n\n\n\n"}],"act":[],"btn":[{"text":"[[Was soll ich mitbringen?|Mitbringen]]"},{"text":"[[Wie kann ich mich vorbereiten?|Vorbereitung]]"},{"text":"[[Keine weiteren Fragen?|Outro]]"}]}]},{"_id_":"Vorbereitung","_x_":2574,"_y_":1555,"name":"Vorbereitung","tags":["#vorbereitung"],"tasks":[{"type":"msg","if":"$appointment_slug === '001-indikationssprechstunde-herzrhythmusstorungen'","options":[{"text":"\nFür Ihren Termin zum Vorgespräch Rhythmologie sollten Sie folgende Dinge beachten:","if":"$appointment_slug === '001-indikationssprechstunde-herzrhythmusstorungen'"}],"act":[],"btn":[]},{"type":"msg","if":"$appointment_slug === '001-indikationssprechstunde-herzrhythmusstorungen'","options":[{"text":"\n❗Die Rhythmus-Sprechstunde ist eine Indikationssprechstunde.","if":"$appointment_slug === '001-indikationssprechstunde-herzrhythmusstorungen'"}],"act":[],"btn":[]},{"type":"msg","if":"$appointment_slug === '001-indikationssprechstunde-herzrhythmusstorungen'","options":[{"text":"\n❗ Zur Beantwortung der Frage, ob die Katheterablation oder ein anderes Behandlungskonzept für Ihre Herzrhythmusstörungen in Frage kommt, bieten wir eine Rhythmus-Sprechstunde an.","if":"$appointment_slug === '001-indikationssprechstunde-herzrhythmusstorungen'"}],"act":[],"btn":[]},{"type":"msg","if":"$appointment_slug === '001-indikationssprechstunde-herzrhythmusstorungen'","options":[{"text":"\n❗Sehr viel Wert legen wir dabei auf eine detaillierte Anamnese und genaue Aufklärung des Patienten über seine Rhythmusstörung und Chancen und Risiken der Therapie.","if":"$appointment_slug === '001-indikationssprechstunde-herzrhythmusstorungen'"}],"act":[],"btn":[]},{"type":"msg","if":"$appointment_slug === '002-vorgesprach-invasive-kardiologie'","options":[{"text":"\nFür Ihren Termin zur invasiven Kardiologie sollten Sie folgende Dinge beachten:","if":"$appointment_slug === '002-vorgesprach-invasive-kardiologie'"}],"act":[],"btn":[]},{"type":"msg","if":"$appointment_slug === '002-vorgesprach-invasive-kardiologie'","options":[{"text":"\n❗ In einem Vorgespräch werden Sie über die Chancen und Risikofaktoren der geplanten Therapien aufgeklärt und wir stehen Ihnen für Fragen zur Verfügung. ","if":"$appointment_slug === '002-vorgesprach-invasive-kardiologie'"}],"act":[],"btn":[]},{"type":"msg","options":[{"text":"\n\n\n\n"}],"act":[],"btn":[{"text":"[[Was soll ich mitbringen?|Mitbringen]]"},{"text":"[[Wie komme ich hin?|Anfahrt]]"},{"text":"[[Keine weiteren Fragen?|Outro]]"}]}]},{"_id_":"Vorgespräch Rhythmologie","_x_":1156,"_y_":1425,"name":"Vorgespräch Rhythmologie","tags":["#Vorgespräch-Rhythmologie"],"tasks":[{"type":"msg","options":[{"text":"\nDas Vorgespräch Rhythmologie ist eine Indikationssprechstunde.\n"}],"act":[],"btn":[]},{"type":"msg","options":[{"text":"\nZur Beantwortung der Frage, ob die Katheterablation oder ein anderes Behandlungskonzept für Ihre Herzrhythmusstörungen in Frage kommt, bieten wir Ihnen dieses Vorgespräch Rhythmologie an. \n"}],"act":[],"btn":[]},{"type":"msg","options":[{"text":"\nSehr viel Wert legen wir dabei auf eine detaillierte Anamnese und genaue Aufklärung des Patienten über seine Rhythmusstörung und Chancen und Risiken der Therapie.\n"}],"act":[],"btn":[]},{"type":"msg","options":[{"text":"\nBitte beachten Sie, dass Sie folgende Dinge zu Ihrem Termin mitbringen sollten:\n"}],"act":[],"btn":[]},{"type":"msg","options":[{"text":"\n✅ Krankenhaus-Einweisung\n"}],"act":[],"btn":[]},{"type":"msg","options":[{"text":"\n✅ Aktuelle Medikamentenliste\n"}],"act":[],"btn":[]},{"type":"msg","options":[{"text":"\n✅ Für die Beurteilung der Rhythmusstörungen ein Anfalls-EKG bzw. Aufzeichnungen eines Langzeit-EKG’s\n"}],"act":[],"btn":[]},{"type":"msg","options":[{"text":"\n✅ Arztbriefe, Untersuchungsergebnisse und Befunde\n"}],"act":[],"btn":[]},{"type":"msg","options":[{"text":"\n✅ Krankenversicherungskarte\n"}],"act":[],"btn":[]},{"type":"msg","options":[{"text":"\n✅ Personalausweis\n"}],"act":[],"btn":[]},{"type":"msg","options":[{"text":" \n\n\n"}],"act":[],"btn":[{"text":"[[Termin buchen|rhythmusambulanz]]"},{"text":"[[Zurück|Schwerpunkte]]"}]}]},{"_id_":"Invasive Kardiologie","_x_":1561,"_y_":1414,"name":"Invasive Kardiologie","tags":["#Invasive-Kardiologie"],"tasks":[{"type":"msg","options":[{"text":"\nIn einem Vorgespräch werden Sie über die Chancen und Risikofaktoren der geplanten Therapien aufgeklärt und wir stehen Ihnen für Fragen zur Verfügung. \n"}],"act":[],"btn":[]},{"type":"msg","options":[{"text":"\nBitte beachten Sie, dass Sie folgende Dinge zu Ihrem Termin mitbringen sollten:\n"}],"act":[],"btn":[]},{"type":"msg","options":[{"text":"\n✅ Krankenhaus-Einweisung\n"}],"act":[],"btn":[]},{"type":"msg","options":[{"text":"\n✅ Radiologische Befunde auf CD\n"}],"act":[],"btn":[]},{"type":"msg","options":[{"text":"\n✅ Aktuelle Medikamentenliste\n"}],"act":[],"btn":[]},{"type":"msg","options":[{"text":"\n✅ Arztbriefe, Untersuchungsergebnisse und Befunde\n"}],"act":[],"btn":[]},{"type":"msg","options":[{"text":"\n✅ Krankenversicherungskarte\n"}],"act":[],"btn":[]},{"type":"msg","options":[{"text":"\n✅ Personalausweis\n"}],"act":[],"btn":[]},{"type":"msg","options":[{"text":" \n\n\n"}],"act":[],"btn":[{"text":"[[Termin buchen|privatsprechstunde]]"},{"text":"[[Zurück|Schwerpunkte]]"}]}]},{"_id_":"Beschwerden","_x_":800,"_y_":822,"name":"Beschwerden","tags":["Herzinfarkt","Notfall","Atemnot","Ich-habe-Schmerzen","Notarzt","#Akute-Beschwerden"],"tasks":[{"type":"msg","options":[{"text":"Bei akuten Beschwerden bitte sofort den Notarzt rufen! 112"}],"act":[],"btn":[]},{"type":"msg","options":[{"text":"Ein Herzinfarkt lässt sich in den meisten Fällen durch folgende Alarmzeichen erkennen:"}],"act":[],"btn":[]},{"type":"msg","options":[{"text":"\n❗Schwere, länger als fünf Minuten anhaltende Schmerzen im Brustkorb, die in Arme, Schulterblätter, Hals, Kiefer, Oberbauch ausstrahlen können."}],"act":[],"btn":[]},{"type":"msg","options":[{"text":"\n❗Starkes Engegefühl, heftiger Druck, Brennen im Brustkorb, Atemnot.\n"}],"act":[],"btn":[]},{"type":"msg","options":[{"text":"\n❗Zusätzlich: Übelkeit, Brechreiz, Angst.\n"}],"act":[],"btn":[]},{"type":"msg","options":[{"text":"\n❗Schwächegefühl (auch ohne Schmerz), Bewusstlosigkeit.\n"}],"act":[],"btn":[]},{"type":"msg","options":[{"text":"\n❗Blasse, fahle Gesichtsfarbe, kalter Schweiß.\n"}],"act":[],"btn":[]},{"type":"msg","options":[{"text":"\n❗Nächtliches Erwachen mit Schmerzen im Brustkorb ist ein besonderes Alarmzeichen.\n"}],"act":[],"btn":[]},{"type":"msg","options":[{"text":"\n❗Ausgeprägte Atemnot.\n"}],"act":[],"btn":[]},{"type":"msg","options":[{"text":"\n\n"}],"act":[],"btn":[{"text":"[[Termin buchen|Vorfilter]]"}]},{"type":"msg","options":[{"text":"\n\n"}],"act":[],"btn":[{"text":"[[Infos zur Kardiologie|Info-Kardiologie]]"}]}]},{"_id_":"Corona","_x_":2500,"_y_":573,"name":"Corona","tags":["#corona"],"tasks":[{"type":"msg","options":[{"text":"\nSicher ins Krankenhaus während der Corona-Pandemie? \n"}],"act":[],"btn":[]},{"type":"msg","options":[{"text":"\nWir erklären Ihnen auf der DRK Kliniken Berlin Webseite wie wir Sie schützen und wie Sie uns dabei unterstützen können.\n"}],"act":[],"btn":[]},{"type":"msg","options":[{"text":"\n\t\n"}],"act":[],"btn":[{"text":"[[Zur Webseite|https://www.drk-kliniken-berlin.de/patientensicherheit-coronavirus]]"}]}]},{"_id_":"Privatpatient","_x_":421,"_y_":555,"name":"Privatpatient","tags":["#Privatpatient"],"tasks":[{"type":"msg","options":[{"text":"Als Privatpatient melden Sie sich bitte im Sekretariat unter der (030) 3035 - 4305."}],"act":[],"btn":[]},{"type":"msg","options":[{"text":"\n\t\n\n"}],"act":[],"btn":[{"text":"[[Zurück zum Start|start]]"},{"text":"[[Keine weiteren Fragen? |Outro]]"}]}]},{"_id_":"Outro","_x_":1688,"_y_":1816,"name":"Outro","tags":["#Outro","Auf-wiedersehen"],"tasks":[{"type":"msg","options":[{"text":"\nVielen Dank für Ihren Besuch.\n"}],"act":[],"btn":[]},{"type":"msg","options":[{"text":"\nAuf der Webseite von der Klinik für Innere Medizin - Kardiologie, DRK Kliniken Berlin Westend finden Sie noch weitere hilfreiche Informationen.\n"}],"act":[],"btn":[]},{"type":"msg","options":[{"text":"\nAuf Wiedersehen und bleiben Sie gesund.\n"}],"act":[],"btn":[]},{"type":"msg","options":[{"text":"\n\n"}],"act":[],"btn":[{"text":"[[Zur Webseite|https://www.drk-kliniken-berlin.de/kardiologie-westend/]]"}]}]},{"_id_":"UNMATCHED","_x_":66,"_y_":311,"name":"UNMATCHED","tags":[],"tasks":[{"type":"msg","options":[{"text":"Entschuldigen Sie. Das habe ich leider nicht verstanden."},{"text":"Könnten Sie die Frage vielleicht anders/kürzer formulieren?"},{"text":"Tut mir leid, das verstehe ich so nicht. Könnten Sie Ihr Anliegen bitte kürzer ausdrücken?"},{"text":"Ich bin nicht sicher, ob ich Sie gerade richtig verstehe, können Sie das kürzer formulieren?"},{"text":"Entschuldigen Sie. Ich weiß gerade nicht, was Sie meinen."},{"text":"Diese Formulierung habe ich leider nicht verstanden."}],"act":[],"btn":[]}]},{"_id_":"CHOOSE PASSAGE","_x_":180,"_y_":311,"name":"CHOOSE PASSAGE","tags":[],"tasks":[{"type":"msg","options":[{"text":"Folgende Themen könnten dazu passen:"},{"text":"Vielleicht hilft Ihnen eines von diesen Themen?"},{"text":"Dazu habe ich Folgendes gefunden:"},{"text":"Hmmm. Meinten Sie das?"},{"text":"Darüber weiß ich Folgendes:"}],"act":[],"btn":[]}]},{"_id_":"Verabschiedung","_x_":66,"_y_":196,"name":"Verabschiedung","tags":["Tschüss","Tschüs","Bye","Bot-beenden","Wiedersehen","Ciao","Baba","Wirsing","Machs-gut","Adele","Bleib-gesund","Anwendung-schließen","Tschö"],"tasks":[{"type":"msg","options":[{"text":"Tschüss."},{"text":"Auf Wiedersehen."},{"text":"Bis bald."},{"text":"Bis zum nächsten Mal."},{"text":"Auf bald!"},{"text":"Bleiben Sie gesund."}],"act":[],"btn":[]},{"type":"goto","passage":"[[start]]","options":[]}]},{"_id_":"Danke","_x_":181,"_y_":430,"name":"Danke","tags":["#Danke","ich-danke-dir","dankeschön","ok-danke","super,-danke"],"tasks":[{"type":"msg","options":[{"text":"Sehr gerne!"},{"text":"Freut mich, dass ich helfen konnte."},{"text":"Immer wieder gerne."}],"act":[],"btn":[]},{"type":"msg","options":[{"text":"Haben Sie noch eine Frage?"}],"act":[],"btn":[]},{"type":"msg","options":[{"text":"\n\n"}],"act":[],"btn":[{"text":"[[Von Vorne|start]]"}]}]},{"_id_":"BAD LANGUAGE","_x_":65,"_y_":430,"name":"BAD LANGUAGE","tags":["Arschloch","Arsch","Archloch","Wichser","Ficken","Kacke","Scheisse","Fotze","Du-bist-doof","Leck-mich-am-Arsch","Kuh","Depp","Miststück","Fick-dich","Ficker","Idiot","Hurensohn","Blödmann","Pillermann","Pimmel","Geh-scheissen","Du-kannst-mich-mal","Zieh-dich-aus","Mach-dich-nackig","Bist-du-schwul?","Kack","Du-bist-nutzlos","Trottel","Scheiss-Roboter","Schwanz","Sex","Lächerlich","bumsen","Votze"],"tasks":[{"type":"msg","options":[{"text":"Ich muss doch sehr bitten!"},{"text":"Das ist aber nicht nett."},{"text":"Ich werde ja ganz rot."},{"text":"Tsss. Tsss."},{"text":"Ich bin schockiert."},{"text":"Das ist aber nicht die feine englische Art."},{"text":"Wie bitte? Ich muss mich verhört haben."}],"act":[],"btn":[]}]},{"_id_":"Sinn des Lebens","_x_":65,"_y_":551,"name":"Sinn des Lebens","tags":["Sinn-des-Lebens","Was-ist-der-Sinn-des-Lebens","Lebenssinn","Sinn-leben","Was-ist-der-Sinn"],"tasks":[{"type":"msg","options":[{"text":"Ganz klar: 42 😄"}],"act":[],"btn":[]}]}],"script":"var w = typeof window === 'undefined' ? global : window;\n\nvar isRunningInBrowser = typeof window !== 'undefined';\n\nw._chattbotteryPluginUrls = ['https://web-runtime.chatbottery.com/plugins/plugin.web.ga-tracking.v1.js']\n\nconst API_KEY = 'ibgyckxkkquu7wc89nk35v5i4air2rp';\nconst API_URL = 'https://proxy.chatbottery.com/samedi/';\nconst CLIENT_ID = '65d9ekeqsmv2ae6yluybxoxtfqs6zwv';\nconst CLINIC_ID = 'r5gsz2qemkk1bszd';\nconst LIMIT_DATES = 14;\nconst MILLISEC_PER_DAY = 86400000;\n\nconst apiParams = () => `?client_id=${CLIENT_ID}&practice_id=${CLINIC_ID}&api_key=${API_KEY}`;\n\nconst dateFormat = (timestamp) => {\n const date = new Date(timestamp);\n return date.toLocaleDateString('de-DE', { weekday: 'short', day: 'numeric', month: 'numeric' });\n};\n\nconst timeFormat = (timestamp) => {\n const date = new Date(timestamp);\n return date.toLocaleTimeString('de-DE', {hour: 'numeric', minute: 'numeric'});\n};\n\nconst findPassage = (slug, passages) => {\n return passages.find(passage => slug === passage.name);\n // return passages.find(passage => passage.tags.some(tag => slug === tag.replace(/[@#]*(\\w+)/, '$1')));\n};\n\nconst samedi = {\n types: [],\n categories: {},\n insurances: [],\n booked: [],\n loadTypes: () => {\n const url = API_URL + 'event_categories' + apiParams();\n return fetch(url, { method: 'GET', headers: { \"Accept\": \"application/json\" } })\n .then(response => {\n if (!response.ok) {\n throw('Could not read data from ' + url + ' - status: ' + response.status);\n }\n return response.json();\n })\n .then(response => {\n const data = response.data || [];\n data.forEach(category => samedi.categories[category.id] = category);\n return Promise.all(data.map((category, index) => {\n const url = API_URL + 'event_types' + apiParams() + `&event_category_id=${category.id}`;\n return fetch(url, { method: 'GET', headers: { \"Accept\": \"application/json\" } })\n .then(response => {\n if (!response.ok) {\n throw `Error on GET '${url}' - status: ${response.status}`;\n } else {\n return response.json();\n }\n })\n .catch(error => console.error(`Could not read event types from category ${data[index]}.`, error));\n }))\n .then(values => {\n values.forEach((response, index) => {\n const types = (response.data || []); // .filter(type => !type.attendant_user_required);\n if (types.length > 0) {\n types.forEach(type => type['category'] = data[index].id);\n samedi.types.push.apply(samedi.types, types);\n }\n });\n });\n })\n .then(() => {\n const url = API_URL + 'insurances' + apiParams();\n return fetch(url, { method: 'GET', headers: { \"Accept\": \"application/json\" } })\n .then(response => {\n if (!response.ok) {\n throw `Error on GET ${url} - status: ${response.status}`;\n }\n return response.json();\n })\n .then(data => samedi.insurances = data || [])\n .catch(error => console.error(`Could not read insurances.`, error));\n });\n }\n};\n\nfunction initUserDataProps(user) {\n user.$clinic = \"Beispielklinik ABC\";\n user.$first_name = undefined;\n user.$last_name = undefined;\n user.$email = undefined;\n user.$insurance = undefined;\n user.$booking_complete = false;\n user.$appointment_type = undefined;\n user.$appointment_slug = undefined;\n user.$appointment_desc = undefined;\n user.$appointment_date = undefined;\n user.$appointment_time = undefined;\n\tuser.$einweisung = undefined;\n\tuser.$ueberweisung = undefined;\n\tuser.$einweisung_1 = undefined;\n\tuser.$einweisung_2 = undefined;\n\tuser.$einweisung_3 = undefined;\n\tuser.$ueberweisung_1 = undefined;\n\tuser.$ueberweisung_2 = undefined;\n\tuser.$ueberweisung_3 = undefined;\n\tuser.$platzangst = undefined;\n\tuser.$schwanger = undefined;\n\tuser.$beeintraechtigt = undefined;\n\tuser.$geburtsdatum = undefined;\n}\n\nfunction onChatbotteryRuntimeLoaded(runtime) {\n\n\n\n const menuItems = [\n {\n title: '🏠 Start',\n goto: 'start'\n },\n {\n title: '📅 Alle Termintypen',\n goto: 'Vorfilter'\n },\n {\n title: '🙋 Mein Termin',\n goto: 'Mein Termin'\n },\n {\n title: '🚨 Notfall',\n goto: 'Beschwerden'\n },\n {\n title: '😷 Corona-Regeln',\n goto: 'Corona'\n }\n];\n\nconst config = {\n position: 'HEADER'\n\t};\n\n\truntime.createPersistentMenu(menuItems, config);\n\n // SET a base url to grab the images & videos\n // (otherwise pics would not show in twine tool)\n runtime.assetBaseUrl = \"https://www.fb-berlin.de/projects/drk/\";\n\n const user = runtime.userData;\n\n user.$test = false;\n user.$storeUserDataInLocalStorage = true;\n\n const loadAppointment = (type, paginate) => {\n const now = paginate ? user.$fetched_appointments_to_date : Date.now();\n const from = new Date(now + MILLISEC_PER_DAY).toISOString().slice(0, 10);\n const twoWeeks = now + MILLISEC_PER_DAY * LIMIT_DATES;\n const to = new Date(twoWeeks).toISOString().slice(0, 10);\n user.$fetched_appointments_to_date = twoWeeks;\n if (!type) {\n throw `Appointment type not found.`;\n }\n user.resetAppointment();\n samedi.type = type;\n samedi.dates = [];\n const url = API_URL + 'dates' + apiParams() + `&event_category_id=${samedi.type.category}&event_type_id=${samedi.type.id}&from=${from}&to=${to}`;\n return fetch(url, { method: 'GET', headers: { \"Accept\": \"application/json\" } })\n .then((response) => {\n if (!response.ok) {\n throw('Could not read data from ' + url + ' - status: ' + response.status);\n }\n return response.json();\n })\n .then((response) => {\n const limit = { from: Date.parse(from), to: Date.parse(to) + MILLISEC_PER_DAY };\n samedi.dates = (response.data || [])\n .filter(date => date.available)\n .map(date => Date.parse(date.date))\n .filter(date => date >= limit.from && date < limit.to);\n user.$appointment_type = samedi.type.name;\n user.$appointment_slug = samedi.type.slug;\n user.$appointment_desc = String(samedi.type.description).replace(/\\x0a/g, \"
\").replace(/\\x0d/g, \"\").replace(/\\s/g, \" \");\n user.$appointment_date = undefined;\n user.$appointment_time = undefined;\n })\n .catch((error) => {\n console.error('Error loading ' + url, error);\n });\n };\n\n user.resetProfile = () => {\n user.$first_name = undefined;\n user.$last_name = undefined;\n user.$email = undefined;\n user.$geburtsdatum = undefined;\n user.$insurance = undefined;\n };\n\n user.resetAppointment = () => {\n user.$booking_complete = false;\n user.$appointment_type = undefined;\n user.$appointment_slug = undefined;\n user.$appointment_desc = undefined;\n user.$appointment_date = undefined;\n user.$appointment_time = undefined;\n };\n\n user.loadInsurances = (task) => {\n const insurances = Object.values(samedi.insurances);\n task['autocomplete'] = insurances.map(insurance => ({\n text: insurance.name,\n value: insurance.id,\n }));\n };\n\n user.loadTypes = (msg) => {\n user.$clicks_counter = 0;\n msg.btn = samedi.types.map(type => ({\n text: `${type.name}|dates|loadType`,\n classname: 'samedi-type' + (type.attendant_user_required ? ' user-required' : ''),\n }));\n };\n\n user.loadType = (referrer, link) => {\n return loadAppointment(samedi.types.find(type => type.name === link.linkText));\n };\n\n user.loadDates = (msg) => {\n if (!samedi.dates.length) {\n msg.options = [{text: `Es wurden leider keine freien Termine in den nächsten ${LIMIT_DATES} gefunden.`}]\n } else {\n msg.btn = samedi.dates.map(date => ({\n classname: \"samedi-date\",\n text: `${dateFormat(date)}|times|loadDate`,\n }));\n }\n };\n\n user.loadDate = (referrer, link) => {\n samedi.date = samedi.dates.find(ts => dateFormat(ts) === link.linkText);\n if (!samedi.date) {\n throw `Could not find date ${link.linkText}`;\n }\n const date = new Date(samedi.date);\n const dstr = date.toISOString().slice(0, 10);\n const url = API_URL + 'times' + apiParams() + `&event_category_id=${samedi.type.category}&event_type_id=${samedi.type.id}&date=${dstr}`;\n return fetch(url, { method: 'GET', headers: { \"Accept\": \"application/json\" } })\n .then((response) => {\n if (!response.ok) {\n throw('Could not read data from ' + url + ' - status: ' + response.status);\n }\n return response.json();\n })\n .then((response) => {\n samedi.times = (response.data || [])\n .map(time => time.time)\n // .filter(time => dstr === time.slice(0, 10))\n .map(time => new Date(time).getTime());\n user.$appointment_date = date.toLocaleDateString('de-DE');\n user.$appointment_time = undefined;\n })\n .catch((error) => {\n console.error('Error loading ' + url, error);\n });\n };\n\n user.loadTimes = (msg) => {\n if (!samedi.times.length) {\n msg.options = [{text: `Es wurden leider keine freien Zeiten am ${user.$appointment_date} gefunden.`}]\n } else {\n msg.btn = samedi.times.map(time => ({\n classname: \"samedi-time\",\n text: `${timeFormat(time)}|booking|loadTime`,\n }));\n }\n };\n\n user.loadTime = (referrer, link) => {\n samedi.time = samedi.times.find(ts => timeFormat(ts) === link.linkText);\n if (!samedi.time) {\n throw `Could not find time ${link.linkText}`;\n }\n user.$appointment_time = new Date(samedi.time).toLocaleTimeString('de-DE', { hour: '2-digit', minute: '2-digit' });\n };\n\n user.loadMore = (referrer, link) => {\n if (!user.$clicks_counter) {\n user.$clicks_counter = 1;\n }\n const type = samedi.types.find(type => type.name === user.$appointment_type);\n user.$clicks_counter += 1;\n return loadAppointment(type, true);\n }\n\n user.book = () => {\n if (!samedi.type)\n throw 'Event type was not specified!';\n if (!samedi.time)\n throw 'Appointment time was not specified!';\n if (!(user.$first_name && user.$last_name && user.$email))\n throw 'Personal user information were not specified!';\n const insurance = user.$insurance && Object.values(samedi.insurances).find(insurance => insurance.name === user.$insurance);\n /* if (!insurance)\n throw 'Insurance was not specified!'; */\n user.$booking_complete = false;\n const url = API_URL + 'book';\n const date = new Date(samedi.time);\n const payload = {\n client_id: CLIENT_ID,\n api_key: API_KEY,\n practice_id: CLINIC_ID,\n starts_at: date.toISOString(),\n event_category_id: samedi.type.category,\n event_type_id: samedi.type.id,\n insurance_id: insurance ? insurance.id : 0,\n do_notification: true,\n attendant: {\n data: {\n first_name: user.$first_name,\n last_name: user.$last_name,\n email: user.$email,\n },\n },\n };\n\n\t\tvar comment = user.$insurance ? 'Versicherung: ' + user.$insurance + '\\n' : '';\n if (user.$einweisung) {\n comment = comment + 'Geburtsdatum: ' + user.$geburtsdatum;\n } else if (user.$ueberweisung) {\n comment = comment + 'Überweisung Diagnose: ' + user.$ueberweisung_1 + ' / Überweisung Untersuchungsergebnisse: ' + user.$ueberweisung_2 + ' / Überweisung Befunde: ' + user.$ueberweisung_3;\n }\n if (comment) {\n payload.comments = comment; /*['structured_comment'] = {\n '_default': comment\n };*/\n }\n return fetch(url, {\n method: 'POST',\n headers: {\n 'content-type': 'application/json',\n 'accept': 'application/json',\n },\n body: JSON.stringify(payload),\n })\n .then(response => {\n if (!response.ok) {\n return response.json().then(data => {\n const error = JSON.stringify(data);\n throw `Fehler beim Buchen des Termins ${user.$appointment_type} am ${date.toLocaleString('de-DE')}\\n${response.status} - ${error}`;\n });\n }\n user.$booking_complete = true;\n samedi.booked.push(samedi.type.id);\n // alert(`Der Termin '${user.$appointment_type}' am ${date.toLocaleString('de-DE')} wurde gebucht.\\nDu wirst in Kürze eine Email-Nachricht zur Bestätigung erhalten.`)\n })\n .catch(error => {\n console.error('Error sending ' + url, error, payload);\n alert(error);\n });\n };\n\n user.callTypePassage = (referrer, link) => {\n const npc = user._getNpc();\n const passage = samedi.type && findPassage(samedi.type.slug, npc.chatbotData.passages);\n if (passage) {\n link.passageName = passage.name;\n }\n };\n\n user.gotoTypePassage = () => {\n const npc = user._getNpc();\n const passage = samedi.type && findPassage(samedi.type.slug, npc.chatbotData.passages);\n if (passage) {\n npc.goto(passage.name);\n npc.update();\n }\n };\n\n user.$isType = () => !!samedi.type;\n\n user.$isDate = () => !!samedi.date;\n\n user.$isTime = () => !!samedi.time;\n\n user.$isValid = () => user.$isType() && user.$isTime() && user.$first_name && user.$last_name && user.$email;\n\n user.$hasPassage = (slug) => {\n return !!findPassage(slug, user._getNpc().chatbotData.passages);\n }\n\n user.$hasType = (slug) => {\n return samedi.types && !!samedi.types.find(type => slug === type.slug);\n };\n\n user.$isBooked = (slug) => {\n const type = samedi.types.find(type => type.slug === slug);\n return type && samedi.booked.some(id => id === type.id);\n };\n\n user.$isUserRequired = (slug) => {\n const type = samedi.types.find(type => type.slug === slug);\n return type && type.attendant_user_required;\n }\n\n user.$isEmail = (msg) => {\n return msg && /^[\\w-\\.]+@([\\w-]+\\.)+[\\w-]{2,4}$/.test(msg);\n };\n\n user.$isInsurance = () => {\n const text = user.$msg.toLowerCase();\n const insurance = user.$msg && Object.values(samedi.insurances).find(insurance => insurance.name.toLowerCase().includes(text));\n if (!insurance) {\n return false;\n } else {\n user.$msg = insurance.name;\n return true;\n }\n };\n\n\tuser.$yesAnswers = ['Ja', 'Klar', 'yes','verstanden', 'okay', 'Yup', 'Jawohl', 'ja', 'sicher', 'Okay', 'alle klar', 'klar', 'einverstanden', 'Einverstanden', 'Alles verstanden', 'alles verstanden'];\n\tuser.$noAnswers = ['Nein', 'nein', 'ne', 'neeee', 'nope', 'no', 'neiän', 'neh', 'nicht einverstanden', 'Nicht einverstanden', 'Nicht Einverstanden'];\n\n // Fragefeld definieren\n runtime.i18n.de.inputFieldPlaceholder = ['']\n\n runtime.i18n.de.chooseIntent = ['Folgende Themen könnten dazu passen:', 'Vielleicht hilft Dir eines von diesen Themen?', 'Dazu habe ich folgendes gefunden:','Hmmm. Meinst Du das?', 'Meinst Du vielleicht das?','Dazu weiß ich folgendes:']\n\n runtime.i18n.de.unmatchedIntent = ['Entschuldige. Das habe ich leider nicht verstanden.','Hmmm. Könntest Du das anders formulieren?','Darauf habe ich leider keine Antwort.','Hmm. Ich weiß nicht, ob ich Dich da richtig verstanden habe','Dazu kann ich leider noch nichts sagen.','Tut mir leid das verstehe ich so nicht. Kannst Du das anders ausdrücken?','Entschuldige. Ich weiß gerade nicht was Du meinst.','Die Formulierung habe ich leider nicht verstanden.','Ich bin nicht ganz sicher was Du meinst']\n\n return samedi.loadTypes().then(() => {\n samedi.types.forEach(type => {\n const fname = '@' + type.slug;\n try {\n if (user[fname])\n throw `User function 'user.${fname}' already exists.`;\n user[fname] = () => loadAppointment(type);\n } catch(error) {\n console.error(`Could not create user function '${fname}'.`, error);\n }\n })\n });\n}","plugins":["var w = typeof window === 'undefined' ? global : window;\n w._integratedChatbotteryPlugins = w._integratedChatbotteryPlugins || {};\n w._integratedChatbotteryPlugins['DRK-Kardiologie-1.7.3'] = w._integratedChatbotteryPlugins['DRK-Kardiologie-1.7.3'] || {};\n w._integratedChatbotteryPlugins['DRK-Kardiologie-1.7.3']['webGaTracking'] = function (npc) {\r\n var EVENT_CATEGORY = 'Chatbottery';\r\n npc.event.subscribe('onPassage', function (data) {\r\n var passageName = data.passage.name || data.passage.id;\r\n var message = data.suggestion ? '[btn] ' + data.suggestion : data.userMsg;\r\n // Google analytics new API\r\n if (w.gtag) {\r\n w.gtag('event', passageName, {\r\n event_category: EVENT_CATEGORY,\r\n event_label: message\r\n });\r\n // Google tag manager\r\n }\r\n else if (w.dataLayer) {\r\n w.dataLayer.push({\r\n 'event': 'Chatbottery-Passage',\r\n 'category': EVENT_CATEGORY,\r\n 'action': passageName,\r\n 'label': message\r\n });\r\n // Google analytics old API\r\n }\r\n else if (w.ga) {\r\n w.ga('send', 'event', EVENT_CATEGORY, passageName, message);\r\n }\r\n else if (w.console) {\r\n w.console.error('Analytics script not found');\r\n }\r\n });\r\n }"],"style":".PROJECT-NAME.chatbot-web-container .speech-bubble.bot {\n max-width: 255px;\n margin: 0 0 0 70px;\n box-sizing: border-box;\n display: inline-block;\n}\n\n.PROJECT-NAME.chatbot-web-container .red {\n background-color: red!important;\n border-color: white!important;\n color: white!important;\n}\n\n.PROJECT-NAME.chatbot-web-container .locked {\n background-color: #bbb!important;\n}\n\n\n.PROJECT-NAME.chatbot-web-container .highlight {\n\tbackground-color: #FFF!important;\n border-color: #3E8400!important;\n color: #3E8400!important;\n font-weight: 700;}\n\n.PROJECT-NAME.chatbot-web-container .cbt-avatar {\n width: 40px;\n height: 40px;\n background-size: contain;\n position: relative;\n margin-top: -30px;\n margin-left: 12px;\n top: 40px;\n left: 0;\n }\n\n.PROJECT-NAME.chatbot-web-container .speech-bubble.bot {\n max-width: 255px;\n margin: 0 0 0 70px;\n box-sizing: border-box;\n display: inline-block;\n}\n\n.PROJECT-NAME.chatbot-web-container .speech-bubble {\n z-index: 2;\n border-radius: 4px;\n padding: 13px;\n}\n\n.PROJECT-NAME.chatbot-web-container .chatbot-persistent-menu-items {\n background-color: #224174;\n\tfont-family: 'Fira Sans', sans-serif; \n\tfont-weight: 800;\n padding: 13px;\n \tcolor: white;\n \tbox-shadow: -10px 10px 20px;\n }\n \n.PROJECT-NAME.chatbot-web-container .cbt-avatar{\nbackground: url(https://chatbot.webfox01.net/files/drkk/single.svg) no-repeat !important;\nheight:40px;\nwidth: 40px;\nbackground-size: 40px !important;\ndisplay: block !important;\n}\n\n\n.PROJECT-NAME.chatbot-web-container div.speech-bubble.user::before{\n height: 0 !important;\n width: 0 !important;\n}\n\n.PROJECT-NAME.chatbot-web-container li {\n padding-top: 4px;\n}\n\n\n\n.PROJECT-NAME.chatbot-web-container.render-in-place {\n padding: 4px;\n}\n\n.PROJECT-NAME.chatbot-web-container .chatbot-typing-dot {\n background: #014898;\n}\n\n.PROJECT-NAME.chatbot-web-container .user {\n background: #014898;\n margin-top: 10px;\n}\n\n.PROJECT-NAME.chatbot-web-container .speech-bubble.user {\n background: #014898;\n}\n\n.PROJECT-NAME.chatbot-web-container .user:before {\n border-top: 10px solid #014898!important;\n}\n\n.PROJECT-NAME.speech-bubble .bot{\n color: #ffffff;\n background: #ffffff;\n}\n\n.PROJECT-NAME.chatbot-web-container .chatbot-buttons ul li {\n background-color: #FFFFFF;\n border-color: #FFFFFF;\n color: #014898;\n box-shadow: 2px 4px 4px #33333321;\n /* -webkit-text-fill-color: rgba(255, 255, 255, 1); */\n}\n\n.PROJECT-NAME.chatbot-web-container .chatbot-buttons ul li.chatbot-external-button .chatbot-external-button-icon {\n background-image: url(https://pidoco.github.io/chatbot-drkk/img/external-link-icon-white.svg)!important;\n}\n\n.PROJECT-NAME.chatbot-typing-indicator{\n background-color: #FFFFFF;\n color: #014898;\n}\n\n.PROJECT-NAME.chatbot-web-container .chatbot-buttons ul li {\n background-color: #014898;\n border-color: #FFFFFF;\n color: #FFFFFF;\n}\n\n.PROJECT-NAME.chatbot-web-container .chatbot-user-input textarea {\n font-size: 16px;\n border-color: #FFFFFF;\n}\n\n.PROJECT-NAME.chatbot-web-container .chatbot-suggestion-chips ul li {\nbackground-color: #FFFFFF;\n border-color: #014898;\n box-shadow: 2px 4px 4px #33333321;\n color: #014898;\n /* -webkit-text-fill-color: rgba(1, 72, 152, 1); */ \n}\n\n.PROJECT-NAME.chatbot-web-container a {\n color: #014898;\n border-bottom: #014898;\n -webkit-text-fill-color: rgba(1, 72, 152, 1);\n cursor: pointer;\n}\n\n.PROJECT-NAME.chatbot-web-container.render-in-place .chatbot-window {\n display: block;\n margin: auto;\n width: 100%;\n}\n\n.PROJECT-NAME.chatbot-web-container .chatbot-button {\n display: inline-block;\n border-radius: 50%;\n background: #CAE4F8;\n background-image: url(https://pidoco.github.io/chatbot-drkk/img/bubble.svg);\n box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19);\n}\n\n.PROJECT-NAME.chatbot-web-container .chatbot-window {\n max-height: 640px;\n max-width: 400px;\n box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.19);\n background: white;\n}\n\n.PROJECT-NAME.chatbot-web-container .user:before {\n border-top: 10px solid #4E87FF;\n}\n\n\n/* Header Styling (incl. mobile) */\n\n/*****************************************************************\\\n| Header (incl. mobile)\n\\*****************************************************************/\n.PROJECT-NAME.chatbot-web-container .chat-header {\n background-image: url(https://www.fb-berlin.de/projects/drk/drk-header-mobile2.svg);\n background-position: center;\n}\n@media only screen and (min-width: 600px) {\n .PROJECT-NAME.chatbot-web-container .chat-header {\n background-image: url(https://www.fb-berlin.de/projects/drk/drk-headertermin2.svg);\n }\n}\n\n/* Invert Menu icon and Close Button */\n.PROJECT-NAME.chatbot-web-container .chatbot-persistent-menu-icon,.chat-close {\n filter: invert(1);\n}\n\n/* End of header */\n\n.PROJECT-NAME.chatbot-web-container .chatbot-user-input {\n background-color: #ffffff;\n}\n\n.PROJECT-NAME.chatbot-web-container {\n font-family: 'Fira Sans', sans-serif;\n font: 15px 'Fira Sans', sans-serif;;\n line-height: 1.3;\n}\n\n.PROJECT-NAME.chatbot-send-btn {\n background-color: #FFFFFF;\n}\n\n.PROJECT-NAME.chatbot-web-container .user {\n background: #4E87FF;\n color:white;\n}\n\n.PROJECT-NAME.chatbot-web-container .chatbot-image img {\n height: auto;\n}\n\n.PROJECT-NAME.chatbot-web-container .chatbot-send-btn {\n position: absolute;\n right: 16px;\n bottom: 12px;\n width: 34px;\n height: 34px;\n background: url(https://pidoco.github.io/chatbot-drkk/img/send-btn.svg) center no-repeat;\n background-size: auto;\n background-size: contain;\n cursor: pointer;\n}\n\n.PROJECT-NAME.chatbot-web-container .samedi-dates .speech-bubble,\n.PROJECT-NAME.chatbot-web-container .samedi-times .speech-bubble,\n.PROJECT-NAME.chatbot-web-container .samedi-appointment .speech-bubble {\n max-width: 100%;\n font-weight: 800;\n}\n\n.PROJECT-NAME.chatbot-web-container .samedi-dates + div ul, \n.PROJECT-NAME.chatbot-web-container .samedi-times + div ul {\n margin: 10px auto;\n display: grid;\n grid-template-columns: repeat(3, 1fr);\n gap: 10px;\n}\n\n.PROJECT-NAME.chatbot-web-container .samedi-date, \n.PROJECT-NAME.chatbot-web-container .samedi-time {\n border: unset;\n color: #014898 !important;\n background-color: white !important;\n}\n\n.PROJECT-NAME.chatbot-web-container .samedi-type {\n color: white !important;\n background-color: green !important;\n}\n\n.PROJECT-NAME.chatbot-web-container .samedi-type.user-required {\n background-color: #CE2B1E !important;\n}","formatVersion":"9.1.2"}