---
{
  "title": "Eindeutige Constraints implementieren",
  "description": "Ihr Speichersystem muss sicherstellen, dass die SSN-Kennung über alle Patientendatensätze hinweg eindeutig ist. Das bedeutet: Wenn Sie versuchen, einen neuen Patienten mit einer SSN anzulegen, und bereits ein Patient mit derselben SSN existiert, lehnt das System die Anfrage ab, um Duplikate zu verhindern.",
  "date": "2025-04-11",
  "author": "Evgeny Mukha",
  "reading-time": "5 min",
  "tags": [
    "Aidbox",
    "Database"
  ]
}
---
Das Problem: Ihr Speichersystem muss sicherstellen, dass die SSN-Kennung über alle Patientendatensätze hinweg eindeutig ist. Das bedeutet: Wenn Sie versuchen, einen neuen Patienten mit einer SSN anzulegen, und bereits ein Patient mit derselben SSN existiert, lehnt das System die Anfrage ab, um Duplikate zu verhindern.

Um dieses Problem im Aidbox FHIR Server zu lösen, können Sie einen Index erstellen, der diese Regel durchsetzt:


```javascript
CREATE UNIQUE INDEX patient_email_unique_idx1
ON patient ((jsonb_path_query_first(resource, '$.identifier[*] ? (@.system == "http://hl7.org/fhir/sid/us-ssn").value') #>> '{}'));
```


Erläuterung:
- **CREATE UNIQUE INDEX patient_ssn_unique_idx1** Hiermit wird ein eindeutiger Index namens `patient_ssn_unique_idx1` definiert. Wenn Sie einen **Unique Index** erstellen, verhindert PostgreSQL doppelte Werte in den angegebenen Spalten. Wird ein doppelter Wert eingefügt, wirft die Datenbank einen Fehler wegen einer **Unique-Constraint-Verletzung**.
- **ON patient** Der Index wird auf die Patiententabelle angewendet.
- **(jsonb_path_query_first(resource, '$.identifier[*] ? (@.system == "http://hl7.org/fhir/sid/us-ssn").value') #>> '{}')**
**resource**: Verweist auf die JSONB-Spalte, in der die Patientendaten gespeichert sind.
- **jsonb_path_query_first(...)**: Extrahiert die erste Kennung, die die Bedingung erfüllt.
- **'$.identifier[*] ? (@.system == "http://hl7.org/fhir/sid/us-ssn").value'**:
Durchsucht alle Identifier-Elemente im Ressourcen-JSON.
- Filtert Kennungen, bei denen das System „http://hl7.org/fhir/sid/us-ssn" ist (was eine SSN anzeigt).
- Extrahiert das Feld value, das die eigentliche SSN enthält.

- **#>> '{}'**: Konvertiert das extrahierte JSONB-Ergebnis in einen einfachen Textwert für die Indizierung.

[Testen Sie es auf Ihrem lokalen FHIR-Server](https://www.health-samurai.io/aidbox).

Siehe auch: [Konflikthafte FHIR SearchParameters auflösen](/blog/resolve-fhir-searchparameters-conflicting) und [FHIR als Datenspeicherformat](/blog/should-you-use-fhir-resources-as-your-data-storage-format).