> For the complete documentation index, see [llms.txt](https://docs.cuxial.com/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.cuxial.com/scripts/es/policia-y-medico/cuxial-diseases/configuration.md).

# Configuración

Todas las opciones de Cuxial Diseases explicadas: config, catálogo de enfermedades, cómo añadir una enfermedad y embarazo.

Todo lo que puedes ajustar está en tres archivos: `shared/config.lua` para el comportamiento, `data/diseases.lua` para el catálogo de enfermedades y `data/pregnancy.lua` para el embarazo. Reinicia el recurso después de cada cambio.

{% hint style="info" %}
Los tiempos de etapas, tratamiento, vacuna e inmunidad son **horas reales** y siguen contando con el jugador desconectado. Los intervalos de los síntomas son **minutos de juego**: solo cuentan mientras el jugador está conectado.
{% endhint %}

## General

| Opción  | Tipo    | Por defecto | Qué hace                                                                                        |
| ------- | ------- | ----------- | ----------------------------------------------------------------------------------------------- |
| `debug` | boolean | `false`     | Imprime trazas en consola. También se activa poniendo la convar `cuxial_diseases_debug` en `1`. |

## Contagio por cercanía · `proximity`

Solo afecta a las enfermedades que tienen `contagion.proximity` en el catálogo.

| Opción             | Tipo          | Por defecto   | Qué hace                                                                                                          |
| ------------------ | ------------- | ------------- | ----------------------------------------------------------------------------------------------------------------- |
| `enabled`          | boolean       | `false`       | `true` hace que los enfermos contagien a quien tengan cerca. `false` desactiva del todo el contagio por cercanía. |
| `tickSeconds`      | number        | `30`          | Segundos entre comprobaciones de contagio.                                                                        |
| `maskItem`         | string \| nil | `'face_mask'` | Ítem que protege a quien lo lleva en el inventario. `nil` = nada protege.                                         |
| `maskProtection`   | number        | `85`          | Porcentaje del riesgo que quita la mascarilla, de 0 a 100.                                                        |
| `indoorMultiplier` | number        | `1.5`         | Multiplicador del riesgo cuando el jugador expuesto está en un interior.                                          |

## Síntomas · `symptoms`

| Opción         | Tipo    | Por defecto | Qué hace                                                                                                                                                          |
| -------------- | ------- | ----------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `enabled`      | boolean | `true`      | `true` hace que los jugadores sufran los síntomas. `false` mantiene enfermedades, etapas y tratamientos, sin ningún efecto en el juego, pérdida de vida incluida. |
| `skipWhenDead` | boolean | `true`      | `true` pausa los síntomas mientras el jugador está muerto o inconsciente. `false` los mantiene.                                                                   |
| `sounds`       | boolean | `true`      | `true` reproduce un quejido de voz en la tos y el vómito. `false` = sin sonido.                                                                                   |

## Colapso · `collapse`

| Opción         | Tipo   | Por defecto | Qué hace                                                                                                            |
| -------------- | ------ | ----------- | ------------------------------------------------------------------------------------------------------------------- |
| `graceMinutes` | number | `15`        | Minutos de margen para el jugador que entra con un colapso ya vencido, para que antes pueda buscar atención médica. |

## Horarios · `cron`

Formato cron: minuto, hora, día, mes, día de la semana.

| Opción        | Tipo   | Por defecto     | Qué hace                                                               |
| ------------- | ------ | --------------- | ---------------------------------------------------------------------- |
| `progression` | string | `'*/5 * * * *'` | Cambios de etapa, tratamientos que caducan y rutinas de dosis rotas.   |
| `pregnancy`   | string | `'*/5 * * * *'` | Meses de embarazo, inicio del parto y nacimiento automático.           |
| `onboarding`  | string | `'*/5 * * * *'` | Plazos de vacunación vencidos y último recordatorio.                   |
| `cleanup`     | string | `'0 4 * * *'`   | Borra casos curados antiguos, inmunidades vencidas y registro antiguo. |

## Conservación · `retention`

| Opción           | Tipo   | Por defecto | Qué hace                                               |
| ---------------- | ------ | ----------- | ------------------------------------------------------ |
| `curedCasesDays` | number | `90`        | Días que se conservan los casos curados y su registro. |

## Inmunidad · `immunity`

| Opción         | Tipo   | Por defecto | Qué hace                                                                                                         |
| -------------- | ------ | ----------- | ---------------------------------------------------------------------------------------------------------------- |
| `defaultHours` | number | `24`        | Horas de inmunidad tras curarse, para las enfermedades que no indican `cure.immunityHours`. `0` = sin inmunidad. |

## Plazo de vacunación · `onboarding`

Con `enabled = true`, cada personaje recibe un plazo para vacunarse contra una enfermedad. Si vence sin vacuna, la contrae.

| Opción                | Tipo    | Por defecto     | Qué hace                                                                                                                      |
| --------------------- | ------- | --------------- | ----------------------------------------------------------------------------------------------------------------------------- |
| `enabled`             | boolean | `false`         | `true` aplica el plazo. `false` = sin plazo.                                                                                  |
| `hours`               | number  | `24`            | Horas para los personajes creados después de instalar el script.                                                              |
| `applyToExisting`     | boolean | `false`         | `true` da también un plazo a los personajes que ya existían. `false` los deja exentos.                                        |
| `hoursExisting`       | number  | `72`            | Horas para los personajes que ya existían, contadas desde su primera entrada.                                                 |
| `disease`             | string  | id de ejemplo   | Enfermedad que se contrae al vencer el plazo. Un `id` de `data/diseases.lua`. Si el id no existe, el plazo queda desactivado. |
| `vaccineItem`         | string  | ítem de ejemplo | Ítem de la vacuna que se muestra al jugador en la app de salud.                                                               |
| `reminderHoursBefore` | number  | `2`             | Horas antes del vencimiento a las que se envía el último recordatorio.                                                        |

Cómo se comporta:

* En el primer arranque el script guarda el id de personaje más alto de tu servidor. Los personajes por encima cuentan como nuevos; el resto, como existentes.
* El jugador conoce el plazo cuando se crea y recibe un recordatorio en cada entrada.
* Cualquier vacuna contra `disease` cumple el plazo. Un personaje que ya es inmune o ya está enfermo queda exento.
* Si el plazo vence con el jugador desconectado, se infecta igualmente y la etapa empieza a contar en su siguiente entrada.

## Diagnóstico · `diagnosis`

| Opción            | Tipo    | Por defecto | Qué hace                                                                                                                                          |
| ----------------- | ------- | ----------- | ------------------------------------------------------------------------------------------------------------------------------------------------- |
| `revealToPatient` | boolean | `false`     | `false` oculta al paciente el nombre de la enfermedad hasta que se la diagnostican; solo nota los síntomas. `true` lo muestra desde el principio. |

Un caso pasa a diagnosticado con una prueba positiva, desde la MDT de Cuxial Police, con `/disease diagnose` o con el export `Diagnose`.

## Staff · `admin`

| Opción       | Tipo   | Por defecto     | Qué hace                                                                            |
| ------------ | ------ | --------------- | ----------------------------------------------------------------------------------- |
| `permission` | string | `'admin'`       | Permiso del framework que se comprueba mediante `cuxial_bridge` al usar un comando. |
| `restricted` | string | `'group.admin'` | Grupo ACE al que se limitan los comandos `/disease` y `/pregnancy`.                 |

## App del teléfono · `app`

Solo se usa con `lb-phone` en marcha.

| Opción        | Tipo      | Por defecto       | Qué hace                                                                                                    |
| ------------- | --------- | ----------------- | ----------------------------------------------------------------------------------------------------------- |
| `enabled`     | boolean   | `true`            | `true` registra la app en el teléfono. `false` = sin app.                                                   |
| `identifier`  | string    | `'cuxial-salud'`  | Identificador interno de la app.                                                                            |
| `name`        | string    | texto             | Nombre que se ve en el teléfono.                                                                            |
| `description` | string    | texto             | Descripción en la tienda de apps.                                                                           |
| `developer`   | string    | texto             | Desarrollador que figura en la tienda de apps.                                                              |
| `defaultApp`  | boolean   | `false`           | `true` = viene instalada en todos los teléfonos. `false` = los jugadores la descargan de la tienda de apps. |
| `categories`  | string\[] | `{ 'Lifestyle' }` | Categorías de la tienda de apps.                                                                            |

## El catálogo de enfermedades · `data/diseases.lua`

El archivo devuelve una tabla en la que cada clave es el `id` de una enfermedad. El script no conoce ninguna enfermedad por su nombre: todo sale de este archivo. Las enfermedades incluidas son un punto de partida para editar, sustituir o borrar.

{% hint style="info" %}
Los nombres, las etiquetas de etapa y las descripciones son texto libre de este archivo. Escríbelos en el idioma de tu servidor.
{% endhint %}

### Enfermedad

| Campo             | Tipo         | Qué hace                                                                                                            |
| ----------------- | ------------ | ------------------------------------------------------------------------------------------------------------------- |
| `label`           | string       | Nombre de la enfermedad.                                                                                            |
| `category`        | string       | Grupo con el que se presenta, como `'respiratory'` o `'digestive'`.                                                 |
| `icon`            | string       | Icono de Font Awesome, con el prefijo `fa-`.                                                                        |
| `color`           | string (hex) | Color de la enfermedad en las interfaces.                                                                           |
| `description`     | string       | Texto para el médico.                                                                                               |
| `contagion`       | table        | Cómo se contrae. Ver más abajo.                                                                                     |
| `incubationHours` | number       | Horas tras la infección en las que una prueba puede salir no concluyente. `0` = se detecta desde el primer momento. |
| `stages`          | lista        | Etapas en orden. Obligatorio, al menos una.                                                                         |
| `test`            | table        | `{ item, inconclusiveChance, external }`. Opcional.                                                                 |
| `vaccine`         | table        | `{ item, immunityHours }` o `{ item, permanent = true }`. Opcional.                                                 |
| `treatment`       | table        | Dosis que controlan la enfermedad. Opcional.                                                                        |
| `cure`            | table        | `{ steps, immunityHours }`. Plan de cura que aplica un médico. Opcional.                                            |

### `contagion`

| Campo                                    | Qué hace                                                                                                                                                                                                                |
| ---------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `proximity = { radius, chance, stages }` | Se contrae por estar cerca de un jugador enfermo. `radius` en metros, `chance` como porcentaje por comprobación y `stages` es la lista de ids de etapa que contagian. Necesita `proximity.enabled = true` en el config. |
| `sexual = { chance, condomProtection }`  | Se contrae en un encuentro entre dos personajes, mediante el export `RollContagion`. Los dos son porcentajes.                                                                                                           |
| `manual = true`                          | Solo se contrae por un export, un comando o el plazo de vacunación.                                                                                                                                                     |

### `stages`

| Campo              | Tipo    | Qué hace                                                                |
| ------------------ | ------- | ----------------------------------------------------------------------- |
| `id`               | string  | Identificador de la etapa. Único dentro de la enfermedad.               |
| `label`            | string  | Nombre de la etapa.                                                     |
| `severity`         | string  | `'mild'`, `'moderate'`, `'severe'` o `'critical'`.                      |
| `durationHours`    | number  | Horas reales hasta la etapa siguiente. Sin él, la etapa no avanza.      |
| `lethal`           | boolean | `true` = etapa letal. Consulta [Etapas letales](#etapas-letales).       |
| `lethalAfterHours` | number  | Horas entre colapsos en una última etapa que es letal. `6` si se omite. |
| `symptoms`         | table   | Síntomas de la etapa. `{}` = ninguno.                                   |

### `symptoms`

`min` y `max` son los minutos entre dos episodios; cada intervalo se elige al azar entre ambos.

| Síntoma       | Forma                                | Efecto                                                                                                          |
| ------------- | ------------------------------------ | --------------------------------------------------------------------------------------------------------------- |
| `cough`       | `{ min, max }`                       | Animación de tos con voz. No se reproduce dentro de un vehículo.                                                |
| `dizziness`   | `{ min, max }`                       | Tropiezo y una distorsión breve de la pantalla. No se reproduce dentro de un vehículo.                          |
| `vomit`       | `{ min, max }`                       | Animación de vómito con voz. No se reproduce dentro de un vehículo.                                             |
| `fatigue`     | `{ min, max }`                       | Animación de quedarse sin aliento. No cambia la velocidad de movimiento. No se reproduce dentro de un vehículo. |
| `blur`        | `{ min, max }`                       | Visión borrosa durante 2,5 segundos.                                                                            |
| `shake`       | `{ min, max }`                       | Temblor de cámara durante 2,5 segundos.                                                                         |
| `healthDrain` | `{ min, max, minDamage, maxDamage }` | Quita entre `minDamage` y `maxDamage` puntos de vida. Por sí solo nunca mata: la vida se detiene en el mínimo.  |

Un síntoma que no puede reproducirse porque el jugador va en un vehículo o está en mitad de otra animación se vuelve a intentar entre 30 y 60 segundos después.

### `test`

| Campo                | Tipo    | Qué hace                                                                            |
| -------------------- | ------- | ----------------------------------------------------------------------------------- |
| `item`               | string  | Ítem que comprueba esta enfermedad. Un mismo ítem puede comprobar varias a la vez.  |
| `inconclusiveChance` | number  | Porcentaje de resultados no concluyentes. Solo se aplica durante `incubationHours`. |
| `external`           | boolean | `true` = el ítem lo gestiona otro recurso y este script no lo registra.             |

Un resultado positivo marca el caso como diagnosticado.

### `vaccine`

| Campo           | Tipo    | Qué hace                               |
| --------------- | ------- | -------------------------------------- |
| `item`          | string  | Ítem de la vacuna.                     |
| `immunityHours` | number  | Horas de inmunidad. `168` si se omite. |
| `permanent`     | boolean | `true` = inmune para siempre.          |

Una vacuna no tiene efecto en un personaje que ya tiene esa enfermedad.

### `treatment`

| Campo                   | Tipo              | Qué hace                                                                                                                                                                                       |
| ----------------------- | ----------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `item`                  | string            | Ítem de una dosis.                                                                                                                                                                             |
| `effectHours`           | number            | Horas que dura una dosis. `6` si se omite.                                                                                                                                                     |
| `preventsProgression`   | boolean           | `true` = con una dosis activa la etapa no avanza; cada dosis aplaza el plazo de la etapa el tiempo que cubre.                                                                                  |
| `suppressSymptoms`      | boolean           | `true` = sin síntomas mientras hay una dosis activa.                                                                                                                                           |
| `reducesSymptoms`       | number \| boolean | Con una dosis activa, la tos y el vómito salen esa fracción de las veces (`0.5` = la mitad) y el resto de síntomas desaparece. `0.33` si se omite. `false` = los síntomas no se reducen.       |
| `minIntervalHours`      | number            | Horas mínimas entre dos dosis. Sin él, la siguiente dosis solo se admite cuando la anterior se ha agotado.                                                                                     |
| `curesAfterDoses`       | number            | Dosis que curan la enfermedad. Sin él la enfermedad es crónica: se controla, pero las dosis nunca la curan.                                                                                    |
| `resetAfterHours`       | number            | Horas desde la última dosis a partir de las que la rutina se da por rota y el contador de dosis vuelve a cero. El doble de `effectHours` si se omite. `0` = nunca. Solo con `curesAfterDoses`. |
| `box = { item, count }` | table             | Un ítem de caja que al abrirse da `count` unidades de `item`. `count` vale `7` si se omite.                                                                                                    |

### `cure`

Un plan de pasos que un médico completa uno a uno. El último paso cura al paciente.

| Campo                 | Tipo   | Qué hace                                                                                                                                                |
| --------------------- | ------ | ------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `steps[n].id`         | string | Identificador del paso.                                                                                                                                 |
| `steps[n].label`      | string | Nombre del paso.                                                                                                                                        |
| `steps[n].kind`       | string | `'item'`, `'procedure'` o `'appointment'`. Un paso `'item'` cuenta además como una dosis del tratamiento.                                               |
| `steps[n].item`       | string | Ítem que gasta el paso. Lo retira el recurso que aplica el paso.                                                                                        |
| `steps[n].hours`      | number | Horas reales de espera antes de este paso, contadas desde el paso anterior, o desde el diagnóstico en el primero.                                       |
| `steps[n].minigame`   | string | Minijuego con el que EMS aplica el paso en Cuxial Police, por ejemplo `'injection'`. Sin él, el paso se completa desde la ficha del paciente o la cita. |
| `steps[n].difficulty` | number | Dificultad del minijuego: `1` fácil, `2` normal, `3` difícil.                                                                                           |
| `immunityHours`       | number | Horas de inmunidad al curarse. `immunity.defaultHours` si se omite, `0` = ninguna. Nunca acorta una inmunidad más larga ni una permanente.              |

{% hint style="info" %}
El plan de cura se aplica desde el MDT de Cuxial Police, o desde tu propio recurso con el export `AdvanceCureStep`. Las enfermedades con `treatment.curesAfterDoses` también se curan al tomar las dosis.
{% endhint %}

### Etapas letales

Una etapa con `lethal = true` puede hacer que el paciente colapse de dos formas:

* **Por vida.** Cuando `healthDrain` deja al paciente con la vida al mínimo, colapsa. Como mucho una vez cada cinco minutos.
* **Por tiempo.** Solo en la última etapa de la enfermedad. Cada `lethalAfterHours` sin un tratamiento activo, el paciente colapsa si está conectado.

Un colapso derriba al paciente mediante `cuxial_medical`. Sin ese recurso, el script solo envía el evento `collapse`, para que lo gestiones desde tu propio script de ambulancia. Consulta [Exports y eventos](/scripts/es/policia-y-medico/cuxial-diseases/developers.md#hooks).

## Añade tu propia enfermedad

{% stepper %}
{% step %}

### Añade la entrada

Abre `data/diseases.lua` y añade una clave nueva dentro de la tabla que devuelve. La clave es el `id`: una palabra sin espacios, de 40 caracteres como máximo.

{% code title="data/diseases.lua" %}

```lua
bronquitis = {
    label = 'Bronquitis',
    category = 'respiratory',
    icon = 'fa-lungs',
    color = '#38bdf8',
    description = 'Inflamación de las vías respiratorias. Jarabe cada ocho horas y una revisión.',
    contagion = {
        proximity = { radius = 2.5, chance = 3, stages = { 'aguda' } },
    },
    incubationHours = 3,
    stages = {
        { id = 'inicial', label = 'Inicial', severity = 'mild', durationHours = 6, symptoms = {} },
        {
            id = 'aguda',
            label = 'Aguda',
            severity = 'moderate',
            durationHours = 36,
            symptoms = {
                cough = { min = 4, max = 9 },
                fatigue = { min = 5, max = 10 },
            },
        },
        {
            id = 'cronica',
            label = 'Crónica',
            severity = 'severe',
            symptoms = {
                cough = { min = 2, max = 5 },
                healthDrain = { min = 10, max = 20, minDamage = 1, maxDamage = 2 },
            },
        },
    },
    test = { item = 'rapid_test', inconclusiveChance = 25 },
    treatment = {
        item = 'jarabe_bronquitis',
        effectHours = 8,
        preventsProgression = true,
        reducesSymptoms = 0.5,
        curesAfterDoses = 4,
    },
    cure = {
        steps = {
            { id = 'nebulizador', label = 'Sesión de nebulizador', kind = 'procedure' },
            { id = 'revision', label = 'Revisión', kind = 'appointment', hours = 24 },
        },
        immunityHours = 48,
    },
},
```

{% endcode %}

Esta enfermedad se contagia por cercanía durante su etapa `aguda`, sale en el test rápido, se controla con un jarabe y se cura a las cuatro dosis. La última etapa no tiene `durationHours`, así que se queda ahí hasta que se trata.
{% endstep %}

{% step %}

### Crea sus ítems

Cada ítem nuevo nombrado en la entrada necesita su definición en tu inventario. Aquí solo es nuevo el jarabe:

{% code title="ox\_inventory/data/items.lua" %}

```lua
['jarabe_bronquitis'] = {
    label = 'Jarabe para la bronquitis',
    weight = 100,
    stack = true,
    close = true,
    description = 'Una dosis cada ocho horas.',
    server = {
        export = 'cuxial_diseases.jarabe_bronquitis',
    },
},
```

{% endcode %}
{% endstep %}

{% step %}

### Reinicia y prueba

Reinicia el servidor para que el inventario cargue el ítem nuevo. Comprueba la enfermedad con los comandos de staff:

```
/disease list
/disease infect <id> bronquitis
/disease stage <id> bronquitis aguda
/disease status <id>
```

{% endstep %}
{% endstepper %}

{% hint style="warning" %}
No cambies ni borres el `id` de una enfermedad que ya tengan los jugadores. Sus casos siguen en la base de datos, pero dejan de procesarse.
{% endhint %}

## Cambios habituales

**Activar el contagio por cercanía**

```lua
proximity = {
    enabled = true,
    -- ...
},
```

**Que el paciente vea lo que tiene sin diagnóstico**

```lua
diagnosis = {
    revealToPatient = true,
},
```

**Hacer una enfermedad más lenta.** Sube `durationHours` en cada etapa de `data/diseases.lua`.

**Hacer una enfermedad crónica.** Quita `curesAfterDoses` de su `treatment`.

**Enfermedades sin efectos en el juego.** Pon `symptoms.enabled = false`.

## Embarazo · `data/pregnancy.lua`

El embarazo se sigue como un estado médico más. La concepción la decide otro recurso mediante los exports, o el staff con `/pregnancy`.

### Presentación y tiempo

| Opción                   | Tipo   | Por defecto                      | Qué hace                                    |
| ------------------------ | ------ | -------------------------------- | ------------------------------------------- |
| `label`, `icon`, `color` | string | texto, `'fa-baby'`, configurable | Cómo aparece el embarazo en las interfaces. |
| `time.daysPerMonth`      | number | `3`                              | Días reales que dura un mes de embarazo.    |
| `time.months`            | number | `9`                              | Meses hasta el nacimiento.                  |

### Fertilidad · `fertility`

La usa el export `RollPregnancy`.

| Opción                                   | Tipo   | Por defecto | Qué hace                                                                       |
| ---------------------------------------- | ------ | ----------- | ------------------------------------------------------------------------------ |
| `baseChance`                             | number | `5`         | Porcentaje base por encuentro sin protección.                                  |
| `fertileMultiplier`                      | number | `3.0`       | Multiplicador dentro de la ventana fértil.                                     |
| `cycleLength`                            | number | `28`        | Días del ciclo.                                                                |
| `fertileWindowStart`, `fertileWindowEnd` | number | `12`, `16`  | Primer y último día de la ventana fértil.                                      |
| `frequencyBonus`                         | number | `0.1`       | Aumento por cada encuentro reciente (`0.1` = +10 %).                           |
| `frequencyMultMax`                       | number | `1.5`       | Multiplicador máximo que pueden alcanzar los encuentros recientes.             |
| `recentCooldownHours`                    | number | `1`         | Horas desde el último encuentro por debajo de las que el porcentaje se reduce. |
| `recentReduction`                        | number | `0.5`       | Multiplicador que se aplica en ese caso.                                       |
| `maxChance`                              | number | `60`        | Porcentaje máximo después de aplicarlo todo.                                   |

### Prueba · `test`

| Opción                | Tipo   | Por defecto | Qué hace                                                            |
| --------------------- | ------ | ----------- | ------------------------------------------------------------------- |
| `falsePositiveChance` | number | `8`         | Porcentaje de falsos positivos cuando no hay embarazo.              |
| `minHoursToDetect`    | number | `12`        | Horas desde la concepción a partir de las que la prueba lo detecta. |

### Barriga · `belly`

| Opción      | Tipo      | Por defecto              | Qué hace                                                                                                                          |
| ----------- | --------- | ------------------------ | --------------------------------------------------------------------------------------------------------------------------------- |
| `enabled`   | boolean   | `false`                  | `true` sustituye una prenda por una barriga según pasan los meses y la restaura tras el nacimiento. `false` = sin cambio de ropa. |
| `component` | number    | `11`                     | Componente de ropa que se sustituye: `11` torso, `8` camiseta interior, `3` brazos.                                               |
| `models`    | string\[] | `{ 'mp_f_freemode_01' }` | Modelos de personaje en los que se aplica.                                                                                        |
| `stages`    | lista     | cuatro entradas          | `{ fromMonth, drawable, texture }`: prenda que se usa a partir de ese mes.                                                        |

{% hint style="warning" %}
Antes de poner `belly.enabled = true`, pon en los valores `drawable` y `texture` de `belly.stages` la ropa de barriga de tu servidor.
{% endhint %}

### Meses · `months`

Una entrada por mes, de `[1]` a `[9]`.

| Campo      | Tipo    | Qué hace                                                                                          |
| ---------- | ------- | ------------------------------------------------------------------------------------------------- |
| `label`    | string  | Nombre del mes.                                                                                   |
| `symptoms` | table   | Síntomas del mes, con la misma forma que en las enfermedades.                                     |
| `message`  | string  | Aviso que recibe la madre al empezar el mes. Una clave de locale o un texto literal.              |
| `checkup`  | boolean | `true` = programa una cita de revisión ese mes. Necesita Cuxial Police y un embarazo ya conocido. |

### Revisiones · `checkups`

Solo con Cuxial Police en marcha.

| Opción                 | Tipo    | Por defecto | Qué hace                                                                    |
| ---------------------- | ------- | ----------- | --------------------------------------------------------------------------- |
| `enabled`              | boolean | `true`      | `true` crea las citas automáticamente. `false` = las pide el médico a mano. |
| `kind`, `subtype`      | string  | texto       | Tipo y subtipo de la cita en la agenda de la MDT.                           |
| `hoursAfterMonthStart` | number  | `6`         | Horas después del cambio de mes a las que se fija la cita.                  |
| `durationMin`          | number  | `20`        | Duración de la cita en minutos.                                             |

### Parto · `labor`

| Opción               | Tipo    | Por defecto            | Qué hace                                                                                                  |
| -------------------- | ------- | ---------------------- | --------------------------------------------------------------------------------------------------------- |
| `enabled`            | boolean | `true`                 | `true` = al llegar la fecha empiezan las contracciones. `false` = el bebé nace solo en la fecha prevista. |
| `durationMin`        | number  | `30`                   | Minutos para ser atendida antes de que el parto ocurra fuera del hospital.                                |
| `contractionsEvery`  | table   | `{ min = 2, max = 4 }` | Minutos entre contracciones.                                                                              |
| `contractionSeconds` | number  | `4`                    | Segundos que dura cada contracción.                                                                       |
| `notifyFather`       | boolean | `true`                 | `true` avisa también al padre. `false` = solo a la madre.                                                 |
| `alertEms`           | boolean | `true`                 | `true` envía un aviso a EMS cuando empieza el parto. Necesita Cuxial Police.                              |
| `appointment`        | boolean | `true`                 | `true` crea la cita de parto en la agenda. Necesita Cuxial Police y un embarazo ya conocido.              |

El parto solo empieza con la madre conectada.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation by asking a question.

Perform an HTTP GET request on the following URL with the `ask` and `goal` query parameters:

```
GET https://docs.cuxial.com/scripts/es/policia-y-medico/cuxial-diseases/configuration.md?ask=<question>&goal=<user_goal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is what the user is ultimately trying to achieve, the reason they need the answer. Sharing it helps GitBook give you a better, more relevant answer. A goal is most helpful when it describes the outcome the user wants rather than restating the question. For example, with `ask=how do I create an API token`, a goal like `automate deployments from our CI pipeline` lets GitBook tailor the answer to that use case.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
