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
}
  • identifier

  • start, 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.