๐ฅ VPS Bot โ Patient Interaction
Simulated WhatsApp conversation flow showing how a patient interacts with the Virtual Patient Clinical Decision System, including LLM processing pipeline, guardrails, and skill routing.
Heute (08.03.2026) in der Orthopรคdie:
โ Dr. Sarah Weber โ 07:00โ15:00
โ Dr. Thomas Klein โ 14:00โ22:00
Ihr Termin um 14:00 fรคllt in die Schicht von Dr. Thomas Klein.
1๏ธโฃ Vor Patientenkontakt
2๏ธโฃ Vor aseptischen Tรคtigkeiten
3๏ธโฃ Nach Kontakt mit Kรถrperflรผssigkeiten
4๏ธโฃ Nach Patientenkontakt
5๏ธโฃ Nach Kontakt mit Patientenumgebung
๐งด Spender: links neben der Eingangstรผr
๐ Besuchszeiten: 10โ12 & 14โ18 Uhr
๐ซ Ihre Frage betrifft klinische Themen (Diagnose / Behandlung), die auรerhalb meines Zustรคndigkeitsbereichs liegen.
โ Was Sie tun kรถnnen:
โข Sprechen Sie mit Dr. Thomas Klein (bis 22:00 im Dienst)
โข Wenden Sie sich an die Stationsschwester
โข Notfall: 112
๐ข Rollstuhl verfรผgbar!
๐ Standort: Station 3A, Eingang
๐ท๏ธ ID: WC-2024-003
๐ง Letzte Wartung: 01.03.2026
Bitte melden Sie sich am Stationsempfang.
Vorfall erfasst:
โข Typ: Infrastrukturproblem
โข Aufzug Gebรคude B โ auรer Betrieb
โข Ref: INC-2026-0308-001
โข Zeit: 15:02 CET
โ Facility-Management benachrichtigt
โก๏ธ Alternative: Aufzug Gebรคude A
๐ Erkannt: Versicherungsnummer
๐ Aktion: Automatisch geschwรคrzt
Ich kann keine Termine verwalten. Bitte wenden Sie sich an:
โข Rezeption: Tel. intern 100
โข Terminvergabe: Tel. intern 150
Redact
Block
Lookup
.md files
Manager
.json
Tracker
SQLite
Reporter
.json
JSON ยท 7yr archive
๐ฑ Patient Sends Message
Anna types "Mein Knie tut weh. Kรถnnte das eine Entzรผndung sein?" in WhatsApp. The message is E2E encrypted by WhatsApp and hits the LINK Mobility WASP webhook endpoint.
๐ LINK Mobility โ Cloudflare โ OpenClaw
LINK Mobility forwards the webhook POST to gateway.implantat.md. Cloudflare Tunnel terminates TLS and routes to localhost:19621 on the Asus GX10. OpenClaw authenticates via token ec092ddd... and routes to session agent:healthcare:main.
๐ Input Guardrail โ PII Detection
The input filter scans for PII patterns: patient_name, date_of_birth, social_security, insurance_number, medical_record_number. In this message: No PII detected โ PASS.
๐ง LLM Intent Classification (Claude Opus 4.6)
The LLM receives the message with the system prompt (VPS persona). It classifies intent:
โข patient_diagnosis โ MATCH
โข treatment_plans โ MATCH
The LLM detects this is a blocked clinical topic and generates a refusal response with redirect to medical staff.
๐ซ Blocked Topic Guardrail โ OUTPUT CHECK
Output filter verifies the LLM response does NOT contain any clinical advice, medication names, or diagnosis information. Checks pass โ the response is a clean refusal with staff redirect. APPROVED.
๐ค Output Filter โ Disclaimer Appended
The mandatory disclaimer is automatically appended: "โ ๏ธ Hinweis: Ich bin ein administrativer Assistent...". This is applied to every single response, regardless of content. Configured in healthcare-bot.yaml โ guardrails.output_filter.disclaimer.
๐ Audit Log Entry Created
A HIPAA-compliant audit entry is written: blocked_topic_triggered: true, topics: ["patient_diagnosis", "treatment_plans"], response_time_ms: 280. Entry is SHA-256 hashed for integrity. Retained 90 days online, then exported to 7-year archive.
๐ฑ Response Delivered to Patient
The formatted response travels back: OpenClaw โ Cloudflare Tunnel โ LINK Mobility โ WhatsApp. Anna sees the friendly refusal with a redirect to Dr. Thomas Klein (pulled from shift-manager data). Total round-trip: ~800ms.
| Patient Request | Example Message | Handler | Data Source | Status |
|---|---|---|---|---|
| Staff schedule | „Wer hat heute Dienst?“ | shift-manager | current-shifts.json | โ Allowed |
| Hospital protocols | „Hygieneregeln fรผr Station?“ | protocol-lookup | hand-hygiene.md | โ Allowed |
| Equipment check | „Rollstuhl verfรผgbar?“ | equipment-tracker | inventory.db (SQLite) | โ Allowed |
| Report issue | „Aufzug kaputt“ | incident-reporter | reports.json | โ Allowed |
| Training reminder | „Wann ist die nรคchste Schulung?“ | training-reminder | training-schedule.json | โ Allowed |
| Diagnosis question | „Was habe ich?“ | blocked_topics | โ | ๐ซ Blocked |
| Treatment advice | „Was soll ich nehmen?“ | blocked_topics | โ | ๐ซ Blocked |
| Medication info | „Dosierung von Ibuprofen?“ | blocked_topics | โ | ๐ซ Blocked |
| Lab results | „Meine Blutwerte?“ | blocked_topics | โ | ๐ซ Blocked |
| Prognosis | „Wie lange dauert die Heilung?“ | blocked_topics | โ | ๐ซ Blocked |
| Insurance number | „Meine Vers.-Nr. ist…“ | pii_detection | โ | ๐ PII Redacted |
| Patient name | „Patient Max Mustermann…“ | pii_detection | โ | ๐ PII Redacted |
| Medical record # | „Akte Nr. 12345“ | pii_detection | โ | ๐ PII Redacted |