antes de viaje
This commit is contained in:
		| @ -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 | ||||
		Reference in New Issue
	
	Block a user