This commit is contained in:
santiago.sferco 2024-07-04 14:26:31 -03:00
parent ad3c3f8e33
commit 3ec4ca0325

View File

@ -4,20 +4,39 @@ defmodule DerivantesWeb.DerivantesLive do
import Ecto.Query import Ecto.Query
def mount(_params, _session, socket) do def mount(_params, _session, socket) do
filters = to_form(%{}, as: "filters")
{:ok, {:ok,
socket socket
|> assign(studies: get_studies(socket)) |> assign(studies: get_studies(socket, %{}))
|> assign(filters: filters)
} }
end end
def render(assigns) do def render(assigns) do
~H""" ~H"""
<div> <div>
<%= if length(@studies) > 0 do %> <div class="pantalla_estudios_header">
<img src={~p"/images/sana_americano_logo.png"} alt="IM LOGO"/>
</div>
<div class="estudio_patientname"> <div class="estudio_patientname">
<h1>Bienvenido, <%= @current_user.email %> </h1> <h1>Bienvenido, <%= @current_user.email %> </h1>
<p>Para ver un estudio haga click en el icono de Informe o de Imágenes.</p> <p>Para ver un estudio haga click en el icono de Informe o de Imágenes.</p>
</div> </div>
<div>
<.simple_form
for={@filters}
id="filters"
phx-update="ignore"
phx-submit="filter_study"
>
<.input field={@filters[:dni]} type="text"/>
<.input field={@filters[:accession]} type="text"/>
<:actions>
<.button phx-disable-with="Buscando..." class="w-full">Buscar</.button>
</:actions>
</.simple_form>
</div>
<%= if length(@studies) > 0 do %>
<div class="estudio_container"> <div class="estudio_container">
<div class="estudio_details"> <div class="estudio_details">
<p>Estudios</p> <p>Estudios</p>
@ -84,7 +103,32 @@ defmodule DerivantesWeb.DerivantesLive do
"#{hora}:#{minutos}:#{segundos}" "#{hora}:#{minutos}:#{segundos}"
end end
def get_studies(socket) do def get_studies(socket, filter) do
keys = Map.keys(filter)
IO.inspect(keys)
mat_filter = dynamic([vl], vl.matder == ^socket.assigns.current_user.matricula)
filter_conditions =
Enum.reduce(keys, mat_filter, fn v, filter_conditions ->
case v do
"dni" ->
if(filter["dni"] != "") do
dynamic([vl], vl.tipo_documento == ^filter["dni"] and ^filter_conditions)
else
filter_conditions
end
"accession" ->
if(filter["accession"] != "") do
dynamic([vl], vl.accessionnumber == ^filter["accession"] and ^filter_conditions)
else
filter_conditions
end
_ ->
filter_conditions
end
end)
query = from vl in "V_LISTAINGRESOS", query = from vl in "V_LISTAINGRESOS",
select: %{ select: %{
idstudy: field(vl, :ID), idstudy: field(vl, :ID),
@ -99,11 +143,21 @@ defmodule DerivantesWeb.DerivantesLive do
accession: field(vl, :ACCESSIONNUMBER), accession: field(vl, :ACCESSIONNUMBER),
patientname: field(vl, :PATIENTFIRSTNAME) patientname: field(vl, :PATIENTFIRSTNAME)
}, },
where: field(vl, :MATDER) == ^socket.assigns.current_user.matricula, where: ^filter_conditions,
order_by: [desc: field(vl, :START_DATE)], order_by: [desc: field(vl, :START_DATE)],
limit: 20 limit: 20
estudios = Derivantes.TdsRepo.all(query) estudios = Derivantes.TdsRepo.all(query)
estudios estudios
end end
def handle_event(event, params, socket) do
case event do
"filter_study" ->
studies = get_studies(socket, params["filters"])
{:noreply,
socket
|> assign(studies: studies)
}
end
end
end end