Appearance
Campos Comunes
| Campo | Tipo | Descripción |
|---|---|---|
transaction_id | string | Identificador único de la transacción |
event_id | string | Identificador único del evento, útil para verificar idempotencia (duplicados) |
event_type | string | Tipo de evento (ver lista abajo) |
timestamp | string | Timestamp ISO 8601 del evento |
data | object | Payload específico del evento |
Tipos de EHR Composition
| Tipo | Descripción |
|---|---|
encounter_outpatient | Consulta médica ambulatoria |
medication_request | Prescripción de medicamentos |
service_request | Prescripción de servicios (laboratorio, imágenes, procedimientos, tratamientos, derivaciones) |
device_request | Prescripción de dispositivos médicos |
observation | Observación clínica (signos vitales, antropometría, etc.) |
Campos del Author
| Campo | Tipo | Descripción |
|---|---|---|
author_type | string | Tipo de autor (ej: practitioner) |
lastname | string | Apellido del profesional |
firstname | string | Nombre del profesional |
person_sex | string | Sexo del profesional |
date_of_birth | string | Fecha de nacimiento del profesional |
person_id_type | string | Tipo de documento del profesional |
person_id_number | string | Número de documento del profesional |
tin | string | Número de identificación tributaria |
Headers HTTP
http
POST /webhook
Authorization: Bearer tu-token-aqui
X-Webhook-Event: medication_request.created
X-Webhook-Signature: firma-hmac
Content-Type: application/json
User-Agent: Quralo-Webhooks/1.0Índice de Eventos
- encounter.created - Nueva consulta médica registrada
- medication_request.created - Nueva receta electrónica generada
- service_request.created - Nueva prescripción de servicio generada
- device_request.created - Nueva prescripción de dispositivo generada
Eventos Disponibles
encounter.created
Se dispara cuando se registra una nueva consulta médica.
Campos del Payload
| Campo | Tipo | Descripción |
|---|---|---|
ehr_composition_type | string | Tipo de composición EHR |
ehr_composition_id | integer | ID de la composición EHR |
encounter_id | integer | ID del encuentro médico |
created_at | string | Fecha de creación |
person | object | Información del paciente |
author | object | Información del profesional |
encounter | object | Detalles del encuentro |
encounter.type | string | Tipo de encuentro |
encounter.reason | object | Motivo de consulta |
encounter.status | string | Estado del encuentro |
clinical_impression | object | Impresión clínica |
conditions | array | Condiciones diagnosticadas |
Payload completo:
json
{
"transaction_id": "[AUTOGENERADO]",
"event_id": "[AUTOGENERADO]",
"event_type": "encounter.created",
"timestamp": "[AUTOGENERADO]",
"data": {
"ehr_composition_type": "encounter_outpatient",
"ehr_composition_id": 682,
"encounter_id": 28,
"created_at": "2025-06-02T13:10:34.309Z",
"person": {
"lastname": "Smith",
"firstname": "John",
"person_sex": "male",
"date_of_birth": "1990-03-15",
"person_id_type": "national_id",
"person_id_number": "12345678"
},
"author": {
"author_type": "practitioner",
"lastname": "Johnson",
"firstname": "Mary",
"person_sex": "female",
"date_of_birth": "1985-07-22",
"person_id_type": "national_id",
"person_id_number": "87654321",
"tin": "98765432100"
},
"encounter": {
"encounter_id": 28,
"type": "outpatient",
"reason": {
"value": "Paciente masculino de 34 años que refiere dolor lumbar desde hace 5 días, sin irradiación, empeora con los movimientos y mejora con reposo. No fiebre, no pérdida de fuerza ni alteraciones urinarias.",
"_version": 1
},
"status": "completed",
"created_at": "2025-06-02T13:10:34.287",
"start_date": "2025-06-02T13:10:34.286",
"end_date": "2025-06-02T13:10:34.287"
},
"clinical_impression": {
"summary": "lumbalgia mecánica",
"findings": "Al examen se observa contractura para vertebral izquierda sin signos neurológicos."
},
"conditions": [
{
"code": "279039007",
"name": "lumbalgia"
}
]
}
}medication_request.created
Se dispara cuando un médico genera una nueva receta electrónica.
Campos del Payload
| Campo | Tipo | Descripción |
|---|---|---|
ehr_composition_type | string | Tipo de composición EHR |
ehr_composition_id | integer | ID de la composición EHR |
encounter_id | integer | ID del encuentro médico |
created_at | string | Fecha de creación |
person | object | Información del paciente |
person.lastname | string | Apellido del paciente |
person.firstname | string | Nombre del paciente |
person.person_sex | string | Sexo del paciente |
person.date_of_birth | string | Fecha de nacimiento |
person.person_id_type | string | Tipo de documento |
person.person_id_number | string | Número de documento |
author | object | Información del profesional |
medication_requests | array | Lista de recetas |
medication_requests[].medication_request_id | integer | ID de la receta |
medication_requests[].cuir | string | CUIR de la receta |
medication_requests[].reasons | array | Diagnósticos asociados |
medication_requests[].issued_at | string | Fecha de emisión |
medication_requests[].postdated | boolean | Indica si es una receta diferida |
medication_requests[].postdated_parent_id | integer/null | ID de la receta original si es diferida |
medication_requests[].created_at | string | Fecha de creación de la receta |
medication_requests[].expires_at | string | Fecha de expiración de la receta |
medication_requests[].medicine_posology | object | Posología del medicamento |
medication_requests[].medicine_quantity | integer | Cantidad prescrita |
medication_requests[].medicine_longterm_treatment | boolean | Indica si es para tratamiento a largo plazo |
medication_requests[].obfuscate_data | boolean | Indica si la receta está marcada como confidencial |
medication_requests[].medicine | object | Información del medicamento |
Payload completo:
json
{
"transaction_id": "[AUTOGENERADO]",
"event_id": "[AUTOGENERADO]",
"event_type": "medication_request.created",
"timestamp": "[AUTOGENERADO]",
"data": {
"ehr_composition_type": "encounter_outpatient",
"ehr_composition_id": 682,
"encounter_id": 28,
"created_at": "2025-06-02T13:10:34.309Z",
"person": {
"lastname": "Smith",
"firstname": "John",
"person_sex": "male",
"date_of_birth": "1990-03-15",
"person_id_type": "national_id",
"person_id_number": "12345678"
},
"author": {
"author_type": "practitioner",
"lastname": "Johnson",
"firstname": "Mary",
"person_sex": "female",
"date_of_birth": "1985-07-22",
"person_id_type": "national_id",
"person_id_number": "87654321",
"tin": "98765432100"
},
"medication_requests": [
{
"medication_request_id": 272,
"cuir": "9600000024696",
"reasons": [
{
"code": "279039007",
"fsn": "Lumbalgia (hallazgo)",
"name": "lumbalgia"
}
],
"issued_at": "2025-06-02T13:13:48.79",
"postdated": true,
"postdated_parent_id": null,
"created_at": "2025-06-02T13:13:48.789525",
"expires_at": "2025-08-31T13:13:48.79",
"medicine_posology": {
"notes": "Administrar dos veces por día, recomendado que sea después de la comida o durante la comida.",
"_version": 2
},
"medicine_quantity": 1,
"medicine_longterm_treatment": true,
"obfuscate_data": false,
"medicine": {
"alfabeta_drug_id": 3070,
"alfabeta_prod_id": 23529,
"name": "BLOKIUM FLEX",
"presentation": "comp.x 15",
"pharmaceutical_form": "Comprimidos/Pastillas/Tabletas/Grageas",
"route": "oral",
"drug": "diclofenac+pridinol",
"pharmacotherapeutic_action": "Antiinflam.Analgésico.Miorrelajante",
"potency": "50/4 mg",
"units": "15 unidades"
}
}
]
}
}service_request.created
Se dispara cuando se genera una nueva prescripción de servicio (laboratorio, imágenes, procedimientos, tratamientos, derivaciones).
Campos del Payload
| Campo | Tipo | Descripción |
|---|---|---|
ehr_composition_type | string | Tipo de composición EHR |
ehr_composition_id | integer | ID de la composición EHR |
encounter_id | integer | ID del encuentro médico |
created_at | string | Fecha de creación |
ecl_transaction_id | string | ID de la transacción ECL |
ecl_metadata | object | Metadatos adicionales ECL |
person | object | Información del paciente |
person.lastname | string | Apellido del paciente |
person.firstname | string | Nombre del paciente |
person.person_sex | string | Sexo del paciente |
person.date_of_birth | string | Fecha de nacimiento |
person.person_id_type | string | Tipo de documento |
person.person_id_number | string | Número de documento |
author | object | Información del profesional |
service_requests | array | Lista de solicitudes de dispositivo |
service_requests[].service_request_id | integer | ID de la solicitud |
service_requests[].cuir | string | CUIR de la solicitud |
service_requests[].reasons | array | Diagnósticos asociados |
service_requests[].issued_at | string | Fecha de emisión |
service_requests[].created_at | string | Fecha de creación de la solicitud |
service_requests[].expires_at | string | Fecha de expiración de la solicitud |
service_requests[].obfuscate_data | boolean | Indica si la solicitud está marcada como confidencial |
service_requests[].service | object | Información del dispositivo o servicio solicitado |
service_requests[].service.category | string | Categoría del servicio (laboratory, imaging, procedure, referral) |
service_requests[].service.code | string | Código SNOMED CT del servicio |
service_requests[].service.name | string | Nombre del servicio |
service_requests[].service.notes | string | Notas adicionales |
Payload completo:
json
{
"transaction_id": "[AUTOGENERADO]",
"event_id": "[AUTOGENERADO]",
"event_type": "device_request.created",
"timestamp": "[AUTOGENERADO]",
"data": {
"ehr_composition_type": "encounter_outpatient",
"ehr_composition_id": 682,
"encounter_id": 28,
"created_at": "2025-06-02T13:10:34.309Z",
"ecl_transaction_id": "[AUTOGENERADO]",
"ecl_metadata": {},
"person": {
"lastname": "Smith",
"firstname": "John",
"person_sex": "male",
"date_of_birth": "1990-03-15",
"person_id_type": "national_id",
"person_id_number": "12345678"
},
"author": {
"author_type": "practitioner",
"lastname": "Johnson",
"firstname": "Mary",
"person_sex": "female",
"date_of_birth": "1985-07-22",
"person_id_type": "national_id",
"person_id_number": "87654321",
"tin": "98765432100"
},
"service_requests": [
{
"service_request_id": 272,
"cuir": "9600000024696",
"reasons": [
{
"code": "171409007",
"fsn": "Examen médico individual (procedimiento)",
"name": "Examen médico individual"
}
],
"issued_at": "2025-06-02T13:13:48.79",
"created_at": "2025-06-02T13:13:48.789525",
"expires_at": "2025-08-31T13:13:48.79",
"obfuscate_data": false,
"notes": "Ayuno de 8 horas previo al análisis.",
"service": {
"category": "laboratory",
"code": "26604007",
"name": "Hemograma completo",
}
}
]
}
}device_request.created
Se dispara cuando se genera una nueva prescripción de dispositivo médico.
Campos del Payload
| Campo | Tipo | Descripción |
|---|---|---|
ehr_composition_type | string | Tipo de composición EHR |
ehr_composition_id | integer | ID de la composición EHR |
encounter_id | integer | ID del encuentro médico |
created_at | string | Fecha de creación |
ecl_transaction_id | string | ID de la transacción ECL |
ecl_metadata | object | Metadatos adicionales ECL |
person | object | Información del paciente |
person.lastname | string | Apellido del paciente |
person.firstname | string | Nombre del paciente |
person.person_sex | string | Sexo del paciente |
person.date_of_birth | string | Fecha de nacimiento |
person.person_id_type | string | Tipo de documento |
person.person_id_number | string | Número de documento |
author | object | Información del profesional |
device_requests | array | Lista de solicitudes de dispositivo |
device_requests[].device_request_id | integer | ID de la solicitud |
device_requests[].cuir | string | CUIR de la solicitud |
device_requests[].reasons | array | Diagnósticos asociados |
device_requests[].issued_at | string | Fecha de emisión |
device_requests[].created_at | string | Fecha de creación de la solicitud |
device_requests[].expires_at | string | Fecha de expiración de la solicitud |
device_requests[].obfuscate_data | boolean | Indica si la solicitud está marcada como confidencial |
device_requests[].device | object | Información del dispositivo o servicio solicitado |
device_requests[].device.code | string | Código SNOMED CT del servicio |
device_requests[].device.name | string | Nombre del servicio |
device_requests[].device.notes | string | Notas adicionales |
Payload completo:
json
{
"transaction_id": "[AUTOGENERADO]",
"event_id": "[AUTOGENERADO]",
"event_type": "device_request.created",
"timestamp": "[AUTOGENERADO]",
"data": {
"ehr_composition_type": "encounter_outpatient",
"ehr_composition_id": 682,
"encounter_id": 28,
"created_at": "2025-06-02T13:10:34.309Z",
"ecl_transaction_id": "[AUTOGENERADO]",
"ecl_metadata": {},
"person": {
"lastname": "Smith",
"firstname": "John",
"person_sex": "male",
"date_of_birth": "1990-03-15",
"person_id_type": "national_id",
"person_id_number": "12345678"
},
"author": {
"author_type": "practitioner",
"lastname": "Johnson",
"firstname": "Mary",
"person_sex": "female",
"date_of_birth": "1985-07-22",
"person_id_type": "national_id",
"person_id_number": "87654321",
"tin": "98765432100"
},
"device_requests": [
{
"device_request_id": 272,
"cuir": "9600000024696",
"reasons": [
{
"code": "171409007",
"fsn": "Examen médico individual (procedimiento)",
"name": "Examen médico individual"
}
],
"issued_at": "2025-06-02T13:13:48.79",
"created_at": "2025-06-02T13:13:48.789525",
"expires_at": "2025-08-31T13:13:48.79",
"obfuscate_data": false,
"notes": "Ayuno de 8 horas previo al análisis.",
"device": {
"code": "26604007",
"name": "Hemograma completo",
}
}
]
}
}