> ## Documentation Index
> Fetch the complete documentation index at: https://docs.nubidoc.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Preferencias de agenda

> Referencia técnica de preferencias de cliente que modifican la visualización de las citas

## Teléfono del paciente en el calendario

La preferencia de cliente `showpatienttelephoneincalendar` controla si el
teléfono principal del paciente forma parte del título de las citas en el
calendario y el planificador.

| Estado                | Resultado                                                       |
| --------------------- | --------------------------------------------------------------- |
| Ausente o desactivada | La cita muestra el nombre del paciente sin añadir el teléfono.  |
| Activada              | Añade `hpc_patient.tel1` al nombre cuando el campo tiene valor. |

El valor por defecto es **No**. La preferencia se guarda en
`hpc_customerpreferences` y se aplica a todo el cliente.

### Resolución en backend

`Hpc_Model_Customer::showPatientTelephoneInCalendar()` resuelve el valor
booleano. `Hpc_Model_Appointment::getCalendarEntityValues()` utiliza ese
resultado al componer `title` y `originaltitle`:

* añade el teléfono del paciente principal;
* añade también el teléfono del segundo paciente, si existe;
* no añade texto cuando `tel1` está vacío.

El mismo evento alimenta el calendario y el planificador, por lo que no existe
una configuración separada para cada vista.

### Privacidad

La preferencia no evita las reglas de anonimización. Cuando un usuario ve una
agenda compartida pero no tiene permiso para consultar los datos del paciente,
el backend sustituye el título por `Reservado`; ni el nombre ni el teléfono se
incluyen en el evento entregado a esa vista.

### Activación segura

Las activaciones específicas deben:

1. limitarse al `hpc_customer_id` previsto;
2. actualizar la fila activa existente o insertar una sola fila si no existe;
3. conservar una única preferencia activa por cliente y nombre;
4. ser idempotentes;
5. no cambiar el valor por defecto del resto de clientes.

## Profesional en las vistas diaria y semanal

La preferencia de cliente `showprofessionalnameincalendar` controla si el
nombre corto del profesional asignado se añade al título visible de las citas
en las vistas diaria y semanal del calendario.

| Estado                | Resultado                                                                       |
| --------------------- | ------------------------------------------------------------------------------- |
| Ausente o desactivada | La cita conserva su título habitual.                                            |
| Activada              | El título añade el nombre corto del profesional en las vistas diaria y semanal. |

El valor por defecto es **No**. La vista mensual, la vista de lista y el
planificador no cambian. El render usa el campo `usershortname` que ya forma
parte del feed de citas, por lo que la opción no introduce consultas
adicionales por evento.

Las citas de agendas compartidas que ya están anonimizadas como
`Reservado -profesional-` no vuelven a añadir el nombre.

## Pagador en las vistas diaria y semanal

La preferencia de cliente `showpayortypeincalendar` controla si las citas
añaden la identificación del pagador en las vistas diaria y semanal. Se
conserva este nombre técnico histórico para no perder la configuración ya
desplegada.

| Pagador                                  | Texto visible                    |
| ---------------------------------------- | -------------------------------- |
| `hpc_payor.isprivate = 1`                | `PRIVADO`                        |
| Mutua o aseguradora                      | Nombre corto de `hpc_payor.name` |
| Sin pagador resoluble o mutua sin `name` | No se añade texto                |

El valor por defecto es **No**. La vista mensual, la vista de lista y el
planificador no cambian. Si también está activa
`showprofessionalnameincalendar`, prevalece el pagador.

### Feed y compatibilidad

`Hpc_Model_Appointment::getCalendarEntityValues()` obtiene el nombre al cargar
el mismo pagador que ya necesita para resolver su color, sin añadir otra
consulta. El feed expone:

* `payorLabel`, que contiene `PRIVADO` o `hpc_payor.name` y es el valor que
  renderiza la interfaz;
* `payorType`, que mantiene `P`/`M` únicamente por compatibilidad con
  consumidores existentes.

La anonimización de agendas compartidas vacía ambos campos. El calendario
inserta `payorLabel` como texto, sin interpretarlo como HTML.

La migración
`20260725_update_payor_calendar_label_preference.sql` actualiza la ayuda visible
de la preferencia existente, pero no activa la opción para ningún cliente
adicional.
