filters
This commit is contained in:
parent
ad3c3f8e33
commit
3ec4ca0325
@ -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
|
||||||
|
Loading…
x
Reference in New Issue
Block a user