Patient data flagged on every line an agent reads.
Hospitals and health-tech companies build agents for appointments, triage support, discharge summaries and medical coding. KVKK Art. 6 and the Regulation on Personal Health Data place health data in a special category. Thulpar’s health rail combines a Turkish and English lexicon with NER, learns the tenant’s own terms and stops data leaving through the sink policy.
tr-insurance-seddk
On-premise, Standard tier. The health-data rail on, the file rails locked.
- KVKK 6698 Art. 6 · Regulation on Personal Health Data
- Ministry of Health information-security policies
- EU AI Act Annex III (in the medical-device context)
Special-category detection
Disease and medication names appear in free text. Generic PII detectors do not see them.
Watch the runs →The scenarios below are derived from the product’s real rules.
Every scenario is an agent run written to the product’s real rules. It shows the stage, the rails, the decision, the finding, the approval and the ledger entry step by step.
3 scenarios →What comes up in practice
Special-category detection
Disease and medication names appear in free text. Generic PII detectors do not see them.
The clinical decision-support boundary
The assistant must not diagnose. The topic rail and the persona check hold that line on every turn.
File attachments
Lab PDFs and images can carry active content, hidden text and PII in metadata.
3 scenarios
The player opens on the flagship scenario. Pick the others below.
The assistant drafts the summary; disease and drug names are special category, the HIS write waits for the physician.
9 GR-*
| id | control | OWASP | rails |
|---|---|---|---|
| GR-PII-01 | PII and special-category detection + masking (TCKN, IBAN, phone, health) on input/tool/output/log | LLM02 / — / MCP10 | pii.detect, pii.redact, file.metadata_pii |
| GR-TOOL-02 | Durable human approval on high-impact actions, four eyes | LLM06 / ASI02, ASI09 | labels.sink |
| GR-IFC-01 | Information-flow labels (integrity, confidentiality, tenant, PII class) enforced at sensitive sinks | LLM02 / ASI01, ASI03 / MCP10 | labels.sink, pii.detect |
| GR-MEM-01 | Memory-poisoning policy + provenance | — / ASI06 / MCP10 | memory.write |
| GR-LOG-01 | Tamper-evident event log (model/tool/policy/approval/hit), ≥ 6 months, auditor export | — / — / MCP08 | |
| GR-TRANS-01 | AI disclosure: chat + voice | — / ASI09 | conversation |
| GR-CONT-01 | Content-harm policy (AILuminate 12 + TR) with tenant thresholds | LLM09 / ASI09 | content.input, content.output, toxicity, topic, groundedness, language, image.content_safety, banlist, competitors |
| GR-OUT-01 | Output handling: no raw HTML, code sandbox, schema validation | LLM05 / ASI05 / MCP05 | code, schema, regex, secrets, file.analyze, file.type, file.active_content, yara |
| GR-INJ-02 | Indirect injection from tool/RAG output: untrusted label, no new tool call without policy | LLM01, LLM08 / ASI01, ASI06 / MCP06, MCP10 | injection.indirect, file.hidden_text |
See it in your own environment.
A one-hour technical demo: your scenario, your policy pack, on a closed-circuit install. Then the install kit and a trial licence for a pilot.