Maximo API#
Introducción#
¡Bienvenido a la documentación oficial de la API Maximo! Esta API te brinda acceso a datos cruciales relacionados con eventos médicos, laboratorios, movimientos de stock y más. Aprovecha estas funciones para integrar con éxito la potencia de Maximo en tu aplicación.
Autenticación#
Para realizar cualquier solicitud a la API, debes autenticarte. Utilizamos un sistema de token JWT (JSON Web Token) para garantizar la seguridad. Para obtener un token, realiza una solicitud POST a la siguiente ruta:
/api/authenticate
El cuerpo de la solicitud debe incluir un objeto JSON con tus credenciales:
{
"login": "tu_usuario",
"password": "tu_contraseña"
}
Hechos Diarios#
Definición de Hechos Diarios#
Representa eventos diarios asociados a un conjunto específico de datos.
Documentos de Hechos Diarios disponibles#
De Historia Clinica#
daily_fact_person_event
daily_fact_person_event_complementary_examen
daily_fact_person_event_consult
daily_fact_person_event_diagnostic
daily_fact_person_event_discharge_order
daily_fact_person_event_internment_order
daily_fact_person_event_operating_room
daily_fact_person_event_practices
daily_fact_person_event_surgical_procedure
daily_fact_person_event_templates
daily_fact_person_event_template_background_file_entry
daily_fact_person_event_template_measurements_and_algorithms
daily_fact_person_event_template_preoperative_cardiovascular_evaluation
daily_fact_person_event_template_treatments_and_practices_colonoscopy -daily_fact_person_event_template_treatments_and_practices_laboratory_result
daily_fact_person_event_vaccine_application
daily_fact_person_event_work_accident
De Muestras de Laboratorio#
daily_fact_laboratory_sample
De estudios de Imagenes#
daily_fact_image_study_events
De Stock#
daily_fact_stock_movement_event
daily_fact_stock_transfer_event
daily_fact_stock_transfer_metrics
De Equipamiento#
daily_fact_equipment_movement_event
De Agenda#
daily_fact_schedule_day_event
De Lista de Espera#
daily_fact_waiting_list_event
daily_fact_waiting_list_occupancy
De Triage#
daily_fact_triage_event
De Presupuestos#
daily_fact_patient_budget
daily_fact_patient_budget_item
daily_fact_budget_invoice_events
daily_fact_budget_invoice_department_events
daily_fact_budget_invoice_detail_events
De Internacion#
daily_fact_hospitalization_event_discharge_order
daily_fact_hospitalization_event_internment_order
De Prescripcion#
daily_fact_prescription_events
De Ordenes de cirugia#
daily_fact_surgery_order_event
De Liquidacion de personal#
daily_fact_personnel_liquidation_events
De comedor#
daily_fact_dinning_room_events
Estructura#
{
"name": "daily_fact_person_event",
"factIdentifier": "master_person_clinical_events",
"fields": [
// Definición de campos
],
"filtrableFields": [
// Campos filtrables
],
"groupableFields": [
// Campos agrupables
],
"sumarizableFields": [
// Campos sumarizables
]
}
name:Nombre del conjunto de datos.factIdentifier:Nombre del conjunto de datos principal del cual se deriva esta colección.fields:Definición de cada campo en el documento, incluyendo nombre y tipo (boolean, numeric, string, date, datetime, enum, object).filtrableFields:Campos en los cuales se puede realizar una operación de filtrado.groupableFields:Campos en los cuales se puede realizar una operación de agrupación.sumarizableFields:Campos en los cuales se puede realizar una operación de sumarización.
Operaciones sobre Hechos Diarios#
Consulta todos los Hechos Diarios disponibles#
Para consultar hechos diarios, realiza una solicitud GET a la siguiente ruta:
/api/user/fact
Consulta de Hechos Diarios por Identificador#
Para obtener hechos diarios por identificador, realiza una solicitud POST a la siguiente ruta:
/api/user/fact
El cuerpo de la solicitud debe incluir un objeto JSON con detalles específicos, como el identificador y las condiciones.
Un ejemplo:#
{
"identifier": "daily_fact_person_event",
"date": "2023-03-01",
"condition": {
"type": "AND",
"conditions": [{
"type": "EQ",
"field": "context.schedule",
"value": true
},
{
"type": "NE",
"field": "eventType",
"value": "DISABLING_EVENT"
}
]
},
"group": {
"fields": ["patient.sex", "eventType"],
"operations": [
{
"type" : "COUNT"
}
]
}
}
Composicion de la solicitud#
conditions:
Define las condiciones que deben cumplir los documentos y solo se pueden aplicar a campos filtrables. (filtrableFields)
Pueden de dos tipos de comparacion y logicas
Comparación:
EQ (equals)
NE (not equals)
IFNULL (if null)
GT (greater than)
GTE (greater than equals)
LT (lower than)
LTE (lower than equals)
Logicas:
AND
OR
Ejemplos de filtros:
Devolver solo los eventos que provengan de una agenda:
"condition": {
"type": "EQ",
"field": "context.schedule",
"value": true
}
Filtrar eventos de agenda que no sean del tipo «DISABLING_EVENT»:
"condition": {
"type": "AND",
"conditions": [{
"type": "EQ",
"field": "context.schedule",
"value": true},
{
"type": "NE",
"field": "eventType",
"value": "DISABLING_EVENT" }
]
}
group:
Define cómo se agrupará el resultado y solo se puede aplicar a campos agrupables. (groupableFields)
Tambien define la posibilidad de sumarizar los resultados, solo se aplica a campos sumarizables (sumarizableFields).
Las posibles operaciones de sumarizacion son:
COUNT
SUM
AVG
Las operaciones requieren el campo sobre el cual se va a operar y un alias para el resultado, en caso de no poner un alias se utiliza el mismo nombre de la operacion.
La operacion COUNT es la unica que no requiere un campo
Ejemplos de agrupación:
Agrupar documentos por la edad de la persona:
{
"group": {
"fields" : ["patient.age.year"],
"operations": []
}
}
Agrupar documentos por sexo de la persona y contar la cantidad:
{
"group": {
"fields" : ["patient.sex"],
"operations": [{
"type" : "COUNT"
}]
}
}
Ejemplos de consulta a una coleccion de hechos#
Devolver todos los hechos de un día particular:
{
"identifier": "daily_fact_person_event",
"date": "2023-10-01"
}
Agrupar hechos de un día particular por edad del paciente y contar:
{
"identifier": "daily_fact_person_event",
"date": "2023-10-01",
"group": {
"fields": ["patient.age.year"],
"operations": [
{ "type" : "COUNT" }
]
}
}
Filtrar hechos de un día particular por contexto, excluir «DISABLING_EVENT» y agrupar por sexo y tipos de evento:
{
"identifier": "daily_fact_person_event",
"date": "2023-03-01",
"condition": {
"type": "AND",
"conditions": [{
"type": "EQ",
"field": "context.schedule",
"value": true
},
{
"type": "NE",
"field": "eventType",
"value": "DISABLING_EVENT"
}
]
},
"group": {
"fields": ["patient.sex", "eventType"],
"operations": [
{
"type" : "COUNT"
}
]
}
}
Indicadores#
Definicion de Indicadores#
Los indicadores proporcionan datos más procesados y precalculados basados en los hechos diarios.
Estructura:#
{
"identifier": "00000000-0000-0000-0003-000000000001",
"description": "daily_fact_person_event |filters:{disabled=false} |group: {,fields:[eventType], count:{}}",
"origin": "daily_fact_person_event",
"filters": {
"type": "EQ",
"field": "disabled",
"value": false
},
"groups": {
"fields": [
"eventType"
],
"operations": [
{
"type": "COUNT",
"field": null,
"alias": "count"
}
]
},
"version": 1
}
identifier:Código único del indicador relacionado al documento de hechos.description:Composición de condiciones, agrupaciones y sumarizaciones que componen el indicador.origin:Documento de hechos utilizado para calcular el indicador.filters:Condiciones aplicadas al documento de hechos para filtrar elementos deseados.group:Agrupación realizada para calcular el indicador.version:Versión del indicador.
Operaciones sobre Indicadores#
Obtener todos los Indicadores#
Para obtener todos los indicadores, realiza una solicitud GET a la siguiente ruta:
/api/user/indicator
Consulta de un Indicador particular#
Para obtener datos de hechos para un indicador, realiza una solicitud POST a la siguiente ruta:
/api/user/indicator
El cuerpo de la solicitud debe incluir un objeto JSON con detalles del indicador y condiciones adicionales:
{
"identifier": "00000000-0000-0000-0003-000000000001",
"start": "2023-11-28",
"end": "2023-11-28",
"condition": {
"type": "AND",
"field": "string",
"value": {}
},
"periodicity": "DAILY",
"limit": 100
}
identifierstart, end
Fechas entre las cuales se piden los datos.
condition
Condiciones de filtro sobre el indicador.
periodicity:
Frecuencia de cálculo del indicador (DAILY, WEEKLY, MONTHLY, YEARLY, ALL_TIME).
limit
Límite de resultados.