Compare commits

..

7 Commits

20 changed files with 593 additions and 56 deletions

View File

@ -3,7 +3,20 @@
<component name="deploymentTargetDropDown"> <component name="deploymentTargetDropDown">
<value> <value>
<entry key="app"> <entry key="app">
<State /> <State>
<targetSelectedWithDropDown>
<Target>
<type value="QUICK_BOOT_TARGET" />
<deviceKey>
<Key>
<type value="VIRTUAL_DEVICE_PATH" />
<value value="C:\Users\USER\.android\avd\Pixel_3a_API_34_extension_level_7_x86_64.avd" />
</Key>
</deviceKey>
</Target>
</targetSelectedWithDropDown>
<timeTargetWasSelectedWithDropDown value="2024-06-02T23:30:13.381406600Z" />
</State>
</entry> </entry>
</value> </value>
</component> </component>

View File

@ -1,6 +1,6 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" <manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools" > xmlns:tools="http://schemas.android.com/tools">
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
@ -14,7 +14,10 @@
android:roundIcon="@mipmap/ic_launcher_round" android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true" android:supportsRtl="true"
android:theme="@style/Theme.MedicalHealth" android:theme="@style/Theme.MedicalHealth"
tools:targetApi="31" > tools:targetApi="31">
<activity
android:name=".RecetasActivity"
android:exported="false" />
<activity <activity
android:name=".PacienteActivity" android:name=".PacienteActivity"
android:exported="false" /> android:exported="false" />
@ -51,7 +54,7 @@
android:exported="false" /> android:exported="false" />
<activity <activity
android:name=".MainActivity" android:name=".MainActivity"
android:exported="true" > android:exported="true">
<intent-filter> <intent-filter>
<action android:name="android.intent.action.MAIN" /> <action android:name="android.intent.action.MAIN" />

View File

