antes de viaje
This commit is contained in:
parent
5101a745aa
commit
e33f8ad22f
@ -3,6 +3,7 @@ defmodule Derivantes.Accounts.User do
|
|||||||
import Ecto.Changeset
|
import Ecto.Changeset
|
||||||
|
|
||||||
schema "users" do
|
schema "users" do
|
||||||
|
field :matricula, :string
|
||||||
field :email, :string
|
field :email, :string
|
||||||
field :password, :string, virtual: true, redact: true
|
field :password, :string, virtual: true, redact: true
|
||||||
field :hashed_password, :string, redact: true
|
field :hashed_password, :string, redact: true
|
||||||
@ -36,9 +37,15 @@ defmodule Derivantes.Accounts.User do
|
|||||||
"""
|
"""
|
||||||
def registration_changeset(user, attrs, opts \\ []) do
|
def registration_changeset(user, attrs, opts \\ []) do
|
||||||
user
|
user
|
||||||
|> cast(attrs, [:email, :password])
|
|> cast(attrs, [:email, :password, :matricula])
|
||||||
|> validate_email(opts)
|
|> validate_email(opts)
|
||||||
|> validate_password(opts)
|
|> validate_password(opts)
|
||||||
|
|> validate_matricula(opts)
|
||||||
|
end
|
||||||
|
|
||||||
|
defp validate_matricula(changeset, opts) do
|
||||||
|
IO.inspect(opts)
|
||||||
|
changeset
|
||||||
end
|
end
|
||||||
|
|
||||||
defp validate_email(changeset, opts) do
|
defp validate_email(changeset, opts) do
|
||||||
|
@ -10,6 +10,7 @@
|
|||||||
<link phx-track-static rel="stylesheet" href={~p"/assets/app.css"} />
|
<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 defer phx-track-static type="text/javascript" src={~p"/assets/app.js"}>
|
||||||
</script>
|
</script>
|
||||||
|
<script src="https://kit.fontawesome.com/8afa33c96d.js" crossorigin="anonymous"></script>
|
||||||
</head>
|
</head>
|
||||||
<body class="bg-white antialiased">
|
<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">
|
<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
|
import Ecto.Query
|
||||||
|
|
||||||
def mount(_params, _session, socket) do
|
def mount(_params, _session, socket) do
|
||||||
{:ok, socket}
|
{:ok,
|
||||||
|
socket
|
||||||
|
|> assign(studies: get_studies())
|
||||||
|
}
|
||||||
end
|
end
|
||||||
|
|
||||||
def render(assigns) do
|
def render(assigns) do
|
||||||
~H"""
|
~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
|
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
|
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.
|
Hubo un error.
|
||||||
</.error>
|
</.error>
|
||||||
<img src={~p"/images/sana_americano_logo.png"} alt="Sanatorio Americano Logo"/>
|
<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[:email]} type="email" label="Email" required />
|
||||||
<.input class="imput_text w-40" field={@form[:password]} type="password" label="Contraseña" 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