Impfungen melden
Ihre Software hat geimpft; Petla führt die Historie und berechnet daraus die Erinnerung. Über die Produkt-Id — nie über einen Namen.
Warum ein Produkt und kein Name Extended
Petla berechnet die nächste Fälligkeit je Antigen. Ein Produkt bildet auf seine Antigene ab; die Zeichenkette „Versican Plus“ tut das nicht — sie landet als Zeile, aus der die Erinnerung nichts berechnen kann. Deshalb ist productId Pflicht.
Die Ids stammen aus Petlas Impfstoffverzeichnis und werden über GET /vaccine-products abgerufen. Ein Freitextname wird nicht angenommen, weil die Erinnerungsrechnung daraus keine Antigene ableiten kann.
Welches Intervall Petla rechnet
Sie senden die Dosis, nicht das Intervall. Es gibt im Rumpf kein Feld für eine Fälligkeit oder einen Abstand; Petla leitet beides je Antigen aus seinem eigenen Regelwerk ab.
Grundlage sind die StIKo-Leitlinien: für Hund, Katze und Kaninchen StIKo Kleintiere, für Pferde die StIKo-Pferd-Leitlinie. Die Ausgabe ist versioniert und wird auf jede berechnete Erinnerung gestempelt, sodass eine Fälligkeit immer auf das Regelwerk zurückführbar ist, das sie erzeugt hat. Für Arten außerhalb dieser Liste rechnet Petla keine protokollgenaue Erinnerung.
Eine Praxis kann in ihren Erinnerungs-Einstellungen eigene Intervalle hinterlegen und einzelne Antigene ganz abschalten. Petla wendet sie vom Genauesten zum Allgemeinsten an:
- Vorgabe der Praxis für dieses Produkt
- Regel des Verzeichnisses für dieses Produkt
- Vorgabe der Praxis für die Krankheit
- StIKo-Vorgabe für die Krankheit
⚠️ Damit schlägt eine produktbezogene Regel eine krankheitsweite Vorgabe der Praxis — ein pauschales „Tollwut = 12 Monate“ überschreibt also nicht die 36 Monate eines Produkts, das so zugelassen ist. Rechnen Sie deshalb keine Fälligkeit selbst nach: Was Ihr System als Intervall annimmt, muss nicht das sein, was für diese Praxis gilt.
1. Den Katalog einmal abbilden
GET /vaccine-products
{
"products": [
{
"id": "…",
"name": "Versican Plus DHPPi/L4R",
"manufacturer": "Zoetis",
"species": ["HUND"],
"antigens": ["canine_distemper", "canine_hepatitis", "canine_lepto",
"canine_parainfluenza", "canine_parvo", "rabies"],
"formerNames": []
}
]
}- Die Antigene stehen auf der Zeile, und das ist der Grund für diesen Endpunkt statt einer bloßen Id-Liste: „DHPPi/L4R“ gegen „DHPPi/L4“ ist ein Antigen Unterschied, und die Namen sagen das nicht.
formerNamesführt frühere Handelsnamen —Vanguard R→Versiguard. Das ist der Fall, der eine einmalige Zuordnung Monate später zerbricht.- Nur aktive Produkte. Ein zurückgezogenes zu listen lädt dazu ein, auf etwas abzubilden, das der Push dann ablehnt; bestehende Einträge zeigen weiter darauf, denn die Historie wird davon nicht falsch.
- Keine Seitennavigation, mit Absicht: der Katalog wächst, wenn ein Hersteller einen Impfstoff zulässt, nicht mit dem Verkehr einer Praxis. Am 07.09.2026 sind es 60 Produkte über 21 Antigene.
Speichern Sie sie, aber parsen Sie sie nicht und setzen Sie kein UUID-Format voraus. Petlas eigene Ids sind nicht durchgängig RFC 4122 — am 07.09.2026 fallen 31 von 251 Pet-Ids im Testsystem durch eine strenge UUID-Prüfung. Eine Formatprüfung auf einem Wert, den wir ausgeben, kann nur mit uns uneins werden.
2. Die Dosis melden
POST /appointments/{appointmentId}/vaccinations
{
"externalId": "pms-dose-4711",
"petlaPetId": "…",
"productId": "…",
"administeredAt": "2026-09-01T09:30:00Z",
"stage": "BOOSTER",
"batchNumber": "A1B2C3",
"administeredBy": "Dr. Sandra Weiß"
}
201 { "id": "…", "status": "recorded" }Dieselbe Eigenschaft wie bei Dokumenten: das Tier muss zu den Patienten dieses Termins gehören, und Petla prüft das, statt dem Rumpf zu glauben. So erreicht keine Anfrage einen Patienten, den Ihre Verbindung nicht ohnehin schon teilt — ein bloßes POST /vaccinations mit einer Tier-Id könnte einen klinischen Eintrag auf jede erratbare Id schreiben. ⚠️ Und es ist fachlich richtig statt nur bequem: geimpft wird bei einem Besuch.
externalIdist Pflicht — und es ist nicht derIdempotency-Key. Der deckt eine wiederholte Anfrage ab; dies deckt dieselbe Dosis aus zwei Anfragen ab — ein erneuter Abgleich, eine abgespielte Warteschlange. Das ist der Fall, der auf einem nur-anfügenden Verzeichnis tatsächlich eintritt, wo ein Duplikat hinterher nicht mehr wegzuräumen ist. Eine Wiederholung antwortet200mitstatus: "already_recorded".administeredAtist ein Zeitpunkt mit Offset — die einzige Zeit in dieser API, die keine lokale Wanduhr ist. Ein Termin findet an einem Ort statt; eine Dosis ist ein klinischer Fakt, aus dessen Abstand zur nächsten das Intervall berechnet wird.- Sie ist in beide Richtungen begrenzt, und die Ablehnungen unterscheiden sich:
in_the_futurejenseits von 24 Stunden — ein Tag Spielraum, damit eine vorgehende Uhr kein Datenfehler ist — undimplausibly_oldjenseits von 40 Jahren.fields.administeredAtsagt, welche. stageist SOLLTE, nicht MUSS — aber ohne es gilt jede Dosis als Auffrischung, und eine Welpenserie importiert mit falschen Fälligkeiten.
Eine Korrektur ist ein neuer Eintrag, der auf den zeigt, den er ablöst. Erzwungen wird das in der Datenbank: Petlas Impfverzeichnis trägt einen Trigger, der UPDATE und DELETE verweigert.
Die Dosis wird entgegengenommen, geprüft und gespeichert, gegen das aufgelöste Produkt, sodass die Antigene daranhängen, die die Erinnerung liest. Der Aufruf selbst berechnet aber keine Erinnerung und verschickt nichts: Ein 201 belegt, dass die Dosis in der Akte steht, nicht, dass sich eine Erinnerung bewegt hat.
Die Berechnung läuft planmäßig, nicht beim Schreiben — eine Fälligkeit hängt am Datum und nicht am Zeitpunkt der Eingabe. Ihre Dosis geht dabei genauso ein wie eine in der Praxis erfasste; ein gesonderter Freigabeschritt ist dafür nicht nötig. Rechnen Sie also mit einer Verzögerung, nicht mit einem Ausbleiben.
Datenschutz
Eine Dosis ist ein klinischer Eintrag über ein Tier, dessen Halter auf demselben Termin genannt ist. ⛔ Ihr AVV muss das abdecken — ein auf Termindaten zugeschnittener Vertrag erlaubt das so wenig wie ein Dokument. Prüfen Sie Kategorien und Zweck, bevor Sie vaccinations.push deklarieren. ⚠️ Es gibt keinen Endpunkt, der Impfungen wieder herausliest, und es darf auch keiner beiläufig hinzukommen: §2 verspricht, dass diese Integration Petla keinen Lesezugriff auf klinische Akten gibt.