Appearance
Publicación de DiagnosticReport
Esta sección describe cómo realizar la publicación de un informe de diagnóstico.
Solicitud
La publicación se realiza enviando un recurso FHIR de tipo Parameters. A continuación se detallan los recursos principales.
Recursos
1. Paciente (Recurso FHIR R4 Patient)
Se envían todos los datos que permitan identificar al paciente:
- Nombre y Apellido
- Tipo de identificación: Se utiliza la URI correspondiente del Registro Nacional de las Personas (RENAPER) para indicar si es DNI o de HL7 (http://hl7.org/fhir/sid/passport) para Pasaporte y el tipo de documento según la codificación de FHIR.
- Número de identificación: Número de documento (del DNI o Pasaporte).
- Datos de contacto: Email y teléfono del paciente.
- Sexo
- Fecha de nacimiento
2. Organización (Recurso FHIR R4 Organization)
Información de la organización que envía el estudio:
- Nombre de la organización
- Identificador: UUID de la organización en Quralo.
3. Informe (Recurso FHIR R4 DiagnosticReport)
El recurso principal que contiene:
- Estado: Indica si el informe se encuentra en curso o finalizado.
- Categoría: Categoría a la que pertenece el informe. Puede haber más de 1. (ver documentación).
- Código: Nombre/código del informe (ver documentación).
- Paciente: Referencia al paciente al que pertenece el informe.
- Organización: Referencia a la organización que envía el informe.
- Fecha y hora efectiva: Fecha y hora al que corresponden los valores observados.
- Fecha y hora de emisión: Fecha y hora en que se emite el informe.
- Conclusión: Texto breve con el resultado o interpretación.
- Documento adjunto: Se incluye el archivo original codificado en Base64. Puede haber más de un archivo.
Headers
- Content-Type:
application/fhir+json
Estructura
El resourceType es Parameters y cada parámetro corresponde a un recurso FHIR.
patient (Recurso
Patient)resourceType:"Patient"id:Identificador del paciente en el Payload.name:Nombre y apellido del paciente.family:Apellido del paciente.given:Nombre/s del paciente.
identifier:Identificador del paciente.system:URI de tipo de identificación del paciente.- Si es DNI argentino: http://www.renaper.gob.ar/dni
- Si es Pasaporte: http://hl7.org/fhir/sid/passport
value:Número de documento del paciente.type:Tipo de documento según la codificación de FHIR.- Si es DNI: NI
- Si es Pasaporte: PPN
telecom: Información de contacto del paciente.system:Tipo de contacto del paciente.- Si es Email: email
- Si es Teléfono: phone
value:Número de teléfono o email del paciente.use:(Optativo) Uso del contacto del paciente.- Si es de su Domicilio: home
- Si es de su Trabajo: work
- Si es su Teléfono celular: mobile
gender:Sexo del paciente.- Si es Masculino: male
- Si es Femenino: female
- Si es Otro: other
birthDate:Fecha de nacimiento del paciente en formato YYYY-MM-DD (sin hora).
organization (Recurso
Organization)resourceType:"Organization"id:Identificador de la organización en el Payload.name:Nombre de la organización.identifier:Identificador de la organización.system:URI de identificación de la organización: http://quralo.com/organizationvalue:Identificador de la organización en Quralo (es de tipo UUID).
diagnosticReport (Recurso
DiagnosticReport)resourceType:"DiagnosticReport"status:Estado del informe (ver documentación).- registered: El informe ha sido registrado en el sistema, pero aún no está disponible para su visualización o uso clínico.
- partial: El informe está en proceso de elaboración y puede contener datos incompletos o no verificados.
- preliminary: El informe incluye los primeros resultados que han sido verificados, aunque no todos los resultados son definitivos.
- final: El informe está completo y ha sido verificado por la persona autorizada.
- unknown: El sistema de origen/autor desconoce cuál de los estados se aplica actualmente a esta observación. Nota: Este concepto no debe utilizarse para "otro": se presume que se aplica uno de los estados enumerados, pero el sistema de origen/autor desconoce cuál.
category:Categoría de servicio del informe (1..*). (ver documentación)system:URI del sistema de terminología (http://terminology.hl7.org/CodeSystem/v2-0074).code:Código de la categoría en el sistema de terminología elegido (obligatorio)display:Descripción de la categoría (opcional, recomendado)
code:Código del informe (1..*). Se debe informar como un CodeableConcept, aceptando una de las siguientes opciones:text:Descripción del informe (obligatorio).coding:Lista de codificaciones (al menos una obligatoria si no se informatext)system:URI del sistema de terminología (SNOMED, LOINC, etc).code:Código del concepto en el sistema de terminología elegido (obligatorio)display:Descripción del código (opcional, recomendado)
subject:Referencia en el Payload del recurso "Patient" al que pertenece el informe.performer:Referencia en el Payload del recurso "Organization" que realizó el informe.effectiveDateTime:Fecha y hora en la que la observación o el estudio fue efectivamente realizado. Se puede enviar en hora local o en UTC. Quralo la almacena en formato UTC.issued:Fecha y hora de emisión de la versión actual del informe. Se puede enviar en hora local o en UTC. Quralo la almacena en formato UTC.conclusion:Texto breve con el resultado o interpretación.presentedForm:Documento adjunto (preferentemente un archivo PDF) (1..*).contentType:Tipo de contenido del documento (preferentemente "application/pdf").title:Título del documento.data:Documento en base64.hash:Hash del documento.creation:Fecha de creación del documento. Se puede enviar en hora local o en UTC. Quralo la almacena en formato UTC.
POST
/fhir/r4/DiagnosticReport/$registerPermite la publicación de un nuevo informe de resultados
Ejemplo de Payload
json
{
"resourceType": "Parameters",
"parameter": [
{
"name": "patient",
"resource": {
"resourceType": "Patient",
"id": "subject-patient",
"name": [
{
"family": "Perez",
"given": ["Juan", "Carlos"]
}
],
"identifier": [
{
"system": "http://www.renaper.gob.ar/dni",
"value": "34111113",
"type": {
"coding": [
{
"system": "http://terminology.hl7.org/CodeSystem/v2-0203",
"code": "NI"
}
]
}
}
],
"telecom": [
{ "system": "email",
"value": "juan.perez@email.com",
"use": "home"
},
{ "system": "phone",
"value": "+541149723000",
"use": "mobile"
}
],
"gender": "male",
"birthDate": "2004-10-28"
}
},
{
"name": "organization",
"resource": {
"resourceType": "Organization",
"id": "performer-organization",
"name": "Clínica IMA",
"identifier": [
{
"system": "https://quralo.com/organizations",
"value": "c94deab2-37fa-436e-b5ab-9d5d41f1b271"
}
]
}
},
{
"name": "diagnosticReport",
"resource": {
"resourceType": "DiagnosticReport",
"status": "registered",
"category": [
{
"coding": [
{
"system": "http://terminology.hl7.org/CodeSystem/v2-0074",
"code": "LAB",
"display": "Laboratory"
}
]
}
],
"code": {
"text": "Hemograma completo"
},
"subject": {
"reference": "Patient/subject-patient"
},
"performer": [
{
"reference": "Organization/performer-organization"
}
],
"effectiveDateTime": "2024-07-09T10:00:00Z",
"issued": "2024-07-09T12:00:00Z",
"conclusion": "Valores dentro de rangos normales."
},
"presentedForm": [
{
"contentType": "application/pdf",
"title": "Informe PDF",
"data": "JVBERi0xLjMKJZOMi54gUmVwb3J0TGFiIEdlbmVyYXRlZCBQREYgZG9jdW1lbnQgaHR0cDovL3d3dy5yZXBvcnRsYWIuY29tCjEgMCBvYmoKPDwKL0YxIDIgMCBSCj4+CmVuZG9iagoyIDAgb2JqCjw8Ci9CYXNlRm9udCAvSGVsdmV0aWNhIC9FbmNvZGluZyAvV2luQW5zaUVuY29kaW5nIC9OYW1lIC9GMSAvU3VidHlwZSAvVHlwZTEgL1R5cGUgL0ZvbnQKPj4KZW5kb2JqCjMgMCBvYmoKPDwKL0NvbnRlbnRzIDcgMCBSIC9NZWRpYUJveCBbIDAgMCA1OTUuMjc1NiA4NDEuODg5OCBdIC9QYXJlbnQgNiAwIFIgL1Jlc291cmNlcyA8PAovRm9udCAxIDAgUiAvUHJvY1NldCBbIC9QREYgL1RleHQgL0ltYWdlQiAvSW1hZ2VDIC9JbWFnZUkgXQo+PiAvUm90YXRlIDAgL1RyYW5zIDw8Cgo+PiAKICAvVHlwZSAvUGFnZQo+PgplbmRvYmoKNCAwIG9iago8PAovUGFnZU1vZGUgL1VzZU5vbmUgL1BhZ2VzIDYgMCBSIC9UeXBlIC9DYXRhbG9nCj4+CmVuZG9iago1IDAgb2JqCjw8Ci9BdXRob3IgKFwoYW5vbnltb3VzXCkpIC9DcmVhdGlvbkRhdGUgKEQ6MjAyNjA0MjkwMDAyMTArMDAnMDAnKSAvQ3JlYXRvciAoXCh1bnNwZWNpZmllZFwpKSAvS2V5d29yZHMgKCkgL01vZERhdGUgKEQ6MjAyNjA0MjkwMDAyMTArMDAnMDAnKSAvUHJvZHVjZXIgKFJlcG9ydExhYiBQREYgTGlicmFyeSAtIHd3dy5yZXBvcnRsYWIuY29tKSAKICAvU3ViamVjdCAoXCh1bnNwZWNpZmllZFwpKSAvVGl0bGUgKFwoYW5vbnltb3VzXCkpIC9UcmFwcGVkIC9GYWxzZQo+PgplbmRvYmoKNiAwIG9iago8PAovQ291bnQgMSAvS2lkcyBbIDMgMCBSIF0gL1R5cGUgL1BhZ2VzCj4+CmVuZG9iago3IDAgb2JqCjw8Ci9GaWx0ZXIgWyAvQVNDSUk4NURlY29kZSAvRmxhdGVEZWNvZGUgXSAvTGVuZ3RoIDg1Cj4+CnN0cmVhbQpHYXBRaDBFPUYsMFVcSDNUXHBOWVReUUtrP3RjPklQLDtXI1UxXjIzaWhQRU1fSCJaZyNaWVNWVGpWYk1YQ2tzTUJgWmAiKCEqNWUiVFs9UyU/TH4+ZW5kc3RyZWFtCmVuZG9iagp4cmVmCjAgOAowMDAwMDAwMDAwIDY1NTM1IGYgCjAwMDAwMDAwNzMgMDAwMDAgbiAKMDAwMDAwMDEwNCAwMDAwMCBuIAowMDAwMDAwMjExIDAwMDAwIG4gCjAwMDAwMDA0MTQgMDAwMDAgbiAKMDAwMDAwMDQ4MiAwMDAwMCBuIAowMDAwMDAwNzY1IDAwMDAwIG4gCjAwMDAwMDA4MjQgMDAwMDAgbiAKdHJhaWxlcgo8PAovSUQgCls8OGQ4NmExNzMyMDNkNzc3NTIyNTZlYTJiMDhjOTYxMjg+PDhkODZhMTczMjAzZDc3NzUyMjU2ZWEyYjA4Yzk2MTI4Pl0KJSBSZXBvcnRMYWIgZ2VuZXJhdGVkIFBERiBkb2N1bWVudCAtLSBkaWdlc3QgKGh0dHA6Ly93d3cucmVwb3J0bGFiLmNvbSkKCi9JbmZvIDUgMCBSCi9Sb290IDQgMCBSCi9TaXplIDgKPj4Kc3RhcnR4cmVmCjk5OAolJUVPRgo=",
"hash": "ef98d6a05fb49226ec4b05b4d9f7db1b8aab624223166800680f328ad7812d66",
"creation": "2024-07-09T10:00:00Z"
}
]
}Respuestas
A continuación se listan las posibles respuestas.
Caso exitoso
Código: 201 Created
Siendo RESOURCE_ID el identificador del recurso DiagnosticReport en Quralo y RESOURCE_VERSION la versión del recurso DiagnosticReport en el historial.
Importante – Identificación del recurso creado
Al crear recursos mediante POST, el identificador del recurso se informa en el header HTTP Location, que constituye la fuente canónica en respuestas de creación (201 Created). Si bien el body puede incluir el recurso, esto no está garantizado en todos los casos. Se recomienda obtener el ID exclusivamente desde el header Location.
Headers
- Location:
https://connect.quralo.com/fhir/r4/DiagnosticReport/{RESOURCE_ID}/_history/{RESOURCE_VERSION} - Content-Type:
application/fhir+json - ETag:
W/"{RESOURCE_VERSION}" - Last-Modified:
YYYY-MM-DDTHH:MM:SS.SSSZ
Parámetros
El resourceType es Parameters y cada parámetro corresponde a un recurso DiagnosticReport y OperationOutcome.
diagnosticReport (Recurso
DiagnosticReport)resourceType:"DiagnosticReport"id:Identificador UUID del informe en Quralo.meta:Metadatos del informe.versionId:Versión del informe recién creado en Quralo.lastUpdated:Fecha y hora de la última actualización del informe.
status:Estado actual del informe en Quralo.
operationOutcome (Recurso
OperationOutcome)resourceType:"OperationOutcome"issue:Lista de issues asociados a la respuesta:severity:Severidad del issue.code:Código del issue.diagnostics:Diagnóstico del issue.
Ejemplo de Respuesta
json
{
"resourceType": "Parameters",
"parameter": [
{
"name": "diagnosticReport",
"resource": {
"resourceType": "DiagnosticReport",
"id": "ea58008d-d5cd-4023-a916-d242ea10f55b",
"meta": {
"versionId": 1,
"lastUpdated": "2026-05-04T12:33:15.887Z"
},
"status": "final"
}
},
{
"name": "issues",
"resource": {
"resourceType": "OperationOutcome",
"issue": [
{
"severity": "warning",
"code": "invalid",
"diagnostics": "Patient.identifier[0].type: Code \"NI\" (http://terminology.hl7.org/CodeSystem/v2-0203) not found in value set"
},
{
"severity": "info",
"code": "invalid",
"diagnostics": "DiagnosticReport.category[0]: Value set \"http://hl7.org/fhir/ValueSet/diagnostic-service-sections\" could not be found."
},
{
"severity": "warning",
"code": "invalid",
"diagnostics": "DiagnosticReport.category[0]: Code \"LAB\" (http://terminology.hl7.org/CodeSystem/v2-0074) not found in value set"
},
{
"severity": "info",
"code": "invalid",
"diagnostics": "DiagnosticReport.presentedForm[0].contentType: Value set \"http://hl7.org/fhir/ValueSet/mimetypes\" could not be found."
}
]
}
}
]
}Casos de error
Código: 400 Bad Request
Headers
- Content-Type:
application/fhir+json
Parámetros
resourceType Tipo de recurso para indicar errores (siguiendo el estándar FHIR es de tipo
OperationOutcome).issue Listado de problemas detectados en la petición.
severity:Severidad del error (ej. "error").code:Código de error (ej. "invalid").diagnostics:Mensaje descriptivo con el problema detallado.
Ejemplo de Respuesta
json
{
"resourceType": "OperationOutcome",
"issue": [
{
"severity": "error",
"code": "exception",
"diagnostics": "code.text is required and must be a string"
}
]
}