{
  "openapi": "3.0.1",
  "info": {
    "title": "VIRD Service für die Übertragung von Vitalstatus-Meldungen sowie Anfragen dazu, dem Abruf von asynchronen Fehlern, die bei der Verarbeitung von Daten aufgetreten sind, sowie die Information von Anonymisierungen von Versicherten in der Vertrauensstelle und der Registerstelle",
    "contact": {
      "name": "Robert Koch-Institut, Referat VIG - Vertrauensstellen, Nordufer 20, 13353 Berlin",
      "email": "Vertrauensstelle-IRD@rki.de"
    },
    "version": "v1"
  },
  "paths": {
    "/api/v1/anonymizationnotifications": {
      "post": {
        "summary": "Gibt die Liste der Anonymisierungen von Versicherten zurück, die bei der Vertrauensstelle und der Registerstelle durchgeführt wurden",
        "requestBody": {
          "description": "Temporärer ECC-PublicKey, der für die Verschlüsselung von Daten an den Versicherungsträger verwendet werden soll",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SessionKey"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Die Operation wurde erfolgreich abgeschlossen",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/AnonymizationNotificationsBundle"
                }
              }
            }
          },
          "204": {
            "description": "Es sind keine Daten vorhanden"
          },
		   "400": {
            "description": "Es wurden ungültige Daten gesendet"
          },
          "401": {
            "description": "Die Authentifizierung an der Schnittstelle ist fehlgeschlagen"
          },
          "403": {
            "description": "Die Anfrage war nicht autorisiert"
          },
          "500": {
            "description": "Es ist ein interner Fehler bei der Verarbeitung aufgetreten"
          }
        }
      }
    },
    "/api/v1/vitalstatusnotification": {
      "post": {
        "summary": "Speichert eine Datenlieferung von Vitalstatus-Meldungen",
        "requestBody": {
          "description": "Definiert eine Datenlieferung von Vitalstatus-Meldungen",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/VitalStatusNotificationBundle"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Die Operation wurde erfolgreich abgeschlossen"
          },
          "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"
          }
        }
      }
    },
    "/api/v1/vitalstatusnotification/requests": {
      "post": {
        "summary": "Gibt Anfragen zu Vitalstatus-Meldungen von Versicherten zurück",
        "requestBody": {
          "description": "Temporärer ECC-PublicKey, der für die Verschlüsselung von Daten an den Versicherungsträger verwendet werden soll",
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/SessionKey"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Die Operation wurde erfolgreich abgeschlossen",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/RequestsForVitalStatusNotificationBundle"
                }
              }
            }
          },
          "204": {
            "description": "Es sind keine Daten zum Abruf vorhanden"
          },
          "400": {
            "description": "Es wurden ungültige Daten gesendet"
          },
          "401": {
            "description": "Die Authentifizierung an der Schnittstelle ist fehlgeschlagen"
          },
          "403": {
            "description": "Die Anfrage war nicht autorisiert"
          },
          "500": {
            "description": "Es ist ein interner Fehler bei der Verarbeitung aufgetreten"
          }
        }
      }
    },
    "/api/v1/vitalstatusnotification/processingresults": {
      "post": {
        "summary": "Gibt Fehler zurück, die bei der Verarbeitung von Vitalstatus-Meldungen auf Seiten der Vertrauensstelle oder der Registerstelle aufgetreten sind",
        "requestBody": {
          "description": "Definiert die Id der Datenlieferung, zu der die Verarbeitungsresultate abgerufen werden sollen",
          "content": {
            "application/json": { 
              "schema": {
              "maxLength": 40,
              "minLength": 3,
              "type": "string"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Die Operation wurde erfolgreich abgeschlossen",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/VitalStatusNotificationProcessingErrorsBundle"
                }
              }
            }
          },
          "204": {
            "description": "Es sind keine Daten für die angefragte Datenlieferung vorhanden. Entweder wurden die Daten zu dieser Datenlieferung noch nicht durch die Registerstelle verarbeitet, oder die Resultate der Verarbeitung wurden bereits abgerufen."
          },
          "400": {
            "description": "Es wurden ungültige Daten gesendet"
          },
          "401": {
            "description": "Die Authentifizierung an der Schnittstelle ist fehlgeschlagen"
          },
          "403": {
            "description": "Die Anfrage war nicht autorisiert"
          },
          "500": {
            "description": "Es ist ein interner Fehler bei der Verarbeitung aufgetreten"
          }
        }
      }
    }
  },
  "components": {
    "schemas": {
      "AnonymizationNotification": {
        "required": [
          "IdVersicherter"
        ],
        "type": "object",
        "properties": {
          "IdVersicherter": {
            "type": "string",
            "description": "Eindeutiger Identifikator des Versicherten. Für gesetzlich versicherte Patienten ist dies die eGK-Nummer (unveränderbare Teil der Krankenversichertennummer, KVNR). Für die Heilfürsorge Bundeswehr ist diese Angabe die unveränderbare und nach einheitlichen Kriterien gebildete Identifikationsnummer im Format der Steueridentifikationsnummer entsprechend Identifikationsnummerngesetz (IDNrG). Der Wert ist für den Versicherungsträger verschlüsselt.",
            "format": "byte"
          }
        },
        "additionalProperties": false,
        "description": "Definiert eine Anonymisierung eines Datensatzes, die bei der Vertrauensstelle und der Registerstelle durchgeführt wurde"
      },
      "AnonymizationNotificationsBundle": {
        "required": [
          "Anonymisierungen",
          "Signatur"
        ],
        "type": "object",
        "properties": {
          "Anonymisierungen": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/AnonymizationNotification"
            },
            "description": "Liste der Anonymisierungen von Versicherten, die bei der Vertrauensstelle und der Registerstelle durchgeführt wurden"
          },
          "Signatur": {
            "type": "string",
            "description": "Signatur über die Daten des Datenpaketes",
            "format": "byte"
          }
        },
        "additionalProperties": false,
        "description": "Definiert die Antwort von Anonymisierungen von Versicherten, die bei der Vertrauensstelle und der Registerstelle durchgeführt wurden"
      },
      "RequestForVitalStatusNotification": {
        "required": [
          "IdVersicherter"
        ],
        "type": "object",
        "properties": {
          "IdVersicherter": {
            "type": "string",
            "description": "Eindeutiger Identifikator des Versicherten. Für gesetzlich versicherte Patienten ist dies die eGK-Nummer (unveränderbare Teil der Krankenversichertennummer, KVNR). Für die Heilfürsorge Bundeswehr ist diese Angabe die unveränderbare und nach einheitlichen Kriterien gebildete Identifikationsnummer im Format der Steueridentifikationsnummer entsprechend Identifikationsnummerngesetz (IDNrG). Der Wert ist für die Vertrauensstelle verschlüsselt.",
            "format": "byte"
          }
        },
        "additionalProperties": false,
        "description": "Definiert eine Anfrage zu einem Versicherten, zu dem ein Vitalststus angefragt wird."
      },
      "RequestsForVitalStatusNotificationBundle": {
        "required": [
          "Anfragen",
          "Signatur"
        ],
        "type": "object",
        "properties": {
          "Anfragen": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/RequestForVitalStatusNotification"
            },
            "description": "Liste der Anfragen zu Vitalstatusmeldungen"
          },
          "Signatur": {
            "type": "string",
            "description": "Signatur über die Daten des Datenpaketes",
            "format": "byte"
          }
        },
        "additionalProperties": false,
        "description": "Definiert Anfragen, die zu Vitalstatusmeldungen gestellt wurden."
      },
      "SessionKey": {
        "required": [
          "X",
          "Y"
        ],
        "type": "object",
        "properties": {
          "X": {
            "type": "string",
            "description": "Stellt die X-Koordinate des ephemeren öffentlichen Sender-ECC-Schlüssel dar",
            "format": "byte"
          },
          "Y": {
            "type": "string",
            "description": "Stellt die Y-Koordinate des ephemeren öffentlichen Sender-ECC-Schlüssel dar",
            "format": "byte"
          }
        },
        "additionalProperties": false,
        "description": "Definiert die Koordinaten eines ECC-PublicKeys"
      },
      "VitalStatusNotification": {
        "required": [
          "IdDatensatz",
          "IdVersicherter",
          "Todesdatum",
          "Vitalstatus"
        ],
        "type": "object",
        "properties": {
          "IdDatensatz": {
            "maxLength": 40,
            "minLength": 3,
            "type": "string",
            "description": "Definiert die eindeutige Id eines Datensatzes innerhalb dieser Meldung."
          },
          "IdVersicherter": {
            "type": "string",
            "description": "Eindeutiger Identifikator des Versicherten. Für gesetzlich versicherte Patienten ist dies die eGK-Nummer (unveränderbare Teil der Krankenversichertennummer, KVNR). Für die Heilfürsorge Bundeswehr ist diese Angabe die unveränderbare und nach einheitlichen Kriterien gebildete Identifikationsnummer im Format der Steueridentifikationsnummer entsprechend Identifikationsnummerngesetz (IDNrG). Der Wert ist für die Vertrauensstelle verschlüsselt.",
            "format": "byte"
          },
          "Vitalstatus": {
            "type": "string",
            "description": "Der Vitalstatus des Versicherten. Dieser Wert ist für die RST verschlüsselt.",
            "format": "byte"
          },
          "Todesdatum": {
            "type": "string",
            "description": "Todesdatum des Versicherten. Das Format in unverschlüsselter Form: YYYY-MM-DD. Wenn diese Angabe nicht anwendbar ist (da der VitalStatus des Versicherten 'Lebend' oder 'Unbekannt' ist, so muss dieses Feld durch den Ersatzwert '----N/A----' befüllt werden (Klartext vor der Verschlüsselung). Dieser Wert ist für die RST verschlüsselt.",
            "format": "byte"
          }
        },
        "additionalProperties": false,
        "description": "Definiert einen Datensatz zu einem Vitalstatus eines Versicherten"
      },
      "VitalStatusNotificationBundle": {
        "required": [
          "IdDatenlieferung",
          "Meldungen",
          "Signatur"
        ],
        "type": "object",
        "properties": {
          "IdDatenlieferung": {
            "maxLength": 40,
            "minLength": 3,
            "type": "string",
            "description": "Definiert die eindeutige Id der Datenlieferung"
          },
          "Meldungen": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/VitalStatusNotification"
            },
            "description": "Die Liste der Meldungen"
          },
          "Signatur": {
            "type": "string",
            "description": "Signatur über die Angaben der Datenlieferung.",
            "format": "byte"
          }
        },
        "additionalProperties": false,
        "description": "Definiert eine Datenlieferung von Vitalstatus-Meldungen"
      },
      "VitalStatusNotificationProcessingErrorResult": {
        "required": [
          "Code",
          "IdDatensatz"
        ],
        "type": "object",
        "properties": {
          "IdDatensatz": {
            "maxLength": 40,
            "minLength": 3,
            "type": "string",
            "description": "Eindeutige Id des Datensatzes innerhalb einer Datenlieferung"
          },
          "Code": {
            "$ref": "#/components/schemas/VitalStatusNotificationProcessingErrorResultCode"
          }
        },
        "additionalProperties": false,
        "description": "Definiert einen Fehler, der bei der Verarbeitung eines Datensatzes aufgetreten ist"
      },
      "VitalStatusNotificationProcessingErrorResultCode": {
        "enum": [
          "DecryptionError",
          "WrongFormatIdVersicherter",
          "DuplicateIdVersicherter",
          "InvalidDateOfDeathValue",
          "InvalidDateOfDeathFormat",
          "InvalidVitalStatusValue"
        ],
        "type": "string",
        "description": "Definiert einen Fehlercode, der bei der Verarbeitung eines Datensatzes aufgetreten ist"
      },
      "VitalStatusNotificationProcessingErrorsBundle": {
        "required": [
          "Fehler",
          "Signatur"
        ],
        "type": "object",
        "properties": {
          "Fehler": {
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/VitalStatusNotificationProcessingErrorResult"
            },
            "description": "Liste der Fehler"
          },
          "Signatur": {
            "type": "string",
            "description": "Signatur über die Daten des Datenpaketes",
            "format": "byte"
          }
        },
        "additionalProperties": false,
        "description": "Definiert die Liste von Fehlern, die bei der Verarbeitung von Vitalstatus-Meldungen aufgetreten sind"
      }
    }
  }
}