---
# System prepended metadata

title: Martín Pivote Week 27/02-03/02

---

# Martín Pivote Week 27/02-03/02
    
## Issues de la semana

- [ ] 1. Turno 6 de marzo. no deja superponer pero esta libre la primera consulta, Nora rodriguez, turno medico (Esto siguieron intentando y pudieron, raro.)
- [ ] 2. Arreglar tomo para el seguimiento de Robledo, Gabriela Noemi (en teoría la query está, falta correrla)
- [x] 3. El pte CORONEL Norma Graciela (13-19058-0) de fisica me comentan que cuando van a planificacion y quieren vincular la plani con la simulacion le sale que dice que “no hay simulacion creada”, pero hay una simu ya cargada.
    - [x] la simu está asociada a una conduct vieja. Hay que apuntarla a la nueva. Averiguar qué otras cosas habría que apuntar a la nueva
- [x] 4. Javi comentó algunas cosas a mejorar en historial de turnos. Armé [ticket](https://app.clickup.com/t/85zrpacgd), lo considero done acá xq no es prioridad de esta semana
- [x] 5. San justo: no le pueden dar presente a Alvarez Martha Alejandra. 
- [x] 6. Agendas de médico -> no se muestran las actividades (creé [ticket](https://app.clickup.com/t/85zrpah7z)) (marco como done porque no se hace esta semana pero el ticket ta creado)
- [x] 7. Destrabar Pacientes de Placa 27/02
- [x] 8. Guzman Catalina Irma: sacar alta administrativa al 3D
- [x] 9. Torres Montes de Oca, Elias -> relacionar la orden de autorización que creó el presupuesto con la CD existente
- [x] 10. Orrego mirian paciente de braqui no se puede atender
- [x] 11. Sacar alta administrativa a Healy, Tadeo Antonio
- [x] 12. Actualizar Excel de Interfase de OSDE al nuevo formato
- [x] 13. Bug en el edit de los turnos de equipo
- [x] 14. No pueden dar turno de primera consulta - reingreso a ambulatorios: armé [ticket](https://app.clickup.com/t/85zrpqh39) (al final ya existía así que achuré el ticket)
- [x] 15. Informe de "Gestión > Estadística de Ingresos > Ingreso de pacientes" sale en blanco: armé [ticket](https://app.clickup.com/t/85zrpquhk)
- [x] 16. Error de Facturación al intentar emitir [factura](https://backup.castelar.mevaterapia.lambdaclass.com/billing/invoices/a9c023f7-5c4e-4611-9ecc-f46f2d33d185)
- [x] 17. Informe de pacientes en tratamiento > no debería traer pacientes sin nro de HC: existe [ticket](https://app.clickup.com/t/85zrkcfb9)
- [x] 18. Agregar Opción de Eliminar Archivos en "Legajo para facturación" de Auditoría (ticket creado)
- [x] 19. Destrabar pacientes de placa 02/03 (hay que averiguar qué hacer con Argañaraz y correr las queries)
- [x] 20. Robledo Gabriela Noemi, no pueden atender y no les deja dar aplicación a la bqt porque no aparece en el select de tratamiento
- [x] 21. Paciente Dualtes de Presupuesto, hay que corregir a dónde apunta la orden de autorización
- [ ] 22.


    
# Resumen fixes 27/02

## 5. San justo: no le pueden dar presente a Alvarez Martha Alejandra

> El presente se lo dan pero les tira error, en el index lo veo como atendido pero no aparece en la parte de asistencia, le están cargando las aplicaciones a manopla

### Problema 
el problema es al atender el turno. Por algún motivo hay 2 `ConductDefinitionsStages` para un mismo stage, pero uno no apunta a ninguna conduct (es `nil`)

:::info
tiré la query:

```elixir
from cds in ConductDefinitionsStages, 
where: not is_nil(cds.stage_id) and
    is_nil(cds.conduct_definition_id)
```

Y me trajo 3 registros:

```elixir
[
  %Mevaterapia.Patients.ConductDefinitionsStages{
    __meta__: #Ecto.Schema.Metadata<:loaded, "conduct_definitions_stages">,
    conduct_definition: #Ecto.Association.NotLoaded<association :conduct_definition is not loaded>,
    conduct_definition_id: nil,
    inserted_at: ~U[2022-12-23 08:13:14Z],
    stage: #Ecto.Association.NotLoaded<association :stage is not loaded>,
    stage_id: "d7a65d32-4c18-40af-b0d4-3f11feb47377",
    updated_at: ~U[2022-12-23 08:13:14Z]
  },
  %Mevaterapia.Patients.ConductDefinitionsStages{
    __meta__: #Ecto.Schema.Metadata<:loaded, "conduct_definitions_stages">,
    conduct_definition: #Ecto.Association.NotLoaded<association :conduct_definition is not loaded>,
    conduct_definition_id: nil,
    inserted_at: ~U[2023-01-31 14:24:02Z],
    stage: #Ecto.Association.NotLoaded<association :stage is not loaded>,
    stage_id: "d58a4255-ef71-4d91-8fdf-36a42414b540",
    updated_at: ~U[2023-01-31 14:24:02Z]
  },
  %Mevaterapia.Patients.ConductDefinitionsStages{
    __meta__: #Ecto.Schema.Metadata<:loaded, "conduct_definitions_stages">,
    conduct_definition: #Ecto.Association.NotLoaded<association :conduct_definition is not loaded>,
    conduct_definition_id: nil,
    inserted_at: ~U[2023-02-17 12:07:16Z],
    stage: #Ecto.Association.NotLoaded<association :stage is not loaded>,
    stage_id: "b0cbc811-4a67-44c9-ba27-d33e9f6d7e80",
    updated_at: ~U[2023-02-17 12:07:16Z]
  }
]
```

Se corresponden a los pacientes:

- [Scocco, Raquel Dora](http://localhost:4000/medical_histories/bd7ba717-946f-43d0-9cba-b6595eba9b9f/overview)
- [Miotti, Noemi](http://localhost:4000/medical_histories/62b00fe1-0228-492d-a945-d6d7e724d568/overview)
- [Alvarez, Martha Alejandra](http://localhost:4000/medical_histories/7f5f76e4-5188-4dcc-b50f-fd7cc89dbbad/overview) 
:::

Armé [un ticket](https://app.clickup.com/t/85zrpeycn) para investigar por qué ocurre esto

### Posible solución

Podemos borrar esos 3 registros, pero habría que ver por qué se generaron en primer lugar. (en gral tienen 5 minutos de diferencia el que se generó correctamente y el que no). Por si acaso sólo borramos el que le corresponde a Alvarez Martha Alejandra

query:

```elixir
import Ecto.Query
alias Mevaterapia.Repo

q = from scd in Mevaterapia.Patients.ConductDefinitionsStages, where: scd.stage_id == ^"b0cbc811-4a67-44c9-ba27-d33e9f6d7e80" and is_nil(scd.conduct_definition_id)

Repo.delete_all(q)
```

:::success
ya se corrieron las queries
:::

### Segundo problema

Corro el fix local, y ahora no rompe cuando le doy la aplicación. Sin embargo, como el stage de su bqt no está marcado como current, se setea como que la conduct no está lista para darse aplicaciones

La etapa anterior sigue marcada como current, hay que finalizarla:

:::success
ya se corrieron las queries
:::

```
stage_id = "247e024a-15a7-40ce-b3ed-f00ff0eef9d0"
stage = Mevaterapia.Patients.get_stage!(stage_id)
Mevaterapia.Patients.Stage.changeset(stage, %{current: false}) |> Mevaterapia.Repo.update!()
```

Pruebo marcarla como current:

```elixir
stage_id = "b0cbc811-4a67-44c9-ba27-d33e9f6d7e80"
stage = Mevaterapia.Patients.get_stage!(stage_id)
Mevaterapia.Patients.Stage.changeset(stage, %{current: true}) |> Mevaterapia.Repo.update!()
```

:::warning
no se corrió esta query
:::

### Tercer problema

La paciente Tiene dos simulaciones para el tratamiento 3D. Una de ellas tiene todos sus fields archivados. Cuando se da una aplicación en ciertos casos se llama a la función `update_current_stage`. Cuando ocurre esto encuentra que la simulación de los fields archivados no tiene aplicaciones y setea su stage como el current.

TLDR: es el clásico bug de la simulación no archivada con todos sus fields archivados, cuando doy una aplicación marca la etapa 1 como la current y la 2 como no current

Entonces antes de correr el fix del segundo problema hay que archivarle dicha simulación:

```elixir
simu = Mevaterapia.Patients.get_simulation!("b9027e68-9197-4843-b6fa-e205bb64d987")
Mevaterapia.Patients.Simulation.archive_changeset(simu, %{archived: true}) |> Mevaterapia.Repo.update!()
```

:::success
ya se corrieron las queries
:::


## 3. Conduct archivada CORONEL Norma Graciela

Armé el snippet que cambia para que apunten a la nueva conduct:

- el auth order detail de la orden de autorización
- la simulación
- los datos de ingreso y orden de autorización del seguimiento

<details>
    <summary>snippet:</summary>    
    
```elixir
old_conduct_definition_id = "18ae5467-37d1-46b3-9523-18d475cba8ea"
new_conduct_definition_id = "48b0f8cd-88d2-404a-919c-19f95243ff93"

old_cd = Mevaterapia.Patients.get_conduct_definition!(old_conduct_definition_id)
new_cd = Mevaterapia.Patients.get_conduct_definition!(new_conduct_definition_id)

# old_cd_tomo_appointment_id = "1fa7eedd-9dfd-4933-a9c1-fd3cab5dadc1"
# old_cd_twl_id = "3ae15e27-3c6c-4157-8c44-a1b748366e86"

#
# AUTH ORDER CHANGES
#
old_cd_auth_order_id = "16caef06-8d16-4890-9af3-2f520f456199"
auth_order_detail_id = "7ccfa606-4c4e-4ba2-8203-215bc836b96e"
auth_order = Mevaterapia.Patients.get_authorization_order!(old_cd_auth_order_id)
auth_order_detail = Mevaterapia.Patients.get_authorization_order_detail!(auth_order_detail_id)

Ecto.Changeset.change(auth_order_detail, %{ conduct_definition_id: new_cd.id }) |> Mevaterapia.Repo.update!()

#
# FOLLOW UP CHANGES
#
old_status = Mevaterapia.Repo.preload(old_cd, :status).status
new_status = Mevaterapia.Repo.preload(new_cd, :status).status

new_micro_status = :tomograph
new_auth_order_status = :auth_order_ok
new_auth_order_authorization_at = old_status.authorization_at
new_auth_order_authorization_user_id = old_status.authorization_user_id
new_ingress_at = old_status.hospital_ingress_at
new_ingress_at_user_id = old_status.hospital_ingress_user_id

changes = %{
  micro_status: new_micro_status,
  auth_order_state: new_auth_order_status,
  authorization_at: new_auth_order_authorization_at,
  authorization_user_id: new_auth_order_authorization_user_id,
  hospital_ingress_at: new_ingress_at,
  hospital_ingress_user_id: new_ingress_at_user_id
}

Ecto.Changeset.change(new_status, changes) |> Mevaterapia.Repo.update!()

#
# SIMULATIONS
#
old_cd_macro_simulation_id = "1df5d946-0017-4069-bac2-49989398309a"
macro_simulation = Mevaterapia.Patients.get_macro_simulation!(old_cd_macro_simulation_id)

Ecto.Changeset.change(macro_simulation, %{ conduct_definition_id: new_cd.id }) |> Mevaterapia.Repo.update!()
```
</details>

Una vez que le cargaron el turno de tomógrafo, tenemos que cambiarle la fecha:

```elixir

#
# Tomograph Appointment updates
#
original_unattended_tomo_id = "1fa7eedd-9dfd-4933-a9c1-fd3cab5dadc1"
tomo_appointment_id = "6294f5ae-9e3e-4990-ba77-aa6fb5dfb523"

original_tomo_appointment = Mevaterapia.Appointments.get_tomograph_appointment!(original_unattended_tomo_id)
tomo_appointment = Mevaterapia.Appointments.get_tomograph_appointment!(tomo_appointment_id)
original_twl = Mevaterapia.Repo.preload(original_tomo_appointment, :tomograph_waiting_list).tomograph_waiting_list
twl = Mevaterapia.Repo.preload(tomo_appointment, :tomograph_waiting_list).tomograph_waiting_list

Ecto.Changeset.change(tomo_appointment, %{start_at: original_tomo_appointment.start_at, end_at: original_tomo_appointment.end_at}) |> Mevaterapia.Repo.update!()
Ecto.Changeset.change(twl, %{started_at: original_twl.started_at, arrived_at: original_twl.arrived_at, finished_at: NaiveDateTime.add(original_twl.arrived_at, original_tomo_appointment.duration_min * 60)}) |> Mevaterapia.Repo.update!()

#
# Follow up update
#
cd_id = "48b0f8cd-88d2-404a-919c-19f95243ff93"
cd = Mevaterapia.Patients.get_conduct_definition!(cd_id) |> Mevaterapia.Repo.preload(:status)
status = cd.status

Ecto.Changeset.change(status, %{tomograph_at: NaiveDateTime.add(original_twl.arrived_at, original_tomo_appointment.duration_min * 60)}) |> Mevaterapia.Repo.update!()
```

:::success
ya se corrió, para la próxima en lugar de crear un nuevo appointment y cambiar fechas, es más fácil marcar como atendido el turno de tomo que tenía. Sólo creamos un turno nuevo cuando nunca le crearon uno.
:::

## 7. Destrabar pacientes de placa 27/02

Los pacientes son:

- Jañez Julio
- Jaime Clara
- Faure Estela
- D’Alfonso Rita
- Sanchez Beatriz
- Metcalfe Brian

:::success
ya se corrieron las queries
:::

queries:

:::warning
Después de correr la query de cada paciente, cerrar la sesión de iex y volver a abrir. Esto es más que nada por precausión, ya que si en algún punto de la query falla no queremos que use resultados de los fixes que corrimos anteriormente
:::

### Jañez, Julio

<details>
    <summary>snippet</summary>
    
```elixir
id_conduct = "a4b5e72b-cfa9-4821-8148-34b6944001c2"
id_mw_verifier_plate = "02c90371-5977-44f2-836d-8afb9a96fc07"
id_first_treatment_appointment = "338cbfde-101a-4285-a21f-0b2dae86ace3"
status = Mevaterapia.Repo.get_by(Mevaterapia.Patients.Status, conduct_definition_id: id_conduct, current: true)
mwl = Mevaterapia.Repo.get_by(Mevaterapia.Reception.MachineWaitingList, appointment_id: id_mw_verifier_plate)
ma = Mevaterapia.Repo.get(Mevaterapia.Appointments.MachineAppointment, id_first_treatment_appointment)

params = %{ 
  doctor_ok_at: mwl.attended_at,
  doctor_ok_user_id: mwl.user_attended_id,
  verification_plate_state: :ok_medic,
  machine_appointment_at: ma.inserted_at,
  machine_appointment_user_id: ma.user_id,
  micro_status: :application
}
    Mevaterapia.Patients.Status.migration_fix_changeset(status,params) |> Mevaterapia.Repo.update!()
```
</details>

### Jaime Clara
<details>
    <summary>snippet</summary>
    
```elixir
id_conduct = "725c61d1-ba93-4b3e-86e1-0424fc39e528"
id_mw_verifier_plate = "92690e7e-5683-4d96-b068-31917f7a9651"
id_first_treatment_appointment = "6993c3f8-2693-42a2-8820-d784e9cc20f0"
status = Mevaterapia.Repo.get_by(Mevaterapia.Patients.Status, conduct_definition_id: id_conduct, current: true)
mwl = Mevaterapia.Repo.get_by(Mevaterapia.Reception.MachineWaitingList, appointment_id: id_mw_verifier_plate)
ma = Mevaterapia.Repo.get(Mevaterapia.Appointments.MachineAppointment, id_first_treatment_appointment)

params = %{
  doctor_ok_at: mwl.attended_at,
  doctor_ok_user_id: mwl.user_attended_id,
  verification_plate_state: :ok_medic,
  machine_appointment_at: ma.inserted_at,
  machine_appointment_user_id: ma.user_id,
  micro_status: :application
 }
Mevaterapia.Patients.Status.migration_fix_changeset(status,params) |> Mevaterapia.Repo.update!()
```
</details>

### Faure Estela

lo único raro que noté al correr este fix es:

![](https://i.imgur.com/ML3x55A.png)

:::info
está ok eso? la fecha del turno de equipo es anterior pero la fecha de corrección es del mismo día
:::

<details>
    <summary>snippet</summary>
    
```elixir
id_conduct = "2dfd77d9-cc64-495d-a0d7-b0e895dcc9dd"
id_mw_verifier_plate = "11d571ea-fd48-4ec4-93a4-2e924e7b63aa"
id_first_treatment_appointment = "e46ed0de-2128-49f7-b3c9-05de0ac13a87"
status = Mevaterapia.Repo.get_by(Mevaterapia.Patients.Status, conduct_definition_id: id_conduct, current: true)
mwl = Mevaterapia.Repo.get_by(Mevaterapia.Reception.MachineWaitingList, appointment_id: id_mw_verifier_plate)
ma = Mevaterapia.Repo.get(Mevaterapia.Appointments.MachineAppointment, id_first_treatment_appointment)

params = %{
  doctor_ok_at: mwl.attended_at,
  doctor_ok_user_id: mwl.user_attended_id,
  verification_plate_state: :ok_medic,
  machine_appointment_at: ma.inserted_at,
  machine_appointment_user_id: ma.user_id,
  micro_status: :application
 }
Mevaterapia.Patients.Status.migration_fix_changeset(status,params) |> Mevaterapia.Repo.update!()
```
</details>

### D'Alfonso Rita

Tiene 2 conducts pero solo una trabada en placa (la otra está en tomo todavía)

También ocurrió lo mismo que para el paciente anterior:

![](https://i.imgur.com/Cjl5EIB.png)


<details>
    <summary>snippet</summary>
    
```elixir
id_conduct = "17028a56-c13c-47a9-a954-9f6c53f32927"
id_mw_verifier_plate = "bd6ca2a6-c93f-4e27-8d6f-dda168a9faeb"
id_first_treatment_appointment = "f7587d45-9a4e-4dcd-abb2-10396bdeb9af"
status = Mevaterapia.Repo.get_by(Mevaterapia.Patients.Status, conduct_definition_id: id_conduct, current: true)
mwl = Mevaterapia.Repo.get_by(Mevaterapia.Reception.MachineWaitingList, appointment_id: id_mw_verifier_plate)
ma = Mevaterapia.Repo.get(Mevaterapia.Appointments.MachineAppointment, id_first_treatment_appointment)

params = %{
  doctor_ok_at: mwl.attended_at,
  doctor_ok_user_id: mwl.user_attended_id,
  verification_plate_state: :ok_medic,
  machine_appointment_at: ma.inserted_at,
  machine_appointment_user_id: ma.user_id,
  micro_status: :application
 }
Mevaterapia.Patients.Status.migration_fix_changeset(status,params) |> Mevaterapia.Repo.update!()
```
</details>

### Sanchez Beatriz

<details>
    <summary>snippet</summary>
    
```elixir
id_conduct = "e9ddc317-1d92-44f0-a8d0-b89611b6b7f9"
id_mw_verifier_plate = "f5d22a37-264b-4f33-88db-018a4ff71c3f"
id_first_treatment_appointment = "05b5b97e-3169-46a0-b506-2987c5f6b1a8"
status = Mevaterapia.Repo.get_by(Mevaterapia.Patients.Status, conduct_definition_id: id_conduct, current: true)
mwl = Mevaterapia.Repo.get_by(Mevaterapia.Reception.MachineWaitingList, appointment_id: id_mw_verifier_plate)
ma = Mevaterapia.Repo.get(Mevaterapia.Appointments.MachineAppointment, id_first_treatment_appointment)

params = %{
  doctor_ok_at: mwl.attended_at,
  doctor_ok_user_id: mwl.user_attended_id,
  verification_plate_state: :ok_medic,
  machine_appointment_at: ma.inserted_at,
  machine_appointment_user_id: ma.user_id,
  micro_status: :application
 }
Mevaterapia.Patients.Status.migration_fix_changeset(status,params) |> Mevaterapia.Repo.update!()
```
</details>


### Metcalfe Brian

<details>
    <summary>snippet</summary>
    
```elixir
id_conduct = "aeda87e6-3f57-4e32-bed0-1426ec0c0be2"
id_mw_verifier_plate = "076f5a46-d3b3-4baa-ab43-cd20effeb492"
id_first_treatment_appointment = "72f9e3fe-1fe9-42ec-9b31-5b644a08d9ab"
status = Mevaterapia.Repo.get_by(Mevaterapia.Patients.Status, conduct_definition_id: id_conduct, current: true)
mwl = Mevaterapia.Repo.get_by(Mevaterapia.Reception.MachineWaitingList, appointment_id: id_mw_verifier_plate)
ma = Mevaterapia.Repo.get(Mevaterapia.Appointments.MachineAppointment, id_first_treatment_appointment)

params = %{
  doctor_ok_at: mwl.attended_at,
  doctor_ok_user_id: mwl.user_attended_id,
  verification_plate_state: :ok_medic,
  machine_appointment_at: ma.inserted_at,
  machine_appointment_user_id: ma.user_id,
  micro_status: :application
 }
Mevaterapia.Patients.Status.migration_fix_changeset(status,params) |> Mevaterapia.Repo.update!()
```
</details>

## 8. Guzman Catalina Irma: sacar alta administrativa al 3D

```elixir
cd_id = "c06358cf-2eaf-4849-a647-c40310014ffc"
cd = Mevaterapia.Patients.get_conduct_definition!(cd_id)

Ecto.Changeset.change(cd, %{administrative_ok: false, administrative_ok_at: nil, administrative_ok_user_id: nil}) |> Mevaterapia.Repo.update!()
```

:::success
ya se corrió
:::

## 9. Torres Montes de Oca, Elias -> relacionar la orden de autorización que creó el presupuesto con la CD existente

- La institución del paciente "OSCAMGLYP" no tiene domicilio así que no va a aparecer para facturar. Se lo tienen que agregar si quieren facturar para esa institución (probé de agregarlo local y ahí si me apareció el item como pendiente)

```elixir
#
# Link AuthorizationOrderDetail to the existing treatment
#
aod = Mevaterapia.Patients.get_authorization_order_detail!("a5611cbc-d47e-47a6-b71f-eb54f5feac5d")
existing_cd_id = "82520276-6c5a-455a-9c6f-ba88c4ffcf05"
Mevaterapia.Patients.AuthorizationOrderDetail.changeset(aod, %{conduct_definition_id: existing_cd_id}) |> Mevaterapia.Repo.update!()

#
# Follow up
#
auth_order_id = "fcda58d8-97ba-4244-815c-1dda29fa6900"
authorized_at_date = 
Mevaterapia.Patients.get_authorization_order!(auth_order_id).authorization_date
{:ok, authorized_at} = 
NaiveDateTime.new(authorized_at_date, ~T[00:00:00])
authorization_user_id = 
Mevaterapia.Patients.get_authorization_order!(auth_order_id).finish_user_id
cd = 
Mevaterapia.Patients.get_conduct_definition!(existing_cd_id)
status = 
Mevaterapia.Repo.preload(cd, :status).status
Mevaterapia.Patients.Status.update_changeset(status, %{authorization_at:  authorized_at, authorization_user_id: authorization_user_id}) |> Mevaterapia.Repo.update!()
```

:::warning
ya se corrió la query, SALVO la última parte del follow up que vamos a consultar qué fechas ponerle
:::

:::info
**update 01/03**: le pifiaron al nro de afiliado en el presupuesto, entonces crearon uno nuevo y lo volvieron a relacionar. Esto creó:

- un nuevo tratamiento
- una nueva orden de autorización

La orden anterior la archivaron, entonces tenemos que volver a correr el mismo código pero ahora apuntando a la nueva orden de autorización
:::

```elixir
#
# Link AuthorizationOrderDetail to the existing treatment
#
aod = Mevaterapia.Patients.get_authorization_order_detail!("c5f931f8-1d69-48c6-a6c4-94b3692c9784")
existing_cd_id = "82520276-6c5a-455a-9c6f-ba88c4ffcf05"
Mevaterapia.Patients.AuthorizationOrderDetail.changeset(aod, %{conduct_definition_id: existing_cd_id}) |> Mevaterapia.Repo.update!()

#
# Follow up
#
auth_order_id = "0f975301-5ad0-4dd9-8a3c-6077eb3ddf97"
authorized_at_date = 
Mevaterapia.Patients.get_authorization_order!(auth_order_id).authorization_date
{:ok, authorized_at} = 
NaiveDateTime.new(authorized_at_date, ~T[00:00:00])
authorization_user_id = 
Mevaterapia.Patients.get_authorization_order!(auth_order_id).finish_user_id
cd = 
Mevaterapia.Patients.get_conduct_definition!(existing_cd_id)
status = 
Mevaterapia.Repo.preload(cd, :status).status
Mevaterapia.Patients.Status.update_changeset(status, %{authorization_at:  authorized_at, authorization_user_id: authorization_user_id}) |> Mevaterapia.Repo.update!()
```

:::warning
no se corrió esta query todavía
:::

## 10. Orrego mirian paciente de braqui no se puede atender

Tiré una query para ver sus stages:

```elixir
q = from s in Mevaterapia.Patients.Stage, where: s.medical_history_id == ^orrego_mh_id

iex(mevaterapia@backup-mevaterapia)5> Repo.all(q)
[
  %Mevaterapia.Patients.Stage{
    __meta__: #Ecto.Schema.Metadata<:loaded, "conduct_definition_stages">,
    amount_days: nil,
    anatomical_region: "Pelvis",
    conduct_definitions: #Ecto.Association.NotLoaded<association :conduct_definitions is not loaded>,
    current: false,
    end_at: nil,
    end_user: #Ecto.Association.NotLoaded<association :end_user is not loaded>,
    end_user_id: nil,
    id: "bf2fb9d1-53a6-4ed3-8b68-f9e551c8e80f",
    inserted_at: ~U[2022-11-16 16:45:00Z],
    manual_end: false,
    medical_history: #Ecto.Association.NotLoaded<association :medical_history is not loaded>,
    medical_history_id: "58c3a87a-9985-43be-b5fe-a4632ccfa652",
    stage_number: 1,
    start_at: nil,
    updated_at: ~U[2023-02-28 08:42:10Z]
  }
]
```

Tiene una sola que no está marcada como current. La query que la marca como current otra vez es:

```elixir
import Ecto.Query
alias Mevaterapia.Repo
stage_id = "bf2fb9d1-53a6-4ed3-8b68-f9e551c8e80f"
stage = Mevaterapia.Patients.get_stage!(stage_id)
Mevaterapia.Patients.Stage.changeset(stage, %{current: true}) |> Repo.update!()
```

:::success
Ya se corrió la query
:::

## 11. Sacar alta administrativa a Healy, Tadeo Antonio

query:

```elixir
cd_id = "ead74b73-7bd7-4144-b296-466f26ffd49b"
cd = Mevaterapia.Patients.get_conduct_definition!(cd_id)

Ecto.Changeset.change(cd, %{administrative_ok: false, administrative_ok_at: nil, administrative_ok_user_id: nil}) |> Mevaterapia.Repo.update!()
```

:::success
ya se corrió la query
:::

# Resumen fixes 01/03

## 13. Bug en el edit de los turnos de equipo

> when the appointment can't be changed because it has attended at least
once (that means it has an attended twl) the select for the machine is
not shown. Because of that, the controller receives a nil machine_id in
the params and the check wasn't working as expected. We need to check for a nil value and we're good to go

15. Informe de "Gestión > Estadística de Ingresos > Ingreso de pacientes" sale en blanco

> Lo genera pero con ningún pagiente
*Paciente
Aclaración el filtro es el de primera consulta
Y el filtro de inicio de tratamiento solo trae un par de paciente

16. Error de Facturación al intentar emitir [factura](https://backup.castelar.mevaterapia.lambdaclass.com/billing/invoices/a9c023f7-5c4e-4611-9ecc-f46f2d33d185)

![](https://i.imgur.com/zzb2R9R.png)

Ya se pudo emitir, la factura en ese momento no tenía cargado el cbu de mipyme y no había CBU cargado en parámetros

# Resumen fixes 02/03

## 18. Agregar Opción de Eliminar Archivos en "Legajo para facturación" de Auditoría

> la pte SORIA Gisele (13-18870-) que es de OSDD para poder eliminar en auditoria en la parte de "legajo para facturación" tener la opción de eliminar archivos. Necesito que la agreguen hoy porque impacta en la interface de OSDE que hace Alejandra. Gracias.

Por ahora sólo vamos a borrar el paciente a mano, lo otro lleva más tiempo.

Armé [ticket](https://app.clickup.com/t/85zrprj6w) de esto

query:

```elixir
alias Mevaterapia.Repo
import Ecto.Query

q = from af in Mevaterapia.Audits.PatientAuditFile, where: af.id == ^"b9aa0b3c-01f8-4b27-be9d-858610aed570"
audit_file = Repo.one!(q)
Repo.delete(audit_file)
```

:::success
Esta query se corrió
:::

## 19. Destrabar pacientes de placa 02/03

Listado de pacientes:

- Sotelo alberto
- Argañaraz tiburcio
- Ríos roxana
- kucheruk Gabriel

:::success
Se corrieron las queries, hay una cosa puntual que hay que correr de Argañaraz
:::

### Sotelo Alberto

<details>
    <summary>query:</summary>
    
```elixir
id_conduct = "2c8b3052-7286-4b93-999b-1eaed935967c"
id_mw_verifier_plate = "b291dd76-0ed1-4495-826f-d9bce3b1ad79"
id_first_treatment_appointment = "bd041c24-9a54-4204-bf2c-79e8df774663"
status = Mevaterapia.Repo.get_by(Mevaterapia.Patients.Status, conduct_definition_id: id_conduct, current: true)
mwl = Mevaterapia.Repo.get_by(Mevaterapia.Reception.MachineWaitingList, appointment_id: id_mw_verifier_plate)
ma = Mevaterapia.Repo.get(Mevaterapia.Appointments.MachineAppointment, id_first_treatment_appointment)

params = %{
  doctor_ok_at: mwl.attended_at,
  doctor_ok_user_id: mwl.user_attended_id,
  verification_plate_state: :ok_medic,
  machine_appointment_at: ma.inserted_at,
  machine_appointment_user_id: ma.user_id,
  micro_status: :application
 }
Mevaterapia.Patients.Status.migration_fix_changeset(status,params) |> Mevaterapia.Repo.update!()
```
</details>

### Argañaraz Tiburcio

<details>
    <summary>query:</summary>
    
```elixir
id_conduct = "31ae3182-87aa-4424-8c1b-6f9fa32b6609"
id_mw_verifier_plate = "7949a8f4-aa21-4762-b137-91d8a11f60d6"
id_first_treatment_appointment = "bdd1fb43-c8c5-4e85-a451-840ae792b935"
status = Mevaterapia.Repo.get_by(Mevaterapia.Patients.Status, conduct_definition_id: id_conduct, current: true)
mwl = Mevaterapia.Repo.get_by(Mevaterapia.Reception.MachineWaitingList, appointment_id: id_mw_verifier_plate)
ma = Mevaterapia.Repo.get(Mevaterapia.Appointments.MachineAppointment, id_first_treatment_appointment)

# We use left_at because the appointment wasn't attended (but actually was attended. The most accurate time is the time they marked the appointment as left)
# doctor_ok_user_id
params = %{
  doctor_ok_at: mwl.left_at,
  doctor_ok_user_id: "1f7939f9-b6b1-4109-860b-d4300eae1a7e",
  verification_plate_state: :ok_medic,
  machine_appointment_at: ma.inserted_at,
  machine_appointment_user_id: ma.user_id,
  micro_status: :application
 }
Mevaterapia.Patients.Status.migration_fix_changeset(status,params) |> Mevaterapia.Repo.update!()
```
</details>

:::warning
Argañaraz, falta marcar el turno usado en follow up como atendido
:::

query:

```elixir
verifier_plate_appointment_id = "7949a8f4-aa21-4762-b137-91d8a11f60d6"
verifier_wl = hd(Mevaterapia.Repo.preload(Mevaterapia.Appointments.get_machine_appointment!(verifier_plate_appointment_id), :machine_waiting_list).machine_waiting_list)

finished_at = verifier_wl.left_at

Ecto.Changeset.change(verifier_wl, %{finished_at: finished_at, left_reason: nil, left_at: nil, attended_at: finished_at, user_attended_id: "0ce10d20-9f23-4548-9141-eab7bb21ff02"}) |> Mevaterapia.Repo.update()
```

:::warning
No se corrió esta query todavía
:::

### Ríos Roxana

<details>
    <summary>query:</summary>
    
```elixir
id_conduct = "c6474816-aedc-4219-9f47-7bfdc2fca973"
id_mw_verifier_plate = "2de10c3b-321a-4d4e-9863-eb56df6adfda"
id_first_treatment_appointment = "e9f7e93d-a273-46ea-bf11-bf9f70f3cacf"
status = Mevaterapia.Repo.get_by(Mevaterapia.Patients.Status, conduct_definition_id: id_conduct, current: true)
mwl = Mevaterapia.Repo.get_by(Mevaterapia.Reception.MachineWaitingList, appointment_id: id_mw_verifier_plate)
ma = Mevaterapia.Repo.get(Mevaterapia.Appointments.MachineAppointment, id_first_treatment_appointment)

params = %{
  doctor_ok_at: mwl.attended_at,
  doctor_ok_user_id: mwl.user_attended_id,
  verification_plate_state: :ok_medic,
  machine_appointment_at: ma.inserted_at,
  machine_appointment_user_id: ma.user_id,
  micro_status: :application
 }
Mevaterapia.Patients.Status.migration_fix_changeset(status,params) |> Mevaterapia.Repo.update!()
```
</details>

### Kucheruk Gabriel

<details>
    <summary>query:</summary>
    
```elixir
id_conduct = "7fe53166-250a-4a2c-b0d5-90ef6b570483"
id_mw_verifier_plate = "2553f845-6df6-4c82-825c-14f26ace871f"
id_first_treatment_appointment = "719e0e1c-e067-436a-905a-28d581dbceb8"
status = Mevaterapia.Repo.get_by(Mevaterapia.Patients.Status, conduct_definition_id: id_conduct, current: true)
mwl = Mevaterapia.Repo.get_by(Mevaterapia.Reception.MachineWaitingList, appointment_id: id_mw_verifier_plate)
ma = Mevaterapia.Repo.get(Mevaterapia.Appointments.MachineAppointment, id_first_treatment_appointment)

params = %{
  doctor_ok_at: mwl.attended_at,
  doctor_ok_user_id: mwl.user_attended_id,
  verification_plate_state: :ok_medic,
  machine_appointment_at: ma.inserted_at,
  machine_appointment_user_id: ma.user_id,
  micro_status: :application
 }
Mevaterapia.Patients.Status.migration_fix_changeset(status,params) |> Mevaterapia.Repo.update!()
```
</details>

# Resumen fixes 03/03

## 20. Robledo Gabriela Noemi, no pueden atender y no les deja dar aplicación a la bqt porque no aparece en el select de tratamiento

> Buenos dias, me avisan de BQT que le quieren cargar la aplicación de braqui de la pte ROBLEDO Gabriela Noemi (13-18828-0). El turno lo esta cargando fuera de la agenda ya que ayer no le pudo dar el atendido, pero cuando va a cargar la apl no sale la opcion del tto de bqt. Cuando puedan lo podran ver. Gracias

Tiene el mismo problema que tenía Alvarez, Martha Alejandra en donde tiene una simulación para la etapa 1 con sus fields archivados pero la simulación está sin archivar. Tenemos que hacer 2 cosas:

- archivar la simu
- actualizar el stage para que el actual sea el segundo en lugar del primero

```elixir
#
# Archive Simulation
#
simu = Mevaterapia.Patients.get_simulation!("bf307196-623e-47ce-99b0-acbb87800042")
Mevaterapia.Patients.Simulation.archive_changeset(simu, %{archived: true}) |> Mevaterapia.Repo.update!()


#
# UPDATE CURRENT STAGE
#
first_stage_id = "d51cb546-c9e6-4ace-b8c6-d5fd62ccde4a"
stage = Mevaterapia.Patients.get_stage!(first_stage_id)
Mevaterapia.Patients.Stage.changeset(stage, %{current: false}) |> Mevaterapia.Repo.update!()

second_stage_id = "42a42fa5-6258-4ec8-8b1d-997d7a969d7c"
stage = Mevaterapia.Patients.get_stage!(second_stage_id)
Mevaterapia.Patients.Stage.changeset(stage, %{current: true}) |> Mevaterapia.Repo.update!()
```

:::warning
Ya se corrió la query
:::

## 21. Paciente Dualtes de Presupuesto, hay que corregir a dónde apunta la orden de autorización

> Chicos relacione un presupuesto de la pte DUALTES Patricia Liliana (13-18934-0). Necesito para mañana a la mañana, que se relacione el presupuesto con el tto cargado porfa, porque hay que facturarlo.

```elixir
#
# Link AuthorizationOrderDetail to the existing treatment
#
aod = Mevaterapia.Patients.get_authorization_order_detail!("b295e822-8e6d-4a38-9b96-dbf30e138454")
existing_cd_id = "d0e91480-8c93-4048-95af-706183466415"
Mevaterapia.Patients.AuthorizationOrderDetail.changeset(aod, %{conduct_definition_id: existing_cd_id}) |> Mevaterapia.Repo.update!()

#
# Follow up
#
auth_order_id = "32c7019c-7d57-4d56-ab15-2e04eb6452c3"
authorized_at_date = 
Mevaterapia.Patients.get_authorization_order!(auth_order_id).authorization_date
{:ok, authorized_at} = 
NaiveDateTime.new(authorized_at_date, ~T[00:00:00])
authorization_user_id = 
Mevaterapia.Patients.get_authorization_order!(auth_order_id).finish_user_id
cd = 
Mevaterapia.Patients.get_conduct_definition!(existing_cd_id)
status = 
Mevaterapia.Repo.preload(cd, :status).status
Mevaterapia.Patients.Status.update_changeset(status, %{authorization_at:  authorized_at, authorization_user_id: authorization_user_id, auth_order_state: :auth_order_ok}) |> Mevaterapia.Repo.update!()
```

:::success
Ya se corrió la query
:::