antes de viaje

This commit is contained in:
SantiSvk 2024-06-18 11:53:49 -03:00
parent 5101a745aa
commit e33f8ad22f
6 changed files with 111 additions and 157 deletions

View File

@ -3,6 +3,7 @@ defmodule Derivantes.Accounts.User do
import Ecto.Changeset
schema "users" do
field :matricula, :string
field :email, :string
field :password, :string, virtual: true, redact: true
field :hashed_password, :string, redact: true
@ -36,9 +37,15 @@ defmodule Derivantes.Accounts.User do
"""
def registration_changeset(user, attrs, opts \\ []) do
user
|> cast(attrs, [:email, :password])
|> cast(attrs, [:email, :password, :matricula])
|> validate_email(opts)
|> validate_password(opts)
|> validate_matricula(opts)
end
defp validate_matricula(changeset, opts) do
IO.inspect(opts)
changeset
end
defp validate_email(changeset, opts) do

View File

@ -10,6 +10,7 @@
<link phx-track-static rel="stylesheet" href={~p"/assets/app.css"} />
<script defer phx-track-static type="text/javascript" src={~p"/assets/app.js"}>
</script>
<script src="https://kit.fontawesome.com/8afa33c96d.js" crossorigin="anonymous"></script>
</head>
<body class="bg-white antialiased">
<ul class="relative z-10 flex items-center gap-4 px-4 sm:px-6 lg:px-8 justify-end">

View File

@ -4,12 +4,100 @@ defmodule DerivantesWeb.DerivantesLive do
import Ecto.Query
def mount(_params, _session, socket) do
{:ok, socket}
{:ok,
socket
|> assign(studies: get_studies())
}
end
def render(assigns) do
~H"""
<h1> Listado </h1>
<div>
<div class="pantalla_estudios_header">
<img src={~p"/images/sana_americano_logo.png"} alt="IM LOGO"/>
</div>
<%= if length(@studies) > 0 do %>
<div class="estudio_patientname">
<h1>Bienvenido</h1>
<p>Para ver un estudio haga click en el icono de Informe o de Imágenes.</p>
</div>
<div class="estudio_container">
<div class="estudio_details">
<p>Estudios</p>
</div>
<div class="estudio_icons">
<p>Informe</p>
<p>Imágenes</p>
</div>
</div>
<%= for study <- @studies do %>
<div class="estudio_container">
<div class="estudio_details">
<p><b>Fecha y hora:</b> <%= format_date(study.fecha) %> - <%= format_hour(study.hora) %></p>
<p><b>DNI:</b> <%= study.dni %></p>
<p><b>Accession N°</b> <%= study.accession %></p>
</div>
<div class="estudio_icons">
<%= case {study.modality, study.esteco, study.estrx} do %>
<% {"US", "F", _} -> %>
<a href={"https://sga.sanatorio-americano.com.ar/diagnostico/impeco.asp?id=#{study.accession}"} target="_blank" style="color: #297177">
<i class="fa-regular fa-file-lines fa-3x" style="color: #297177"></i>
</a>
<% {modality, _, "E"} when modality != "US" -> %>
<a href={"https://ed.sanatorio-americano.com.ar/cgi-bin/minisite.bf/pdfonthefly/#{study.accession}"} target="_blank" style="color: #297177">
<i class="fa-regular fa-file-lines fa-3x" style="color: #297177"></i>
</a>
<% _ -> %>
<i class="fa-solid fa-file-circle-question fa-3x" style="color: #DCDCDC"></i>
<% end %>
<%= if study.modality != "US" do %>
<a href={"https://imagenes.sanatorio-americano.com.ar/portal/Default.aspx?user_name=urlusr&password=1nt3gr4c10n$$$&accession_number=#{study.accession}"} target="_blank" style="color: #297177">
<i class="fa-solid fa-file-circle-check fa-3x" style="color: #297177"></i>
</a>
<% else %>
<i class="fa-solid fa-file-circle-question fa-3x" style="color: #DCDCDC"></i>
<% end %>
</div>
</div>
<% end %>
<% end %>
</div>
"""
end
def format_date(date_string) when is_binary(date_string) do
anio = String.slice(date_string, 0..3)
mes = String.slice(date_string, 4..5)
dia = String.slice(date_string, 6..7)
"#{dia}/#{mes}/#{anio}"
end
def format_hour(hour_string) when is_binary(hour_string) do
hora = String.slice(hour_string, 0..1)
minutos = String.slice(hour_string, 2..3)
segundos = String.slice(hour_string, 4..6)
"#{hora}:#{minutos}:#{segundos}"
end
def get_studies() do
query = from vl in "V_LISTAINGRESOS",
select: %{
idstudy: field(vl, :ID),
estrx: field(vl, :ESTRX),
esteco: field(vl, :ESTECO),
# desc: field(vl, :PROD_DESC),
hora: field(vl, :START_TIME),
fecha: field(vl, :START_DATE),
modality: field(vl, :MODALITY),
dni: field(vl, :TIPO_DOCUMENTO),
lastname: field(vl, :PATIENTLASTNAME),
accession: field(vl, :ACCESSIONNUMBER),
patientname: field(vl, :PATIENTFIRSTNAME)
},
order_by: [desc: field(vl, :START_DATE)],
limit: 20
estudios = Derivantes.TdsRepo.all(query)
estudios
end
end

View File

@ -1,154 +0,0 @@
defmodule DerivantesWeb.DerivantesHashLive do
use DerivantesWeb, :live_view
use Phoenix.Component
import Ecto.Query
def mount(params, _session, socket) do
IO.inspect(params)
hash = params["hash"]
incorrecto = if hash != "123" do
true
else
false
end
IO.inspect(incorrecto)
socket =
socket
|> assign(:dato_incorrecto, incorrecto)
|> assign(:logged_in, false)
{:ok, socket}
end
defmodule DateFormatter do
def format_date(date_string) when is_binary(date_string) do
anio = String.slice(date_string, 0..3)
mes = String.slice(date_string, 4..5)
dia = String.slice(date_string, 6..7)
"#{dia}/#{mes}/#{anio}"
end
def format_hour(hour_string) when is_binary(hour_string) do
hora = String.slice(hour_string, 0..1)
minutos = String.slice(hour_string, 2..3)
segundos = String.slice(hour_string, 4..6)
"#{hora}:#{minutos}:#{segundos}"
end
end
def render(assigns) do
~H"""
<%= if @logged_in == false do %>
<div class="log_in_container">
<form class="log_in_form" phx-submit="login">
<img src={~p"/images/sana_americano_logo.png"} alt="Sanatorio Americano Logo"/>
<input class="imput_text" type="text" name="dni" placeholder="ID Paciente"/>
<input class="submit_button" type="submit" value="Ingresar" id="submit">
<%= if @dato_incorrecto == true do %>
<h1 class="error_msg">Datos incorrectos</h1>
<% end %>
</form>
<div class="info_panel">
<p style="text-align: center;">Bienvenido a Entrega Digital <br> <b>Sanatorio Americano.</b></p>
<br>
<p> En este sitio, usted podrá visualizar los informes y estudios realizados en nuestra institución.</p>
<br>
<p>Si presenta inconvenientes con los datos ingresados, puede comunicarse con nosotros enviando un correo a
<br>
<b>mesadeayuda@sanatorio-americano.com.ar</b> detallando su nombre completo y D.N.I.</p>
</div>
</div>
<% else %>
<div class="pantalla_estudios_header">
<img src={~p"/images/sana_americano_logo.png"} alt="IM LOGO"/>
</div>
<%= if length(@studies) > 0 do %>
<div class="estudio_patientname">
<h1><%= List.first(@studies).lastname %>, <%= List.first(@studies).patientname %></h1>
<p>Para ver su estudio haga click en Abrir.</p>
</div>
<div class="estudio_container">
<div class="estudio_details">
<p>Estudios</p>
</div>
<div class="estudio_icons">
<p>Informe</p>
<p>Imágenes</p>
</div>
</div>
<%= for study <- @studies do %>
<div class="estudio_container">
<div class="estudio_details">
<p><b>Fecha y hora:</b> <%= DateFormatter.format_date(study.fecha) %> - <%= DateFormatter.format_hour(study.hora) %></p>
<p><b>Estudio:</b> <%= study.desc %></p>
<p><b>DNI:</b> <%= study.dni %></p>
<p><b>Accession N°</b> <%= study.accession %></p>
</div>
<div class="estudio_icons">
<%= case {study.modality, study.esteco, study.estrx} do %>
<% {"US", "F", _} -> %>
<i class="fa-regular fa-file-lines fa-3x" style="color: #297177"></i>
<% {modality, _, "E"} when modality != "US" -> %>
<i class="fa-regular fa-file-lines fa-3x" style="color: #297177"></i>
<% _ -> %>
<i class="fa-solid fa-file-circle-question fa-3x" style="color: #DCDCDC"></i>
<% end %>
<%= if study.modality != "US" do %>
<i class="fa-solid fa-file-circle-check fa-3x" style="color: #297177"></i>
<% else %>
<i class="fa-solid fa-file-circle-question fa-3x" style="color: #DCDCDC"></i>
<% end %>
</div>
</div>
<% end %>
<% end %>
<% end %>
"""
end
def handle_event("login", %{"dni" => dni, "acc" => acc}, socket) do
IO.inspect(dni)
IO.inspect(acc)
query = from vl in "V_LISTAINGRESOS",
select: %{
idstudy: field(vl, :ID)
},
where: field(vl, :TIPO_DOCUMENTO) == ^dni
and field(vl, :ACCESSIONNUMBER) == ^acc
result = Derivantes.TdsRepo.all(query)
socket = case result do
[] -> socket
|> assign(:dato_incorrecto, true)
_ -> query = from vl in "V_LISTAINGRESOS",
select: %{
idstudy: field(vl, :ID),
estrx: field(vl, :ESTRX),
esteco: field(vl, :ESTECO),
desc: field(vl, :PROD_DESC),
hora: field(vl, :START_TIME),
fecha: field(vl, :START_DATE),
modality: field(vl, :MODALITY),
dni: field(vl, :TIPO_DOCUMENTO),
lastname: field(vl, :PATIENTLASTNAME),
accession: field(vl, :ACCESSIONNUMBER),
patientname: field(vl, :PATIENTFIRSTNAME)
},
where: field(vl, :TIPO_DOCUMENTO) == ^dni,
order_by: [desc: field(vl, :START_DATE)]
IO.inspect(query, label: "----> Query")
estudios = Derivantes.TdsRepo.all(query)
socket
|> assign(dni: dni)
|> assign(acc: acc)
|> assign(logged_in: true)
|> assign(studies: estudios)
|> assign(dato_incorrecto: false)
end
{:noreply, socket}
end
end

View File

@ -32,6 +32,7 @@ defmodule DerivantesWeb.UserRegistrationLive do
Hubo un error.
</.error>
<img src={~p"/images/sana_americano_logo.png"} alt="Sanatorio Americano Logo"/>
<.input class="imput_text w-40" field={@form[:matricula]} type="text" label="Matrícula" required />
<.input class="imput_text w-40" field={@form[:email]} type="email" label="Email" required />
<.input class="imput_text w-40" field={@form[:password]} type="password" label="Contraseña" required />

View File

@ -0,0 +1,11 @@
defmodule Derivantes.Repo.Migrations.AddMatriculaToUser do
use Ecto.Migration
def change do
alter table(:users) do
add :matricula, :string
end
end
end