El problema: su sistema de almacenamiento debe garantizar que el identificador SSN sea único en todos los registros de pacientes. Esto significa que si intenta crear un nuevo paciente con un SSN y ya existe otro paciente con el mismo SSN, el sistema rechazará la solicitud para evitar registros duplicados.
Para resolver este problema en el servidor FHIR Aidbox, puede crear un índice que aplique esta regla:
CREATE UNIQUE INDEX patient_email_unique_idx1
ON patient ((jsonb_path_query_first(resource, '$.identifier[*] ? (@.system == "http://hl7.org/fhir/sid/us-ssn").value') #>> '{}'));
Explicación:
-
CREATE UNIQUE INDEX patient_ssn_unique_idx1 Define un índice único denominado
patient_ssn_unique_idx1. Al crear un índice único, PostgreSQL impide valores duplicados en la(s) columna(s) especificada(s). Si se inserta un valor duplicado, la base de datos generará un error de violación de restricción de unicidad. -
ON patient El índice se aplica a la tabla patient.
-
(jsonb_path_query_first(resource, '$.identifier[*] ? (@.system == "http://hl7.org/fhir/sid/us-ssn").value') #>> '{}') resource: Hace referencia a la columna JSONB que almacena los datos del paciente.
-
jsonb_path_query_first(...): Extrae el primer identificador que cumple la condición.
-
'$.identifier[*] ? (@.system == "http://hl7.org/fhir/sid/us-ssn").value': Busca todos los elementos identifier en el JSON del recurso.
-
Filtra los identificadores cuyo system es «http://hl7.org/fhir/sid/us-ssn» (lo que indica un SSN).
-
Extrae el campo value, que contiene el SSN real.
-
#>> '{}': Convierte el resultado JSONB extraído en un valor de texto plano para la indexación.
Pruébelo en su servidor FHIR local.
Véase también: Resolución de conflictos en SearchParameters de FHIR y FHIR como formato de almacenamiento de datos.