@ -40,6 +40,7 @@ class MainActivity : AppCompatActivity() {
//dbRecetas.crearTablaReceta() //dbRecetas.crearTablaReceta()
//db.createTable() //db.createTable()
//dbHistorial.crearTablaHistorial() //dbHistorial.crearTablaHistorial()
//db.crearTablaPacientes()
binding.btnIniciarSesion.setOnClickListener { binding.btnIniciarSesion.setOnClickListener {
historial.fecha = obtenerFecha() historial.fecha = obtenerFecha()
var res = db.validarDatos( var res = db.validarDatos(

View File

@ -190,4 +190,8 @@ class PacienteActivity : AppCompatActivity(), CellClickListener {
cursor.close() cursor.close()
return pacientes return pacientes
} }
override fun onEnviarCorreoClickListener(position: Int) {
TODO("Not yet implemented")
}
} }

View File

@ -56,6 +56,9 @@ class PacientePrincipalActivity : AppCompatActivity(), CellClickListener {
binding.rvRecetasPaciente.layoutManager=LinearLayoutManager(this) binding.rvRecetasPaciente.layoutManager=LinearLayoutManager(this)
binding.rvRecetasPaciente.adapter= recycleAdapter binding.rvRecetasPaciente.adapter= recycleAdapter
binding.ivLogout.setOnClickListener {
finish()
}
} }
override fun onResume() { override fun onResume() {
@ -121,6 +124,38 @@ class PacientePrincipalActivity : AppCompatActivity(), CellClickListener {
startActivity(intent) startActivity(intent)
} }
override fun onEnviarCorreoClickListener(position: Int) {
val receta = recetas[position]
val nombrePaciente = receta.NombrePaciente
val nombreMedicamento = receta.nombreMedicamento
val dosisMedicamento = receta.dosis
val duracionMedicamento = receta.duracion
val fechaReceta = receta.fecha
val pesoPaciente = receta.pesoPaciente
val edadPaciente = receta.edadPaciente
val descripcionReceta = """
Fecha de Consulta: $fechaReceta
Datos Generales del Paciente:
Peso del Paciente: $pesoPaciente
Edad del Paciente: $edadPaciente
Medicamento a Recetar: $nombreMedicamento
Dosis del Medicamento: $dosisMedicamento
Duración del Tratamiento: $duracionMedicamento
""".trimIndent()
val intent = Intent(Intent.ACTION_SEND).apply {
type = "message/rfc822"
putExtra(Intent.EXTRA_SUBJECT, "Receta Médica de $nombrePaciente")
putExtra(Intent.EXTRA_TEXT, descripcionReceta)
}
try {
startActivity(Intent.createChooser(intent, "Enviar receta a través de:"))
} catch (ex: android.content.ActivityNotFoundException) {
Toast.makeText(this, "No hay clientes de correo instalados.", Toast.LENGTH_SHORT).show()
}
}
// función que valida si los permisos ya estan garantizados por parte del usuario // función que valida si los permisos ya estan garantizados por parte del usuario
fun permisosPDF() : Boolean{ fun permisosPDF() : Boolean{
val permission1= ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) val permission1= ContextCompat.checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE)

View File

@ -45,6 +45,10 @@ class PrincipalActivity : AppCompatActivity() {
historial = Historial("Doctor", null,"Se inicio la actividad de menu principal", obtenerFecha()) historial = Historial("Doctor", null,"Se inicio la actividad de menu principal", obtenerFecha())
datosDoctor(intent.getStringExtra("Cedula").toString()) datosDoctor(intent.getStringExtra("Cedula").toString())
añadirHistorial(historial) añadirHistorial(historial)
binding.ivLogout.setOnClickListener {
finish()
Toast.makeText(this@PrincipalActivity,"Sesión cerrada", Toast.LENGTH_LONG).show()
}
binding.ivPacientes.setOnClickListener { binding.ivPacientes.setOnClickListener {
val intent = Intent(this@PrincipalActivity, PacienteActivity::class.java) val intent = Intent(this@PrincipalActivity, PacienteActivity::class.java)
intent.putExtra("NombreDoctor", nombreDoctor) intent.putExtra("NombreDoctor", nombreDoctor)
@ -55,7 +59,7 @@ class PrincipalActivity : AppCompatActivity() {
} }
binding.ivRecetas.setOnClickListener { binding.ivRecetas.setOnClickListener {
val intent = Intent(this@PrincipalActivity, RecetaActivity::class.java) val intent = Intent(this@PrincipalActivity, RecetasActivity::class.java)
intent.putExtra("NombreDoctor", nombreDoctor) intent.putExtra("NombreDoctor", nombreDoctor)
startActivity(intent) startActivity(intent)
historial.eventoRealizado = "Se presiono el boton para iniciar la actividad de recetas" historial.eventoRealizado = "Se presiono el boton para iniciar la actividad de recetas"

View File

@ -0,0 +1,139 @@
package com.terratenientes.medicalhealth
import android.content.Intent
import android.os.Build
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.util.Log
import android.widget.Toast
import androidx.annotation.RequiresApi
import androidx.recyclerview.widget.LinearLayoutManager
import com.terratenientes.medicalhealth.adapters.CellClickListener
import com.terratenientes.medicalhealth.adapters.HistorialDataBaseHelper
import com.terratenientes.medicalhealth.adapters.RecetaDataBaseHelper
import com.terratenientes.medicalhealth.adapters.RecetaDoctorViewAdapter
import com.terratenientes.medicalhealth.adapters.RecetaViewAdapter
import com.terratenientes.medicalhealth.data.Historial
import com.terratenientes.medicalhealth.data.Receta
import com.terratenientes.medicalhealth.databinding.ActivityRecetasBinding
import java.time.ZoneId
import java.time.ZonedDateTime
import java.time.format.DateTimeFormatter
@RequiresApi(Build.VERSION_CODES.O)
class RecetasActivity : AppCompatActivity(), CellClickListener {
lateinit var binding: ActivityRecetasBinding
private lateinit var db: RecetaDataBaseHelper
private lateinit var recycleAdapter : RecetaDoctorViewAdapter
private lateinit var recetas : List<Receta>
lateinit var dbHistorial: HistorialDataBaseHelper
lateinit var historial: Historial
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityRecetasBinding.inflate(layoutInflater)
val view = binding.root
setContentView(view)
db= RecetaDataBaseHelper(this@RecetasActivity)
dbHistorial = HistorialDataBaseHelper(this@RecetasActivity)
historial = Historial("Doctor", intent.getStringExtra("NombreDoctor"),"Se inicio la actividad de recetas", obtenerFecha())
añadirHistorial(historial)
recycleAdapter = RecetaDoctorViewAdapter(db.obtenerRecetas(), this, this@RecetasActivity)
binding.rvRecetas.layoutManager= LinearLayoutManager(this@RecetasActivity)
binding.rvRecetas.adapter= recycleAdapter
binding.ivAgregarReceta.setOnClickListener {
val intent = Intent(this@RecetasActivity, RecetaActivity::class.java)
historial.eventoRealizado = "Se pulso el boton para agregar una receta"
historial.fecha = obtenerFecha()
añadirHistorial(historial)
startActivity(intent)
}
}
override fun onResume() {
super.onResume()
recycleAdapter.refreshData(db.obtenerRecetas())
}
override fun onCellClickListener(position: Int) {
}
override fun onEliminarClickListener(position: Int) {
val receta = recetas[position]
db.eliminarReceta(receta)
historial.eventoRealizado = "Se acciono el boton de eliminar la receta"
historial.fecha = obtenerFecha()
añadirHistorial(historial)
recycleAdapter.refreshData(db.obtenerRecetas())
Toast.makeText(this, "Receta eliminada correctamente", Toast.LENGTH_SHORT).show()
}
override fun onModifyClickListener(position: Int) {
val receta = recetas[position]
historial.eventoRealizado = "Se acciono el boton de iniciar la actividad de modificar receta"
historial.fecha = obtenerFecha()
añadirHistorial(historial)
val intent = Intent(this@RecetasActivity, ModificarRecetaActivity::class.java)
intent.putExtra("NombrePaciente", receta.NombrePaciente)
intent.putExtra("EdadPaciente", receta.edadPaciente.toString())
intent.putExtra("PesoPaciente", receta.pesoPaciente.toString())
intent.putExtra("NombreMedicamento", receta.nombreMedicamento)
intent.putExtra("Fecha", receta.fecha)
intent.putExtra("Dosis", receta.dosis)
intent.putExtra("Duracion", receta.duracion)
startActivity(intent)
}
override fun onEnviarCorreoClickListener(position: Int) {
val receta = recetas[position]
val nombrePaciente = receta.NombrePaciente
val nombreMedicamento = receta.nombreMedicamento
val dosisMedicamento = receta.dosis
val duracionMedicamento = receta.duracion
val fechaReceta = receta.fecha
val pesoPaciente = receta.pesoPaciente
val edadPaciente = receta.edadPaciente
val descripcionReceta = """
Fecha de Consulta: $fechaReceta
Datos Generales del Paciente:
Peso del Paciente: $pesoPaciente
Edad del Paciente: $edadPaciente
Medicamento a Recetar: $nombreMedicamento
Dosis del Medicamento: $dosisMedicamento
Duración del Tratamiento: $duracionMedicamento
""".trimIndent()
val intent = Intent(Intent.ACTION_SEND).apply {
type = "message/rfc822"
putExtra(Intent.EXTRA_SUBJECT, "Receta Médica de $nombrePaciente")
putExtra(Intent.EXTRA_TEXT, descripcionReceta)
}
try {
startActivity(Intent.createChooser(intent, "Enviar receta a través de:"))
} catch (ex: android.content.ActivityNotFoundException) {
Toast.makeText(this, "No hay clientes de correo instalados.", Toast.LENGTH_SHORT).show()
}
}
private fun obtenerFecha(): String {
val fromTimeZone = ZoneId.of("America/Mexico_City")
val currentTime = ZonedDateTime.now(fromTimeZone)
val dateFormat = "MMM dd yyyy | hh:mm:ss a "
val formatter = DateTimeFormatter.ofPattern(dateFormat)
return formatter.format(currentTime)
}
private fun añadirHistorial(historial: Historial) {
val resultadoInsert = dbHistorial.agregarInformacin(historial)
var msj = ""
if(resultadoInsert > 0)
msj = "Información historica almacenada"
else
msj = "Error al almacenar la información"
Log.i("Historial", msj + " | Información almacenada: " + historial)
}
}

View File

@ -29,26 +29,74 @@ class RegistrarDActivity : AppCompatActivity() {
dbHistorial = HistorialDataBaseHelper(this@RegistrarDActivity) dbHistorial = HistorialDataBaseHelper(this@RegistrarDActivity)
historial = Historial(null, null, "Se abrio la actividad de registro", obtenerFecha()) historial = Historial(null, null, "Se abrio la actividad de registro", obtenerFecha())
añadirHistorial(historial) añadirHistorial(historial)
db= DoctorDataBaseHelper(this@RegistrarDActivity) db = DoctorDataBaseHelper(this@RegistrarDActivity)
binding.btnRegistrar.setOnClickListener { binding.btnRegistrar.setOnClickListener {
registrarUsuario() if (validarCampos()) {
registrarUsuario()
}
} }
} }
private fun registrarUsuario(){ private fun validarCampos(): Boolean {
val cedula=binding.etCedelaRegistro.text.toString() val cedula = binding.etCedelaRegistro.text.toString()
val nombre=binding.etNombreRegistro.text.toString() val nombre = binding.etNombreRegistro.text.toString()
val apellido=binding.etApellidoRegistro.text.toString() val apellido = binding.etApellidoRegistro.text.toString()
val telefono=binding.etTelefonoRegisto.text.toString() val telefono = binding.etTelefonoRegisto.text.toString()
val domicilio = binding.etDomicilio.text.toString() val domicilio = binding.etDomicilio.text.toString()
val contrasena= binding.etContrasenaRegistro.text.toString() val contrasena= binding.etContrasenaRegistro.text.toString()
val usuario= Doctor(cedula,nombre,apellido,telefono,domicilio.toInt()) val usuario= Doctor(cedula,nombre,apellido,telefono,domicilio.toInt())
db.agregarDoctores(usuario,contrasena) /*db.agregarDoctores(usuario,contrasena)
Toast.makeText(this@RegistrarDActivity,"USUARIO AGREGADO",Toast.LENGTH_LONG).show() Toast.makeText(this@RegistrarDActivity,"USUARIO AGREGADO",Toast.LENGTH_LONG).show()*/
if (cedula.isEmpty() || nombre.isEmpty() || apellido.isEmpty() || telefono.isEmpty() || domicilio.isEmpty() || contrasena.isEmpty()) {
Toast.makeText(this, "Todos los campos son obligatorios.", Toast.LENGTH_LONG).show()
return false
}
if (!validarCedula(cedula)) {
Toast.makeText(this, "Cédula profesional no válida.", Toast.LENGTH_LONG).show()
return false
}
if (!validarTelefono(telefono)) {
Toast.makeText(this, "Número de teléfono no válido.", Toast.LENGTH_LONG).show()
return false
}
return true
}
private fun validarCedula(cedula: String): Boolean {
// Expresión regular para validar que la cédula tenga entre 5 y 8 caracteres o exactamente 11 caracteres alfanuméricos
val regex = Regex("^[a-zA-Z0-9]{5,8}$|^[a-zA-Z0-9]{11}$")
return regex.matches(cedula)
}
private fun validarTelefono(telefono: String): Boolean {
// Expresión regular para validar que el número de teléfono tenga 10 digitos
val regex = Regex("^\\d{10}$")
return regex.matches(telefono)
}
private fun registrarUsuario() {
val cedula = binding.etCedelaRegistro.text.toString()
val nombre = binding.etNombreRegistro.text.toString()
val apellido = binding.etApellidoRegistro.text.toString()
val telefono = binding.etTelefonoRegisto.text.toString()
val domicilio = binding.etDomicilio.text.toString()
val contrasena = binding.etContrasenaRegistro.text.toString()
val usuario = Doctor(cedula, nombre, apellido, telefono, domicilio.toInt())
db.agregarDoctores(usuario, contrasena)
historial.eventoRealizado = "Se registraron los datos de un doctor" historial.eventoRealizado = "Se registraron los datos de un doctor"
historial.fecha = obtenerFecha() historial.fecha = obtenerFecha()
historial.tipoUsuario = "Doctor" historial.tipoUsuario = "Doctor"
historial.nombreUsuario = nombre historial.nombreUsuario = nombre
añadirHistorial(historial) añadirHistorial(historial)
Toast.makeText(this@RegistrarDActivity, "USUARIO AGREGADO", Toast.LENGTH_LONG).show()
finish() finish()
} }

View File

@ -4,4 +4,5 @@ interface CellClickListener {
fun onCellClickListener(position : Int) fun onCellClickListener(position : Int)
fun onEliminarClickListener(position: Int) fun onEliminarClickListener(position: Int)
fun onModifyClickListener(position: Int) fun onModifyClickListener(position: Int)
fun onEnviarCorreoClickListener(position: Int)
} }

View File

@ -93,6 +93,26 @@ class RecetaDataBaseHelper(context: Context) : SQLiteOpenHelper(context, DATABAE
return recetas return recetas
} }
@SuppressLint("Range")
fun obtenerRecetas(): List<Receta> {
val recetas = mutableListOf<Receta>()
val db = readableDatabase
val cursor = db.rawQuery("SELECT * FROM $TABLE_NAME", null)
while (cursor.moveToNext()) {
val nombrePaciente = cursor.getString(cursor.getColumnIndex(COLUMN_NOMBRE_PACIENTE))
val edadPaciente = cursor.getInt(cursor.getColumnIndex(COLUMN_EDAD_PACIENTE))
val pesoPaciente = cursor.getDouble(cursor.getColumnIndex(COLUMN_PESO_PACIENTE))
val medicamento = cursor.getString(cursor.getColumnIndex(COLUMN_MEDICAMENTO))
val fecha = cursor.getString(cursor.getColumnIndex(COLUMN_FECHA))
val dosis = cursor.getString(cursor.getColumnIndex(COLUMN_DOSIS_PACIENTE))
val duracion = cursor.getString(cursor.getColumnIndex(DURACION_MEDICAMENTO))
val receta = Receta(nombrePaciente, edadPaciente, pesoPaciente, medicamento, fecha, dosis, duracion)
recetas.add(receta)
}
cursor.close()
return recetas
}
fun eliminarReceta(receta: Receta) { fun eliminarReceta(receta: Receta) {
Log.d("RecetaDataBaseHelper", "Eliminando receta: ${receta.NombrePaciente}, ${receta.fecha}") Log.d("RecetaDataBaseHelper", "Eliminando receta: ${receta.NombrePaciente}, ${receta.fecha}")
val db = writableDatabase val db = writableDatabase

View File

@ -0,0 +1,62 @@
package com.terratenientes.medicalhealth.adapters
import android.content.Context
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.ImageView
import android.widget.TextView
import androidx.recyclerview.widget.RecyclerView
import com.terratenientes.medicalhealth.R
import com.terratenientes.medicalhealth.data.Receta
class RecetaDoctorViewAdapter(private var notes : List<Receta>, context: Context, val cellClickListener: CellClickListener) :
RecyclerView.Adapter<RecetaDoctorViewAdapter.NoteViewHolder>() {
class NoteViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView){
val tituloReceta : TextView = itemView.findViewById(R.id.tv_titulo_receta)
val fechaReceta : TextView = itemView.findViewById(R.id.tv_fecha_receta)
val nombreReceta : TextView = itemView.findViewById(R.id.tv_nombre_paciente)
val btnEliminar: ImageView = itemView.findViewById(R.id.iv_eliminar_receta)
val btnModificar : ImageView = itemView.findViewById(R.id.iv_modificar_receta)
val btnEnviar : ImageView = itemView.findViewById(R.id.iv_correo_receta)
val pesoReceta : TextView = itemView.findViewById(R.id.tv_peso_paciente)
val edadReceta : TextView = itemView.findViewById(R.id.tv_edad_paciente)
val dosisReceta : TextView =itemView.findViewById(R.id.tv_dosis_medicamento)
val duracionReceta : TextView = itemView.findViewById(R.id.tv_duracion_receta)
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): NoteViewHolder {
val view = LayoutInflater.from(parent.context).inflate(R.layout.rc_receta_medico_item, parent, false)
return NoteViewHolder(view)
}
override fun getItemCount(): Int {
return notes.size
}
override fun onBindViewHolder(holder: NoteViewHolder, position: Int) {
val note = notes[position]
holder.tituloReceta.text = note.nombreMedicamento
holder.fechaReceta.text = note.fecha
holder.dosisReceta.text=note.dosis
holder.duracionReceta.text=note.duracion
holder.nombreReceta.text=note.NombrePaciente
holder.pesoReceta.text= note.pesoPaciente.toString()
holder.edadReceta.text=note.edadPaciente.toString()
holder.btnEliminar.setOnClickListener{
cellClickListener.onEliminarClickListener(position)
}
holder.btnModificar.setOnClickListener {
cellClickListener.onModifyClickListener(position)
}
holder.btnEnviar.setOnClickListener{
cellClickListener.onEnviarCorreoClickListener(position)
}
}
fun refreshData( newNotes : List<Receta>){
this.notes=newNotes
notifyDataSetChanged()
}
}

View File

@ -18,8 +18,7 @@ class RecetaViewAdapter(private var notes : List<Receta>, context: Context, val
val fechaReceta : TextView = itemView.findViewById(R.id.tv_fecha_receta) val fechaReceta : TextView = itemView.findViewById(R.id.tv_fecha_receta)
val nombreReceta : TextView = itemView.findViewById(R.id.tv_nombre_paciente) val nombreReceta : TextView = itemView.findViewById(R.id.tv_nombre_paciente)
val btnDescargar : ImageView = itemView.findViewById(R.id.iv_descargar_receta) val btnDescargar : ImageView = itemView.findViewById(R.id.iv_descargar_receta)
val btnEliminar: ImageView = itemView.findViewById(R.id.iv_eliminar_receta) val btnEnviar : ImageView = itemView.findViewById(R.id.iv_correo_receta)
val btnModificar : ImageView = itemView.findViewById(R.id.iv_modificar_receta)
val pesoReceta : TextView = itemView.findViewById(R.id.tv_peso_paciente) val pesoReceta : TextView = itemView.findViewById(R.id.tv_peso_paciente)
val edadReceta : TextView = itemView.findViewById(R.id.tv_edad_paciente) val edadReceta : TextView = itemView.findViewById(R.id.tv_edad_paciente)
val dosisReceta : TextView=itemView.findViewById(R.id.tv_dosis_medicamento) val dosisReceta : TextView=itemView.findViewById(R.id.tv_dosis_medicamento)
@ -48,11 +47,8 @@ class RecetaViewAdapter(private var notes : List<Receta>, context: Context, val
holder.btnDescargar.setOnClickListener{ holder.btnDescargar.setOnClickListener{
cellClickListener.onCellClickListener(position) cellClickListener.onCellClickListener(position)
} }
holder.btnEliminar.setOnClickListener{ holder.btnEnviar.setOnClickListener{
cellClickListener.onEliminarClickListener(position) cellClickListener.onEnviarCorreoClickListener(position)
}
holder.btnModificar.setOnClickListener {
cellClickListener.onModifyClickListener(position)
} }
} }

View File

@ -0,0 +1,9 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="#FF000000"
android:pathData="M17,7L15.59,8.41L18.17,11H8V13H18.17L15.59,15.58L17,17L22,12M4,5H12V3H4C2.9,3 2,3.9 2,5V19C2,20.1 2.9,21 4,21H12V19H4V5Z"/>
</vector>

View File

@ -28,7 +28,7 @@
<androidx.recyclerview.widget.RecyclerView <androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_pacientes" android:id="@+id/rv_pacientes"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="550dp" android:layout_height="wrap_content"
android:layout_marginStart="8dp" android:layout_marginStart="8dp"
android:layout_marginTop="20dp" android:layout_marginTop="20dp"
android:layout_marginEnd="8dp"/> android:layout_marginEnd="8dp"/>

View File

@ -7,14 +7,21 @@
android:layout_height="match_parent" android:layout_height="match_parent"
tools:context=".PacientePrincipalActivity"> tools:context=".PacientePrincipalActivity">
<ImageView
android:id="@+id/iv_logout"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:paddingStart="350dp"
android:src="@drawable/logout"/>
<androidx.recyclerview.widget.RecyclerView <androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_recetas_paciente" android:id="@+id/rv_recetas_paciente"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:scrollbars="vertical" android:scrollbars="vertical"
tools:listitem="@layout/rc_receta_item" android:layout_below="@id/iv_logout"
/> tools:listitem="@layout/rc_receta_item" />
</RelativeLayout> </RelativeLayout>

View File

@ -7,15 +7,27 @@
android:orientation="vertical" android:orientation="vertical"
tools:context="PrincipalActivity"> tools:context="PrincipalActivity">
<TextView <LinearLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="40dp"
android:text="@string/app_name" android:orientation="horizontal">
android:gravity="center" <TextView
android:layout_marginTop="5dp" android:layout_width="350dp"
android:layout_marginBottom="20dp" android:layout_height="wrap_content"
android:textColor="@color/primaryColor" android:text="@string/app_name"
android:textSize="30dp"/> android:paddingStart="50dp"
android:gravity="center"
android:textColor="@color/primaryColor"
android:textSize="30dp"/>
<ImageView
android:id="@+id/iv_logout"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="10dp"
android:src="@drawable/logout"
android:layout_gravity="center_vertical"/>
</LinearLayout>
<ImageView <ImageView
@ -27,7 +39,7 @@
<GridLayout <GridLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="80dp" android:layout_marginTop="30dp"
android:columnCount="1" android:columnCount="1"
android:rowCount="4"> android:rowCount="4">
@ -89,7 +101,7 @@
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:background="@drawable/radius_tv" android:background="@drawable/radius_tv"
android:backgroundTint="@color/primaryColor" android:backgroundTint="@color/primaryColor"
android:layout_marginTop="80dp" android:layout_marginTop="130dp"
android:columnCount="3" android:columnCount="3"
android:rowCount="2"> android:rowCount="2">

View File

@ -0,0 +1,24 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context=".RecetasActivity">
<ImageView
android:id="@+id/iv_agregar_receta"
android:layout_width="45dp"
android:layout_height="35dp"
android:layout_margin="20dp"
android:src="@drawable/plus_circle_outline"
android:layout_gravity="start"/>
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/rv_recetas"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="20dp"/>
</LinearLayout>

View File

@ -42,6 +42,7 @@
android:layout_marginBottom="20dp" android:layout_marginBottom="20dp"
android:background="@drawable/radius_tv" android:background="@drawable/radius_tv"
android:layout_gravity="center_horizontal" android:layout_gravity="center_horizontal"
android:inputType="text"
/> />
@ -56,6 +57,7 @@
android:layout_marginBottom="20dp" android:layout_marginBottom="20dp"
android:background="@drawable/radius_tv" android:background="@drawable/radius_tv"
android:textColorHint="@color/black" android:textColorHint="@color/black"
android:inputType="text"
/> />
<EditText <EditText
@ -69,6 +71,9 @@
android:layout_marginBottom="20dp" android:layout_marginBottom="20dp"
android:background="@drawable/radius_tv" android:background="@drawable/radius_tv"
android:textColorHint="@color/black" android:textColorHint="@color/black"
android:inputType="phone"
android:maxLength="15"
android:digits="0123456789"
/> />
<EditText <EditText
android:layout_gravity="center_horizontal" android:layout_gravity="center_horizontal"
@ -96,6 +101,7 @@
android:background="@drawable/radius_tv" android:background="@drawable/radius_tv"
android:hint="@string/et_contrasena_registrar" android:hint="@string/et_contrasena_registrar"
android:textColorHint="@color/black" android:textColorHint="@color/black"
android:maxLength="12"
/> />
<Button <Button

View File

@ -80,33 +80,21 @@
app:layout_constraintVertical_bias="0.243" /> app:layout_constraintVertical_bias="0.243" />
<ImageView <ImageView
android:id="@+id/iv_modificar_receta" android:id="@+id/iv_correo_receta"
android:layout_width="wrap_content" android:layout_width="14dp"
android:layout_height="wrap_content" android:layout_height="14dp"
android:layout_marginStart="100dp"
android:layout_marginTop="2dp"
android:layout_marginEnd="24dp" android:layout_marginEnd="24dp"
android:src="@drawable/update" android:layout_marginBottom="50dp"
android:background="#3F51B5"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="1.0" app:layout_constraintHorizontal_bias="0.831"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.593" /> app:layout_constraintVertical_bias="0.522"
app:srcCompat="@android:drawable/ic_dialog_email" />
<ImageView
android:id="@+id/iv_eliminar_receta"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="243dp"
android:layout_marginTop="75dp"
android:layout_marginEnd="24dp"
android:layout_marginBottom="10dp"
android:src="@drawable/delete"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="1.0"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.487" />
<TextView <TextView
android:id="@+id/tv_peso_paciente" android:id="@+id/tv_peso_paciente"

View File

@ -0,0 +1,165 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.cardview.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="110dp"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_marginEnd="12dp"
android:layout_marginHorizontal="10dp"
android:layout_marginVertical="10dp"
app:cardCornerRadius="20dp"
app:cardElevation="8dp"
android:layout_marginStart="12dp">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<TextView
android:id="@+id/tv_nombre_paciente"
android:layout_width="117dp"
android:layout_height="15dp"
android:layout_marginStart="14dp"
android:layout_marginTop="20dp"
android:layout_marginEnd="256dp"
android:layout_marginBottom="75dp"
android:hint="Nombre Paciente"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/tv_titulo_receta"
android:layout_width="117dp"
android:layout_height="15dp"
android:layout_marginStart="14dp"
android:layout_marginTop="50dp"
android:layout_marginEnd="256dp"
android:layout_marginBottom="45dp"
android:hint="Titulo de la Receta"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/tv_fecha_receta"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="14dp"
android:layout_marginTop="83dp"
android:layout_marginEnd="255dp"
android:layout_marginBottom="8dp"
android:hint="Fecha de la Receta"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<ImageView
android:id="@+id/iv_correo_receta"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="243dp"
android:layout_marginTop="2dp"
android:layout_marginEnd="24dp"
android:layout_marginBottom="10dp"
app:srcCompat="@android:drawable/ic_dialog_email"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="1.0"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.243" />
<ImageView
android:id="@+id/iv_modificar_receta"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginEnd="24dp"
android:src="@drawable/update"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="1.0"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.581" />
<ImageView
android:id="@+id/iv_eliminar_receta"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="243dp"
android:layout_marginTop="75dp"
android:layout_marginEnd="24dp"
android:layout_marginBottom="10dp"
android:src="@drawable/delete"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="1.0"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.487" />
<TextView
android:id="@+id/tv_peso_paciente"
android:layout_width="50dp"
android:layout_height="wrap_content"
android:layout_marginStart="141dp"
android:layout_marginTop="20dp"
android:layout_marginEnd="196dp"
android:layout_marginBottom="71dp"
android:hint="Peso"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/tv_duracion_receta"
android:layout_width="60dp"
android:layout_height="wrap_content"
android:layout_marginStart="199dp"
android:layout_marginTop="83dp"
android:layout_marginEnd="128dp"
android:layout_marginBottom="8dp"
android:hint="Duración"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/tv_edad_paciente"
android:layout_width="50dp"
android:layout_height="wrap_content"
android:layout_marginStart="141dp"
android:layout_marginTop="50dp"
android:layout_marginEnd="196dp"
android:layout_marginBottom="41dp"
android:hint="Edad"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/tv_dosis_medicamento"
android:layout_width="50dp"
android:layout_height="wrap_content"
android:layout_marginStart="141dp"
android:layout_marginTop="83dp"
android:layout_marginEnd="196dp"
android:layout_marginBottom="8dp"
android:hint="Dosis"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.cardview.widget.CardView>