{"id":"DRK-Kardilologie-1.6","projectName":"DRK Kardilologie 1.6","startPassage":"Welcome","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."},{"text":"Das ist keine gültige Versicherung.
Geben Sie bitte den Anfangsbuchstaben ein und wählen aus der Liste!"}]},{"type":"goto","if":"!$isTime()","passage":"times","options":[{"text":"Das ist keine gültige Email-Adresse."},{"text":"Das ist keine gültige Versicherung.
Geben Sie bitte den Anfangsbuchstaben ein und wählen aus der Liste!"}]},{"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 && $insurance)","options":[{"text":"Zur Buchung benötigen wir noch einige Informationen von Ihnen...","if":"!($first_name && $last_name && $email && $insurance)"}],"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":"!$insurance","options":[{"text":"Geben Sie bitte Ihre Versicherung ein:","if":"!$insurance"}],"act":[],"btn":[]},{"type":"wait","if":"!$insurance","var":"$insurance","userData":"loadInsurances","validate":"$isInsurance($msg)","options":[{"text":"Das ist keine gültige Versicherung.
Geben Sie bitte den Anfangsbuchstaben ein und wählen aus der Liste!"}],"act":[],"btn":[],"autocomplete":[]},{"type":"msg","options":[{"text":"Name: $first_name $last_name
Email: $email
Versicherung: $insurance"}],"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":""}],"act":[],"btn":[{"text":"[[Was soll ich mitbringen? |Mitbringen]]"}]},{"type":"msg","options":[{"text":""}],"act":[],"btn":[{"text":"[[Wie komme ich hin? |Anfahrt]]"}]},{"type":"msg","options":[{"text":""}],"act":[],"btn":[{"text":"[[Welche Daten wurden gesendet? |Show sent data]]"}]}]},{"_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_":79,"name":"Version","tags":["version"],"tasks":[{"type":"msg","options":[{"text":"Das ist die Version 1.5 erstellt am 16.12.21 um 1440."}],"act":[],"btn":[]}]},{"_id_":"Welcome","_x_":1693,"_y_":101,"name":"Welcome","tags":[],"tasks":[{"type":"msg","options":[{"text":"Hallo und herzlich Willkommen in der Kardiologie der DRK Klinken 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":"\n\n"}],"act":[],"btn":[{"text":"[[Termintyp auswählen|Vorfilter]]"}]},{"type":"msg","options":[{"text":"\n\n"}],"act":[],"btn":[{"text":"[[Ich habe akute Beschwerden|Beschwerden]]","classname":"red"}]},{"type":"msg","options":[{"text":"\n\n"}],"act":[],"btn":[{"text":"[[Sie sind Privatpatient?|Privatpatient]]"}]}]},{"_id_":"Vorfilter","_x_":1678,"_y_":294,"name":"Vorfilter","tags":[],"tasks":[{"type":"msg","options":[{"text":"Bitte beachten Sie, dass nur dann ein Termin gemacht werden kann, wenn eine Einweisung vorliegt."}],"act":[],"btn":[]},{"type":"msg","img":"plain-einweisung.png","options":[{"text":""}],"act":[],"btn":[]},{"type":"msg","options":[{"text":"Was für einen Termin möchten Sie gerne vereinbaren?"}],"act":[],"btn":[]},{"type":"carousel","carouselItems":[{"title":"Sprechstunde","img":"herz.gif","text":"Herzrhythmusstörungen","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":[],"tasks":[{"type":"msg","options":[{"text":"Willkommen in der kardiologische Abteilung der 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":[]},{"title":"Dr. med. Claudia Graf","img":"05graf.jpeg","text":"Oberärztin","buttons":[]},{"title":"Dr. med. Matrin Just-Teetzmann","img":"06teetzmann.jpeg","text":"Oberatzt","buttons":[]}]},{"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":[],"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":"[[Rhythmus-Sprechstunde|Rhythmus-Sprechstunde]]"},{"text":"[[Vorgesräch invasive Kardiologie |Invasive Kardiologie]]"},{"text":"[[Zurück |Info-Kardiologie]]"}],"btn":[]}]},{"_id_":"rhythmusambulanz","_x_":1170,"_y_":556,"name":"rhythmusambulanz","tags":["rhythmusambulanz","herzkatheter"],"tasks":[{"type":"msg","options":[{"text":"Sie interessieren sich für einen Termin in der Rythmusambulanz."}],"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":""}],"act":[{"text":"[[Was soll ich mitbringen? |Mitbringen]]"}],"btn":[]},{"type":"msg","options":[{"text":""}],"act":[{"text":"[[Wie komme ich hin? |Anfahrt]]"}],"btn":[]},{"type":"msg","options":[{"text":""}],"act":[{"text":"[[Wie kann ich mich vorbereiten? |Vorbereitung]]"}],"btn":[]}]},{"_id_":"Show sent data","_x_":3250,"_y_":1486,"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 in der Rhythmusambulanz 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✅ Radiologische Befunde auf CD","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":""}],"act":[{"text":"[[Wie komme ich hin? |Anfahrt]]"}],"btn":[]},{"type":"msg","options":[{"text":""}],"act":[{"text":"[[Wie kann ich mich vorbereiten? |Vorbereitung]]"}],"btn":[]}]},{"_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"],"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","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":"[[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"}],"act":[{"text":"[[Was soll ich mitbringen? |Mitbringen]]"},{"text":"[[Wie komme ich hin? |Anfahrt]]"}],"btn":[]}]},{"_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":[],"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","if":"$appointment_slug === '@001-indikationssprechstunde-herzrhythmusstorungen'","options":[{"text":"\n","if":"$appointment_slug === '@001-indikationssprechstunde-herzrhythmusstorungen'"}],"act":[{"text":"[[Wo finde ich die Kardiologie?|Lageplan Kardiologie]]"}],"btn":[]},{"type":"msg","if":"$appointment_slug === '@002-vorgesprach-invasive-kardiologie'","options":[{"text":"\n","if":"$appointment_slug === '@002-vorgesprach-invasive-kardiologie'"}],"act":[{"text":"[[Wo finde ich die Kardiologie?|Lageplan Kardiologie]]"}],"btn":[]}]},{"_id_":"Car","_x_":3096,"_y_":1702,"name":"Car","tags":[],"tasks":[{"type":"msg","src":"https://www.google.com/maps/dir/52.4146533,13.5220264/DRK+Kliniken+Berlin+Westend,+Spandauer+Damm+130,+14050+Berlin/@52.456911,13.329819,12z/data=!3m1!4b1!4m10!4m9!1m1!4e1!1m5!1m1!1s0x47a856d497a1bee5:0x54a5a16c1676e7cc!2m2!1d13.277364!2d52.5200769!3e0","height":600,"options":[{"text":" "}],"act":[],"btn":[],"iframe":{"src":"https://www.google.com/maps/dir/52.4146533,13.5220264/DRK+Kliniken+Berlin+Westend,+Spandauer+Damm+130,+14050+Berlin/@52.456911,13.329819,12z/data=!3m1!4b1!4m10!4m9!1m1!4e1!1m5!1m1!1s0x47a856d497a1bee5:0x54a5a16c1676e7cc!2m2!1d13.277364!2d52.5200769!3e0","height":"600"}},{"type":"msg","if":"$appointment_slug === '@001-indikationssprechstunde-herzrhythmusstorungen'","options":[{"text":"\n","if":"$appointment_slug === '@001-indikationssprechstunde-herzrhythmusstorungen'"}],"act":[{"text":"[[Wo finde ich die Kardiologie?|Lageplan Kardiologie]]"}],"btn":[]},{"type":"msg","if":"$appointment_slug === '@002-vorgesprach-invasive-kardiologie'","options":[{"text":"\n","if":"$appointment_slug === '@002-vorgesprach-invasive-kardiologie'"}],"act":[{"text":"[[Wo finde ich die Kardiologie?|Lageplan Kardiologie]]"}],"btn":[]}]},{"_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":"Die Kardiologie finden Sie im Haus E \"Hochhaus\", Eingang E0 oder E2, 6. OG."}],"act":[],"btn":[]},{"type":"msg","img":"https://www.drk-kliniken-berlin.de/fileadmin/user_upload/Klinikum/Westend/Einrichtungen-Bilder/lageplan-kardiologie-neu.gif","options":[{"text":""}],"act":[],"btn":[]},{"type":"msg","options":[{"text":"Anmeldung vor Ort: Bitte melden Sie sich in der Zentralen Aufnahme (EG, Hochhaus) mit Ihrer Einweisung an."}],"act":[],"btn":[]},{"type":"msg","options":[{"text":""}],"act":[{"text":"[[Was soll ich mitbringen? |Mitbringen]]"}],"btn":[]},{"type":"msg","options":[{"text":""}],"act":[{"text":"[[Wie kann ich mich vorbereiten? |Vorbereitung]]"}],"btn":[]}]},{"_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 in der Rhythmusambulanz 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❗Das Vorgespräch zur invasiven Kardiologie ist eine Privatsprechstunde.","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":""}],"act":[{"text":"[[Was soll ich mitbringen? |Mitbringen]]"}],"btn":[]},{"type":"msg","options":[{"text":""}],"act":[{"text":"[[Wie komme ich hin? |Anfahrt]]"}],"btn":[]}]},{"_id_":"Rhythmus-Sprechstunde","_x_":1156,"_y_":1425,"name":"Rhythmus-Sprechstunde","tags":[],"tasks":[{"type":"msg","options":[{"text":"\nDie Rhythmus-Sprechstunde 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 eine Rhythmus-Sprechstunde 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":" \n\n\n"}],"act":[],"btn":[{"text":"[[Termin buchen|rhythmusambulanz]]"},{"text":"[[Zurück|Schwerpunkte]]"}]}]},{"_id_":"Invasive Kardiologie","_x_":1561,"_y_":1414,"name":"Invasive Kardiologie","tags":[],"tasks":[{"type":"msg","options":[{"text":"\nDas Vorgespräch zur invasiven Kardiologie ist eine Privatsprechstunde.\n"}],"act":[],"btn":[]},{"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":" \n\n\n"}],"act":[],"btn":[{"text":"[[Termin buchen|privatsprechstunde]]"},{"text":"[[Zurück|Schwerpunkte]]"}]}]},{"_id_":"Beschwerden","_x_":800,"_y_":822,"name":"Beschwerden","tags":["#akute-beschwerden","Herzinfarkt"],"tasks":[{"type":"msg","options":[{"text":"Herzinfarkt - Jede Minute zählt!"}],"act":[],"btn":[]},{"type":"msg","options":[{"text":"Der 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":"Bei Verdacht auf Herzinfarkt: sofort den Notarzt rufen! 112"}],"act":[],"btn":[]},{"type":"msg","options":[{"text":"\n\n"}],"act":[],"btn":[{"text":"[[Termintyp auswählen|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"}],"act":[],"btn":[{"text":"[[Zurück zum Start|Welcome]]"}]}]},{"_id_":"start","_x_":2001,"_y_":1119,"name":"start","tags":[],"tasks":[{"type":"msg","options":[{"text":"Die $clinic bieten Ihnen folgende Termine zur Direktbuchung an:"}],"act":[],"btn":[]},{"type":"msg","typingAnimationTime":1000,"userData":"loadTypes","options":[{"text":""}],"act":[],"btn":[]}]}],"script":"var w = typeof window === 'undefined' ? global : window;\n\nvar isRunningInBrowser = typeof window !== 'undefined';\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 = \"DRK Kliniken\";\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}\n\nfunction onChatbotteryRuntimeLoaded(runtime) {\n\n\n\n\t\tconst menuItems = [\n\t\t{\n\t\t\ttitle: '🏠 Start',\n\t\t\tgoto: 'Welcome'\n\t\t},\n\t\t{\n\t\t\ttitle: '📅 Alle Termintypen',\n\t\t\tgoto: 'Vorfilter'\n\t\t},\n\t\t{\n\t\t\ttitle: '🙋 Mein Termin',\n\t\t\tgoto: 'Mein Termin'\n\t\t},\n\t\t{\n\t\t\ttitle: '🚨 Notfall',\n\t\t\tgoto: 'Beschwerden'\n\t\t},\n\t\t{\n\t\t\ttitle: '😷 Corona-Regeln',\n\t\t\tgoto: 'Corona'\n\t\t}\n\t];\n\n\tconst config = {\n\t\tposition: '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 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.$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\t\tlet comment = null;\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.id,\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 if (user.$einweisung) {\n comment = 'Einweisung Diagnose: ' + user.$einweisung_1 + ' / Einweisung Untersuchungsergebnisse: ' + user.$einweisung_2 + ' / Einweisung Befunde: ' + user.$einweisung_3;\n } else if (user.$ueberweisung) {\n comment = 'Überweisung Diagnose: ' + user.$ueberweisung_1 + ' / Überweisung Untersuchungsergebnisse: ' + user.$ueberweisung_2 + ' / Überweisung Befunde: ' + user.$ueberweisung_3;\n }\n /* else if (user.$isCardiac) {\n comment = 'Herzkrank';\n } */\n if (comment) {\n payload['structured_comment'] = {\n 'Hinweis': 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.$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":[],"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.0"}