Luna SaludReferencia de la APILuna Salud

Asignar o quitar etiquetas a un paciente

POST/patient/tags

Asigna y/o quita etiquetas a un solo paciente, identificándolas por NOMBRE, de modo que un sistema externo pueda enviar su propio vocabulario sin conocer los IDs de etiqueta de Luna.

Un nombre en add que aún no exista se crea en su organización. Un nombre en remove que no exista se ignora. Quitar una etiqueta la desvincula únicamente de este paciente; la etiqueta se conserva, porque otros pacientes y filtros de seguimiento pueden usarla.

La llamada es idempotente: asignar una etiqueta que el paciente ya tiene, o quitar una que no tiene, se completa correctamente y no cambia nada, así que reintentar tras un fallo de red siempre es seguro.

Los nombres se recortan y los espacios internos se reducen a uno; la coincidencia distingue mayúsculas de minúsculas, por lo que "Venta" y "venta" son dos etiquetas distintas. Máximo 50 nombres por campo. El nombre de una etiqueta NUEVA puede tener hasta 60 caracteres; un nombre existente más largo sigue resolviéndose, de modo que una etiqueta devuelta por GET /patient siempre puede quitarse. El mismo nombre no puede aparecer en ambos campos.

Devuelve las etiquetas que el paciente tiene después del cambio.

Requiere una clave de API con permiso de escritura.

Ejemplos de código

Node.js

const fetch = require('node-fetch');

async function llamarApi() {
  const claveApi = 'YOUR_API_KEY';
  const url = `https://account.lunahealth.app/api/patient/tags`;
  const requestBody = {
    // Agregue sus datos del cuerpo de la solicitud aquí
  };

  try {
    const response = await fetch(url, {
      method: 'POST',
      headers: {
        'Authorization': `Bearer ${claveApi}`,
        'Content-Type': 'application/json'
      },
      body: JSON.stringify(requestBody)
    });
    
    if (!response.ok) {
      throw new Error(`API error: ${response.status}`);
    }
    
    const data = await response.json();
    console.log(data);
    return data;
  } catch (error) {
    console.error('Error al llamar a la API:', error);
    throw error;
  }
}

llamarApi();

Python

import requests

def llamarApi():
    claveApi = 'YOUR_API_KEY'
    
    url = 'https://account.lunahealth.app/api/patient/tags'
    
    headers = {
        'Authorization': f'Bearer {claveApi}',
        'Content-Type': 'application/json'
    }
    
    params = {

    }
    
    # Agregue sus datos del cuerpo de la solicitud aquí
    request_body = {}
        try:
        response = requests.post(
            url,
            headers=headers,
            params=params,
            json=request_body
        )
        response.raise_for_status()
        
        data = response.json()
        print(data)
        return data
    except requests.exceptions.RequestException as e:
        print(f'Error al llamar a la API: {e}')
        raise

llamarApi()

Cuerpo de la solicitud

Requerido

Campos de la solicitud

NombreTipoRequeridoDescripción
patientIdstringSíID del paciente
addarray<string>NoNombres de etiquetas a asignar. Se crean en su organización si son nuevas.
removearray<string>NoNombres de etiquetas a quitar de este paciente.

Ejemplo de solicitud

{
  "patientId": "string",
  "add": [
    "string"
  ],
  "remove": [
    "string"
  ]
}

Respuestas

EstadoDescripción
200Respuesta exitosa
400Datos de entrada no válidos
401Autorización no proporcionada
403Acceso insuficiente
500Error interno del servidor

200 — Respuesta exitosa

Campos de la respuesta

NombreTipoRequeridoDescripción
patientIdstringSí—
tagsarray<object>SíLas etiquetas del paciente después del cambio

Ejemplo de respuesta

{
  "patientId": "string",
  "tags": [
    {
      "id": "string",
      "name": "string"
    }
  ]
}

400 — Datos de entrada no válidos

Campos de la respuesta

NombreTipoRequeridoDescripción
messagestringSíThe error message
codestringSíThe error code
issuesarray<object>NoAn array of issues that were responsible for the error

Ejemplo de respuesta

{
  "code": "BAD_REQUEST",
  "message": "Invalid input data",
  "issues": []
}

401 — Autorización no proporcionada

Campos de la respuesta

NombreTipoRequeridoDescripción
messagestringSíThe error message
codestringSíThe error code
issuesarray<object>NoAn array of issues that were responsible for the error

Ejemplo de respuesta

{
  "code": "UNAUTHORIZED",
  "message": "Authorization not provided",
  "issues": []
}

403 — Acceso insuficiente

Campos de la respuesta

NombreTipoRequeridoDescripción
messagestringSíThe error message
codestringSíThe error code
issuesarray<object>NoAn array of issues that were responsible for the error

Ejemplo de respuesta

{
  "code": "FORBIDDEN",
  "message": "Insufficient access",
  "issues": []
}

500 — Error interno del servidor

Campos de la respuesta

NombreTipoRequeridoDescripción
messagestringSíThe error message
codestringSíThe error code
issuesarray<object>NoAn array of issues that were responsible for the error

Ejemplo de respuesta

{
  "code": "INTERNAL_SERVER_ERROR",
  "message": "Internal server error",
  "issues": []
}