{
  "openapi": "3.0.1",
  "info": {
    "title": "VIRD PseudonymisationService",
    "version": "v2.0"
  },
  "paths": {
    "/api/v2.0/pseudonym/generate": {
      "post": {
        "tags": [
          "Pseudonym"
        ],
        "summary": "Generiert für die übergebenen Patientendaten eine Transfernummer, mit dessen Hilfe die Registerstelle Pseudonyme für die Meldung abgerufen kann.",
        "requestBody": {
          "description": "Die Daten eines Patienten zu einer Implantatmaßnahme",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/PseudonymisationRequest"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Die Operation wurde erfolgreich abgeschlossen",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/PseudonymisationRequestPersistenceResultResponse"
                }
              }
            }
          },
          "400": {
            "description": "Es wurde eine fehlerhafte Nachricht gesendet"
          },
          "401": {
            "description": "Die Authentifizierung an der Schnittstelle ist fehlgeschlagen"
          },
          "403": {
            "description": "Die Anfrage war nicht autorisiert"
          },
          "415": {
            "description": "Es wurde ein falscher Content-Type gesendet"
          },
          "500": {
            "description": "Es ist ein interner Fehler bei der Verarbeitung aufgetreten"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "PatientCaseData": {
        "required": [
          "IdDatensatz",
          "IdKrankenversicherung",
          "IdVersicherter"
        ],
        "type": "object",
        "properties": {
          "IdVersicherter": {
            "type": "string",
            "description": "Definiert den eindeutigen Identifizierer des Patienten. Dieser Wert ist für die VST verschlüsselt.",
            "format": "byte"
          },
          "IdDatensatz": {
            "type": "string",
            "description": "Definiert die Datensatz-Id des betroffenen Falls. Dieser Wert ist für die VST verschlüsselt.",
            "format": "byte"
          },
          "IdKrankenversicherung": {
            "type": "string",
            "description": "Definiert die Id der Krankenversicherung (Haupt-IK) des Versicherten. Dieser Wert ist für die VST verschlüsselt.",
            "format": "byte"
          }
        },
        "additionalProperties": false,
        "description": "Definiert die Daten zu einer Implantatmaßnahme zu einem Patienten mit deutscher Krankenversichertennummer"
      },
      "PatientNonKvCaseData": {
        "required": [
          "IdDatensatz",
          "IstPatientOhneDtKv"
        ],
        "type": "object",
        "properties": {
          "IstPatientOhneDtKv": {
            "pattern": "^(?:true)$",
            "type": "string",
            "description": "Kennzeichnet den betroffenen Fall eindeutig als Meldung für einen Patienten ohne deutsche Krankenversichertennummer. Der Wert muss immer 'true' entsprechen."
          },
          "IdDatensatz": {
            "type": "string",
            "description": "Definiert die Datensatz-Id des betroffenen Falls. Dieser Wert ist für die VST verschlüsselt.",
            "format": "byte"
          }
        },
        "additionalProperties": false,
        "description": "Definiert die Daten zu einem Implantatseingriff für einen Patienten ohne deutsche Krankenversichertennummer"
      },
      "PseudonymisationRequest": {
        "required": [
          "Patientendaten",
          "Signatur"
        ],
        "type": "object",
        "properties": {
          "Patientendaten": {
            "oneOf": [
              {
                "$ref": "#/components/schemas/PatientCaseData"
              },
              {
                "$ref": "#/components/schemas/PatientNonKvCaseData"
              }
            ],
            "description": "Definiert die Patientendaten zu einer Implantatmaßnahme"
          },
          "Signatur": {
            "type": "string",
            "description": "Signatur über die Patientendaten",
            "format": "byte"
          }
        },
        "additionalProperties": false,
        "description": "Definiert die Daten eines Patienten zu einer Implantatmaßnahme"
      },
      "PseudonymisationRequestPersistenceResultResponse": {
        "required": [
          "Transfernummer"
        ],
        "type": "object",
        "properties": {
          "Transfernummer": {
            "$ref": "#/components/schemas/SignedTransferNumber"
          }
        },
        "additionalProperties": false,
        "description": "Definiert die Antwort an eine Gesundheitseinrichtung auf ein Pseudonymisierungs-Request"
      },
      "SignedTransferNumber": {
        "required": [
          "Signatur",
          "Wert"
        ],
        "type": "object",
        "properties": {
          "Wert": {
            "type": "string",
            "description": "Für die Registerstelle verschlüsselte Transfernummer als HEX-Repräsentation"
          },
          "Signatur": {
            "type": "string",
            "description": "Signatur über die HEX-Repräsentation der Transfernummer",
            "format": "byte"
          }
        },
        "additionalProperties": false,
        "description": "Definiert eine für die Registerstelle verschlüsselte Transfernummer als Lowercase-HEX sowie die Signatur über den Wert"
      }
    }
  }
}