antes de viaje
This commit is contained in:
parent
5101a745aa
commit
e33f8ad22f
@ -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
|
||||
|
@ -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">
|
||||
|
@ -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
|
||||
|
@ -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
|
@ -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 />
|
||||
|
||||
|
@ -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
|
Loading…
x
Reference in New Issue
Block a user