Compare commits

...

4 Commits

17 changed files with 792 additions and 111 deletions

View File

@ -4,14 +4,25 @@ import com.terratenientes.medicalhealth.adapters.DoctorDataBaseHelper
import com.terratenientes.medicalhealth.data.Paciente
import android.R
import android.content.Intent
import android.os.Build
import android.os.Bundle
import android.util.Log
import android.widget.ArrayAdapter
import android.widget.Toast
import androidx.annotation.RequiresApi
import androidx.appcompat.app.AppCompatActivity
import com.terratenientes.medicalhealth.adapters.HistorialDataBaseHelper
import com.terratenientes.medicalhealth.data.Historial
import com.terratenientes.medicalhealth.databinding.ActivityAgregarPacienteBinding
import java.time.ZoneId
import java.time.ZonedDateTime
import java.time.format.DateTimeFormatter
@RequiresApi(Build.VERSION_CODES.O)
class AgregarActivity : AppCompatActivity() {
private lateinit var dbHistorial: HistorialDataBaseHelper
private lateinit var historial: Historial
private lateinit var binding: ActivityAgregarPacienteBinding
private lateinit var db: DoctorDataBaseHelper
@ -21,14 +32,15 @@ class AgregarActivity : AppCompatActivity() {
val view = binding.root
setContentView(view)
db = DoctorDataBaseHelper(this@AgregarActivity)
dbHistorial = HistorialDataBaseHelper(this@AgregarActivity)
historial = Historial("Doctor", intent.getStringExtra("NombreDoctor"),"Se inicio la actividad alta paciente", obtenerFecha())
añadirHistorial(historial)
val opcionesGenero = arrayOf("Masculino", "Femenino", "Otro")
val adapter = ArrayAdapter(this, R.layout.simple_spinner_item, opcionesGenero)
adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item)
binding.edtxSexo.adapter = adapter
binding.btnConfirmar.setOnClickListener {
//db.crearTablaPacientes()
agregarPaciente()
finish()
}
@ -44,9 +56,32 @@ class AgregarActivity : AppCompatActivity() {
if (nombre.isNotEmpty() && apellidoPaterno.isNotEmpty() && apellidoMaterno.isNotEmpty() && edad != null && sexo.isNotEmpty() && domicilio.isNotEmpty()) {
val paciente = Paciente(0, nombre, apellidoPaterno, apellidoMaterno, edad, sexo, domicilio)
db.agregarPaciente(paciente)
historial.eventoRealizado = "Dio de alta un paciente"
historial.fecha = obtenerFecha()
añadirHistorial(historial)
Toast.makeText(this@AgregarActivity, "Paciente registrado correctamente", Toast.LENGTH_SHORT).show()
} else {
Toast.makeText(this@AgregarActivity, "Por favor ingrese todos los campos", 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

@ -1,65 +1,124 @@
package com.terratenientes.medicalhealth
import com.terratenientes.medicalhealth.adapters.DoctorDataBaseHelper
import com.terratenientes.medicalhealth.data.Doctor
import android.annotation.SuppressLint
import android.content.Intent
import androidx.appcompat.app.AppCompatActivity
import android.os.Build
import android.os.Bundle
import android.util.Log
import android.widget.Toast
import androidx.annotation.RequiresApi
import androidx.appcompat.app.AppCompatActivity
import com.terratenientes.medicalhealth.adapters.DoctorDataBaseHelper
import com.terratenientes.medicalhealth.adapters.HistorialDataBaseHelper
import com.terratenientes.medicalhealth.adapters.RecetaDataBaseHelper
import com.terratenientes.medicalhealth.data.Doctor
import com.terratenientes.medicalhealth.data.Historial
import com.terratenientes.medicalhealth.databinding.ActivityMainBinding
import java.time.LocalDateTime
import java.time.ZoneId
import java.time.ZonedDateTime
import java.time.format.DateTimeFormatter
@RequiresApi(Build.VERSION_CODES.O)
class MainActivity : AppCompatActivity() {
private lateinit var binding: ActivityMainBinding
private lateinit var db: DoctorDataBaseHelper
private lateinit var dbHistorial: HistorialDataBaseHelper
lateinit var dbRecetas: RecetaDataBaseHelper
private lateinit var historial: Historial
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding=ActivityMainBinding.inflate(layoutInflater)
val view=binding.root
binding = ActivityMainBinding.inflate(layoutInflater)
val view = binding.root
setContentView(view)
historial = Historial(null, null, "Se abrio la aplicacion", obtenerFecha())
db = DoctorDataBaseHelper(this@MainActivity)
dbHistorial = HistorialDataBaseHelper(this@MainActivity)
dbRecetas = RecetaDataBaseHelper(this@MainActivity)
añadirHistorial(historial)
//dbRecetas.crearTablaReceta()
//db.createTable()
//dbHistorial.crearTablaHistorial()
binding.btnIniciarSesion.setOnClickListener {
var res=db.validarDatos(binding.tvUsuario.text.toString(),binding.tvContrasena.text.toString())
var resPaciente = db.validarDatosPaciente(binding.tvUsuario.text.toString(), binding.tvContrasena.text.toString())
if(res==true){
Toast.makeText(this@MainActivity,"VALIDADO",Toast.LENGTH_LONG).show()
historial.fecha = obtenerFecha()
var res = db.validarDatos(
binding.tvUsuario.text.toString(),
binding.tvContrasena.text.toString()
)
var resPaciente = db.validarDatosPaciente(
binding.tvUsuario.text.toString(),
binding.tvContrasena.text.toString()
)
if (res == true) {
historial.eventoRealizado = "Inicio Sesion Doctor"
historial.tipoUsuario = "Doctor"
añadirHistorial(historial)
Toast.makeText(this@MainActivity, "VALIDADO", Toast.LENGTH_LONG).show()
val intent = Intent(this@MainActivity, PrincipalActivity::class.java)
//intent.putExtra("IDPaciente",binding.tvUsuario.text.toString())
intent.putExtra("Cedula", binding.tvUsuario.text.toString())
startActivity(intent)
}else if(resPaciente==true){
Toast.makeText(this@MainActivity,"VALIDADO",Toast.LENGTH_LONG).show()
} else if (resPaciente == true) {
historial.tipoUsuario = "Paciente"
historial.eventoRealizado = "Inicio Sesion Paciente"
añadirHistorial(historial)
Toast.makeText(this@MainActivity, "VALIDADO", Toast.LENGTH_LONG).show()
val intent = Intent(this@MainActivity, PacientePrincipalActivity::class.java)
intent.putExtra("IDPaciente",binding.tvContrasena.text.toString())
intent.putExtra("IDPaciente", binding.tvContrasena.text.toString())
intent.putExtra("NombrePaciente", binding.tvContrasena.text.toString())
startActivity(intent)
}else{
Toast.makeText(this@MainActivity," NO VALIDADO",Toast.LENGTH_LONG).show()
} else {
Toast.makeText(this@MainActivity, " NO VALIDADO", Toast.LENGTH_LONG).show()
}
}
binding.tvRegistrarme.setOnClickListener{
binding.tvRegistrarme.setOnClickListener {
historial.eventoRealizado = "Acciono el botón para la pantalla de registro"
historial.fecha = obtenerFecha()
añadirHistorial(historial)
val intent = Intent(this@MainActivity, RegistrarDActivity::class.java)
startActivity(intent)
}
}
@SuppressLint("SuspiciousIndentation")
private fun cargarDatos(){
val doctor= Doctor("1236","Sebastian","Cordoba","229330123",1)
db.agregarDoctores(doctor,"prueba")
Toast.makeText(this@MainActivity,"DATOS DEL DOCTOR AGREGADOS",Toast.LENGTH_LONG).show()
private fun cargarDatos() {
val doctor = Doctor("1236", "Sebastian", "Cordoba", "229330123", 1)
db.agregarDoctores(doctor, "prueba")
Toast.makeText(this@MainActivity, "DATOS DEL DOCTOR AGREGADOS", Toast.LENGTH_LONG).show()
}
private fun validaDatos(){
var usuario=binding.tvUsuario.text.toString()
var contrasena=binding.tvContrasena.text.toString()
var res=db.validarDatos(usuario,contrasena)
if(res==true){
Toast.makeText(this@MainActivity,"VALIDADO",Toast.LENGTH_LONG).show()
}else{
Toast.makeText(this@MainActivity," NO VALIDADO",Toast.LENGTH_LONG).show()
private fun validaDatos() {
var usuario = binding.tvUsuario.text.toString()
var contrasena = binding.tvContrasena.text.toString()
var res = db.validarDatos(usuario, contrasena)
if (res == true) {
Toast.makeText(this@MainActivity, "VALIDADO", Toast.LENGTH_LONG).show()
} else {
Toast.makeText(this@MainActivity, " NO VALIDADO", Toast.LENGTH_LONG).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

@ -4,16 +4,27 @@ import com.terratenientes.medicalhealth.adapters.DoctorDataBaseHelper
import com.terratenientes.medicalhealth.data.Paciente
import com.terratenientes.medicalhealth.reports.ConsultarPacientesActivity
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 com.terratenientes.medicalhealth.adapters.HistorialDataBaseHelper
import com.terratenientes.medicalhealth.data.Historial
import com.terratenientes.medicalhealth.databinding.ActivityModificarBinding
import java.time.ZoneId
import java.time.ZonedDateTime
import java.time.format.DateTimeFormatter
@RequiresApi(Build.VERSION_CODES.O)
class ModificarActivity : AppCompatActivity() {
lateinit var binding : ActivityModificarBinding
private lateinit var paciente : Paciente
private lateinit var db: DoctorDataBaseHelper
private lateinit var dbHistorial: HistorialDataBaseHelper
private lateinit var historial: Historial
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
@ -21,6 +32,9 @@ class ModificarActivity : AppCompatActivity() {
val view = binding.root
setContentView(view)
db = DoctorDataBaseHelper(this@ModificarActivity)
dbHistorial = HistorialDataBaseHelper(this@ModificarActivity)
historial = Historial("Doctor", intent.getStringExtra("NombreDoctor"),"Se inicio la actividad modificar paciente", obtenerFecha())
añadirHistorial(historial)
paciente = Paciente(intent.getIntExtra("Id",2),intent.getStringExtra("Nombre Paciente").toString(),intent.getStringExtra("Apellido Paterno").toString(), intent.getStringExtra("Apellido Materno").toString(), intent.getIntExtra("Edad", 20), intent.getStringExtra("Sexo").toString(), intent.getStringExtra("Domicilio").toString())
llenarCampos()
binding.btnModificar.setOnClickListener {
@ -34,6 +48,9 @@ class ModificarActivity : AppCompatActivity() {
paciente.apellidoMaterno = binding.etApellidoMaterno.text.toString()
paciente.domicilio = binding.etDomicilio.text.toString()
db.modificarPaciente(paciente)
historial.eventoRealizado = "Se modifico la informacion de paciente ${paciente.nombre}"
historial.fecha = obtenerFecha()
añadirHistorial(historial)
finish()
Toast.makeText(this@ModificarActivity, "Información Actualizada UwU", Toast.LENGTH_LONG).show()
}
@ -47,4 +64,24 @@ class ModificarActivity : AppCompatActivity() {
binding.tvSexo.setText("Sexo: ${paciente.sexo}")
}
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

@ -1,22 +1,35 @@
package com.terratenientes.medicalhealth
import android.os.Build
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.util.Log
import androidx.annotation.RequiresApi
import com.terratenientes.medicalhealth.adapters.HistorialDataBaseHelper
import com.terratenientes.medicalhealth.adapters.RecetaDataBaseHelper
import com.terratenientes.medicalhealth.data.Historial
import com.terratenientes.medicalhealth.data.Receta
import com.terratenientes.medicalhealth.databinding.ActivityModificarRecetaBinding
import java.time.ZoneId
import java.time.ZonedDateTime
import java.time.format.DateTimeFormatter
@RequiresApi(Build.VERSION_CODES.O)
class ModificarRecetaActivity : AppCompatActivity() {
lateinit var binding : ActivityModificarRecetaBinding
lateinit var receta : Receta
lateinit var db : RecetaDataBaseHelper
lateinit var dbHistorial: HistorialDataBaseHelper
lateinit var historial: Historial
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityModificarRecetaBinding.inflate(layoutInflater)
val view = binding.root
setContentView(view)
db = RecetaDataBaseHelper(this@ModificarRecetaActivity)
dbHistorial = HistorialDataBaseHelper(this@ModificarRecetaActivity)
historial = Historial("Paciente", intent.getStringExtra("NombrePaciente").toString(), "Se inicio la actividad modificar receta del paciente", obtenerFecha())
añadirHistorial(historial)
receta = Receta(intent.getStringExtra("NombrePaciente").toString(),intent.getStringExtra("EdadPaciente").toString().toInt(),intent.getStringExtra("PesoPaciente").toString().toDouble(),intent.getStringExtra("NombreMedicamento").toString(),intent.getStringExtra("Fecha").toString(),intent.getStringExtra("Dosis").toString(), intent.getStringExtra("Duracion").toString())
llenarCampos(receta)
binding.btnModificarReceta.setOnClickListener {
@ -34,6 +47,9 @@ class ModificarRecetaActivity : AppCompatActivity() {
receta.duracion = binding.etDuracion.text.toString()
db.modificarReceta(receta)
Log.i("Info Actualizada", receta.toString())
historial.eventoRealizado = "Se modificó una receta"
historial.fecha = obtenerFecha()
añadirHistorial(historial)
finish()
}
@ -46,4 +62,24 @@ class ModificarRecetaActivity : AppCompatActivity() {
binding.etDosisMedicamento.setText(receta.dosis)
binding.etDuracion.setText(receta.duracion)
}
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

@ -1,25 +1,47 @@
package com.terratenientes.medicalhealth
import android.Manifest
import android.annotation.SuppressLint
import android.content.Context
import android.content.Intent
import android.content.pm.PackageManager
import android.os.Build
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.os.Environment
import android.util.Log
import android.widget.Toast
import androidx.annotation.RequiresApi
import androidx.core.app.ActivityCompat
import androidx.core.content.ContextCompat
import androidx.recyclerview.widget.LinearLayoutManager
import com.terratenientes.medicalhealth.adapters.CellClickListener
import com.terratenientes.medicalhealth.adapters.DoctorDataBaseHelper
import com.terratenientes.medicalhealth.adapters.HistorialDataBaseHelper
import com.terratenientes.medicalhealth.adapters.PacienteAdapter
import com.terratenientes.medicalhealth.adapters.PacienteViewAdapter
import com.terratenientes.medicalhealth.adapters.RecetaDataBaseHelper
import com.terratenientes.medicalhealth.adapters.RecetaViewAdapter
import com.terratenientes.medicalhealth.data.Historial
import com.terratenientes.medicalhealth.data.Paciente
import com.terratenientes.medicalhealth.data.Receta
import com.terratenientes.medicalhealth.databinding.ActivityPacienteBinding
import java.io.File
import java.io.FileWriter
import java.time.ZoneId
import java.time.ZonedDateTime
import java.time.format.DateTimeFormatter
@RequiresApi(Build.VERSION_CODES.O)
class PacienteActivity : AppCompatActivity(), CellClickListener {
lateinit var binding : ActivityPacienteBinding
private var idPaciente : String =""
private lateinit var db: DoctorDataBaseHelper
private lateinit var pacientesList: MutableList<Paciente>
private lateinit var dbHistorial: HistorialDataBaseHelper
private lateinit var historial: Historial
private lateinit var recycleAdapter : PacienteViewAdapter
private lateinit var pacientes : List<Paciente>
lateinit var nombreDoctor: String
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityPacienteBinding.inflate(layoutInflater)
@ -30,10 +52,26 @@ class PacienteActivity : AppCompatActivity(), CellClickListener {
recycleAdapter = PacienteViewAdapter(pacientes, this@PacienteActivity, this@PacienteActivity)
binding.rvPacientes.layoutManager = LinearLayoutManager(this)
binding.rvPacientes.adapter = recycleAdapter
dbHistorial = HistorialDataBaseHelper(this@PacienteActivity)
historial = Historial("Doctor", intent.getStringExtra("NombreDoctor").toString(),"Se inicio la actividad de pacientes", obtenerFecha())
añadirHistorial(historial)
cargarListaPacientes()
nombreDoctor = intent.getStringExtra("NombreDoctor").toString()
Log.i("Pacientes", pacientes.toString())
binding.ivAgregarPaciente.setOnClickListener {
val intent = Intent(this@PacienteActivity, AgregarActivity::class.java)
intent.putExtra("NombreDoctor", nombreDoctor)
startActivity(intent)
historial.eventoRealizado = "Se acciono el boton para inciar la actividad alta paciente"
historial.fecha = obtenerFecha()
añadirHistorial(historial)
}
binding.btnDescargarCsv.setOnClickListener {
historial.eventoRealizado = "Se acciono el botón para descargar la informacion de los pacientes"
historial.fecha = obtenerFecha()
añadirHistorial(historial)
exportarCSV(this@PacienteActivity, pacientesList)
}
}
@ -48,6 +86,9 @@ class PacienteActivity : AppCompatActivity(), CellClickListener {
override fun onEliminarClickListener(position: Int) {
val paciente = pacientes[position]
Log.i("Paciente Elim", paciente.toString())
historial.eventoRealizado = "Se acciono el boton para eliminar al usuario ${paciente.id}"
historial.fecha = obtenerFecha()
añadirHistorial(historial)
db.eliminarPaciente(paciente.id)
recycleAdapter.refreshData(db.obtenerPacientes())
}
@ -62,6 +103,91 @@ class PacienteActivity : AppCompatActivity(), CellClickListener {
intent.putExtra("Domicilio", paciente.domicilio)
intent.putExtra("Edad", paciente.edad)
intent.putExtra("Sexo", paciente.sexo)
intent.putExtra("NombreDoctor",nombreDoctor)
startActivity(intent)
historial.eventoRealizado = "Se acciono el boton para iniciar la actividad modificar paciente con los datos del paciente ${paciente.nombre}"
historial.fecha = obtenerFecha()
añadirHistorial(historial)
}
fun exportarCSV(context: Context, pacienteList: MutableList<Paciente>) {
//Pedir Permisos
ActivityCompat.requestPermissions(this@PacienteActivity, arrayOf(Manifest.permission.WRITE_EXTERNAL_STORAGE,Manifest.permission.READ_EXTERNAL_STORAGE),200)
// Verificar si se tienen permisos de escritura externa
if (ContextCompat.checkSelfPermission(context, Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED) {
try {
// Crear el directorio donde se guardará el archivo CSV
val directorio = File(Environment.getExternalStorageDirectory(), "MiApp")
if (!directorio.exists()) {
directorio.mkdirs()
}
// Crear el archivo CSV
val archivoCSV = File(directorio, "Paciente.csv")
archivoCSV.createNewFile()
// Escribir los datos en el archivo CSV
val writer = FileWriter(archivoCSV)
writer.append("ID, Nombre, Apellido Paterno, Apellido Materno, Edad, Sexo, Domicilio\n")
for (paciente in pacienteList) {
writer.append("${paciente.id},${paciente.nombre},${paciente.apellidoPaterno},${paciente.apellidoMaterno},${paciente.edad},${paciente.sexo},${paciente.domicilio}\n")
}
writer.flush()
writer.close()
Toast.makeText(this@PacienteActivity,getString(R.string.res_csv), Toast.LENGTH_LONG).show()
historial.eventoRealizado = "Se descargo la información de los pacientes"
historial.fecha = obtenerFecha()
añadirHistorial(historial)
} catch (e: Exception) {
e.printStackTrace()
}
}else{
Toast.makeText(this@PacienteActivity,getString(R.string.err_permisos_storage),
Toast.LENGTH_LONG).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)
}
private fun cargarListaPacientes() {
pacientesList = obtenerPacientes()
}
@SuppressLint("Range")
private fun obtenerPacientes(): MutableList<Paciente> {
val pacientes = mutableListOf<Paciente>()
val db = db.readableDatabase
val cursor = db.rawQuery("SELECT * FROM ${DoctorDataBaseHelper.TABLE_PACIENTES}", null)
while (cursor.moveToNext()) {
val id = cursor.getInt(cursor.getColumnIndex(DoctorDataBaseHelper.COLUMN_ID_PACIENTE))
val nombre = cursor.getString(cursor.getColumnIndex(DoctorDataBaseHelper.COLUMN_NOMBRE_PACIENTE))
val apellidoPaterno = cursor.getString(cursor.getColumnIndex(DoctorDataBaseHelper.COLUMN_APELLIDO_PATERNO_PACIENTE))
val apellidoMaterno = cursor.getString(cursor.getColumnIndex(DoctorDataBaseHelper.COLUMN_APELLIDO_MATERNO_PACIENTE))
val edad = cursor.getInt(cursor.getColumnIndex(DoctorDataBaseHelper.COLUMN_EDAD))
val sexo = cursor.getString(cursor.getColumnIndex(DoctorDataBaseHelper.COLUMN_SEXO))
val domicilio = cursor.getString(cursor.getColumnIndex(DoctorDataBaseHelper.COLUMN_DOMICILIO))
val paciente = Paciente(id, nombre, apellidoPaterno, apellidoMaterno, edad, sexo, domicilio)
pacientes.add(paciente)
}
cursor.close()
return pacientes
}
}

View File

@ -9,33 +9,48 @@ import android.content.Intent
import android.content.pm.PackageManager
import android.graphics.Typeface
import android.graphics.pdf.PdfDocument
import android.os.Build
import android.os.Bundle
import android.os.Environment
import android.text.TextPaint
import android.util.Log
import android.widget.Toast
import androidx.annotation.RequiresApi
import androidx.appcompat.app.AppCompatActivity
import androidx.core.app.ActivityCompat
import androidx.core.content.ContextCompat
import androidx.recyclerview.widget.LinearLayoutManager
import com.terratenientes.medicalhealth.adapters.HistorialDataBaseHelper
import com.terratenientes.medicalhealth.data.Historial
import com.terratenientes.medicalhealth.databinding.ActivityPacientePrincipalBinding
import java.io.File
import java.io.FileOutputStream
import java.time.ZoneId
import java.time.ZonedDateTime
import java.time.format.DateTimeFormatter
@RequiresApi(Build.VERSION_CODES.O)
class PacientePrincipalActivity : AppCompatActivity(), CellClickListener {
private lateinit var binding: ActivityPacientePrincipalBinding
private var idPaciente : String =""
private lateinit var db: RecetaDataBaseHelper
private lateinit var recycleAdapter : RecetaViewAdapter
private lateinit var recetas : List<Receta>
lateinit var dbHistorial: HistorialDataBaseHelper
lateinit var historial: Historial
lateinit var nombrePaciente: String
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityPacientePrincipalBinding.inflate(layoutInflater)
val view = binding.root
setContentView(view)
idPaciente= intent.getStringExtra("IDPaciente")!!
db= RecetaDataBaseHelper(this)
db= RecetaDataBaseHelper(this@PacientePrincipalActivity)
dbHistorial = HistorialDataBaseHelper(this@PacientePrincipalActivity)
historial = Historial("Paciente", intent.getStringExtra("NombrePaciente").toString(), "Se inicio la actividad menu principal del paciente", obtenerFecha())
añadirHistorial(historial)
recetas=db.obtenerRecetasPaciente(idPaciente)
nombrePaciente = intent.getStringExtra("NombrePaciente").toString()
recycleAdapter = RecetaViewAdapter(db.obtenerRecetasPaciente(idPaciente), this, this@PacientePrincipalActivity)
@ -71,6 +86,9 @@ class PacientePrincipalActivity : AppCompatActivity(), CellClickListener {
// Toast.makeText(this, "Peso : ${datosPaciente[position].pesoPaciente}+ edad: ${datosPaciente[position].edadPaciente} ", Toast.LENGTH_LONG).show()
//Toast.makeText(this@PacientePrincipalActivity, "PERMISOS CONCEDIDOS", Toast.LENGTH_SHORT).show()
generarPDF(nombrePaciente, descripcionReceta, nombreMeciamento)
historial.eventoRealizado = "Se descargo la receta en formato pdf"
historial.fecha = obtenerFecha()
añadirHistorial(historial)
}else{
pedirPermisosPDF()
}
@ -79,13 +97,18 @@ class PacientePrincipalActivity : AppCompatActivity(), CellClickListener {
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.obtenerRecetasPaciente(idPaciente))
Toast.makeText(this, "Receta eliminada correctamente", Toast.LENGTH_SHORT).show()
}
override fun onModifyClickListener(position: Int) {
val receta = recetas[position]
Log.i("Prueba Modificar", receta.toString())
historial.eventoRealizado = "Se acciono el boton de iniciar la actividad de modificar receta"
historial.fecha = obtenerFecha()
añadirHistorial(historial)
val intent = Intent(this@PacientePrincipalActivity, ModificarRecetaActivity::class.java)
intent.putExtra("NombrePaciente", receta.NombrePaciente)
intent.putExtra("EdadPaciente", receta.edadPaciente.toString())
@ -94,6 +117,7 @@ class PacientePrincipalActivity : AppCompatActivity(), CellClickListener {
intent.putExtra("Fecha", receta.fecha)
intent.putExtra("Dosis", receta.dosis)
intent.putExtra("Duracion", receta.duracion)
intent.putExtra("NombrePaciente", nombrePaciente)
startActivity(intent)
}
@ -170,5 +194,25 @@ class PacientePrincipalActivity : AppCompatActivity(), CellClickListener {
}
}
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

@ -1,33 +1,73 @@
package com.terratenientes.medicalhealth
import android.Manifest
import android.annotation.SuppressLint
import android.content.Context
import android.content.Intent
import android.content.pm.PackageManager
import android.os.Build
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.os.Environment
import android.util.Log
import android.widget.Toast
import androidx.annotation.RequiresApi
import androidx.core.app.ActivityCompat
import androidx.core.content.ContextCompat
import com.terratenientes.medicalhealth.adapters.DoctorDataBaseHelper
import com.terratenientes.medicalhealth.adapters.HistorialDataBaseHelper
import com.terratenientes.medicalhealth.data.Doctor
import com.terratenientes.medicalhealth.data.Historial
import com.terratenientes.medicalhealth.databinding.ActivityPrincipalBinding
import com.terratenientes.medicalhealth.reports.ConsultarPacientesActivity
import java.io.File
import java.io.FileWriter
import java.time.ZoneId
import java.time.ZonedDateTime
import java.time.format.DateTimeFormatter
@RequiresApi(Build.VERSION_CODES.O)
class PrincipalActivity : AppCompatActivity() {
lateinit var binding : ActivityPrincipalBinding
lateinit var db : DoctorDataBaseHelper
private lateinit var dbHistorial: HistorialDataBaseHelper
private lateinit var historialList: MutableList<Historial>
private lateinit var historial: Historial
lateinit var nombreDoctor : String
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityPrincipalBinding.inflate(layoutInflater)
val view = binding.root
setContentView(view)
db = DoctorDataBaseHelper(this@PrincipalActivity)
dbHistorial = HistorialDataBaseHelper(this@PrincipalActivity)
Log.i("Datos Doctor", intent.getStringExtra("Cedula").toString())
historial = Historial("Doctor", null,"Se inicio la actividad de menu principal", obtenerFecha())
datosDoctor(intent.getStringExtra("Cedula").toString())
añadirHistorial(historial)
binding.ivPacientes.setOnClickListener {
val intent = Intent(this@PrincipalActivity, PacienteActivity::class.java)
intent.putExtra("NombreDoctor", nombreDoctor)
startActivity(intent)
historial.eventoRealizado = "Se presiono el boton para iniciar la actividad de pacientes"
historial.fecha = obtenerFecha()
añadirHistorial(historial)
}
binding.ivRecetas.setOnClickListener {
val intent = Intent(this@PrincipalActivity, RecetaActivity::class.java)
intent.putExtra("NombreDoctor", nombreDoctor)
startActivity(intent)
historial.eventoRealizado = "Se presiono el boton para iniciar la actividad de recetas"
historial.fecha = obtenerFecha()
añadirHistorial(historial)
}
binding.ivHistorial.setOnClickListener {
historial.eventoRealizado = "Se presiono el boton para descargar el historial"
historial.fecha = obtenerFecha()
añadirHistorial(historial)
cargarHistorial()
exportarCSV(this@PrincipalActivity, historialList)
}
}
@ -40,5 +80,87 @@ class PrincipalActivity : AppCompatActivity() {
binding.tvTelefonoDoctor.setText("Telefono: ${doctor.Telefono}")
binding.tvCedulaDoctor.setText("Cédula: ${doctor.Cedula}")
binding.tvConsultorioDoctor.setText("Consultorio: ${doctor.Consultorio}")
historial.nombreUsuario = doctor.Nombre
nombreDoctor = doctor.Nombre
}
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)
}
fun exportarCSV(context: Context, historialList: MutableList<Historial>) {
//Pedir Permisos
ActivityCompat.requestPermissions(this@PrincipalActivity, arrayOf(
Manifest.permission.WRITE_EXTERNAL_STORAGE,
Manifest.permission.READ_EXTERNAL_STORAGE),200)
// Verificar si se tienen permisos de escritura externa
if (ContextCompat.checkSelfPermission(context, Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED) {
try {
// Crear el directorio donde se guardará el archivo CSV
val directorio = File(Environment.getExternalStorageDirectory(), "MiApp")
if (!directorio.exists()) {
directorio.mkdirs()
}
// Crear el archivo CSV
val archivoCSV = File(directorio, "Historial.csv")
archivoCSV.createNewFile()
// Escribir los datos en el archivo CSV
val writer = FileWriter(archivoCSV)
writer.append("Tipo de Usuario, Usuario, Evento Realizado, Fecha\n")
for (historial in historialList) {
writer.append("${historial.tipoUsuario},${historial.nombreUsuario},${historial.eventoRealizado},${historial.fecha}\n")
}
writer.flush()
writer.close()
Toast.makeText(this@PrincipalActivity,getString(R.string.res_csv), Toast.LENGTH_LONG).show()
historial.eventoRealizado = "Se descargo el historial de la app"
historial.fecha = obtenerFecha()
añadirHistorial(historial)
} catch (e: Exception) {
e.printStackTrace()
}
}else{
Toast.makeText(this@PrincipalActivity,getString(R.string.err_permisos_storage),
Toast.LENGTH_LONG).show()
}
}
private fun cargarHistorial() {
historialList = obtenerHistorial()
}
@SuppressLint("Range")
private fun obtenerHistorial(): MutableList<Historial> {
val historial = mutableListOf<Historial>()
val db = dbHistorial.readableDatabase
val cursor = db.rawQuery("SELECT * FROM ${HistorialDataBaseHelper.TABLE_NAME}", null)
while (cursor.moveToNext()) {
val tipoUsuario = cursor.getString(cursor.getColumnIndex(HistorialDataBaseHelper.COLUMN_TIPO_USUARIO))
val usuario = cursor.getString(cursor.getColumnIndex(HistorialDataBaseHelper.COLUMN_NOMBRE_USUARIO))
val evento = cursor.getString(cursor.getColumnIndex(HistorialDataBaseHelper.COLUMN_EVENTO))
val fecha = cursor.getString(cursor.getColumnIndex(HistorialDataBaseHelper.COLUMN_FECHA))
val hist = Historial(tipoUsuario, usuario,evento,fecha)
historial.add(hist)
}
cursor.close()
return historial
}
}

View File

@ -4,20 +4,33 @@ import com.terratenientes.medicalhealth.adapters.RecetaDataBaseHelper
import com.terratenientes.medicalhealth.adapters.DoctorDataBaseHelper
import com.terratenientes.medicalhealth.data.Receta
import android.annotation.SuppressLint
import android.os.Build
import android.os.Bundle
import android.util.Log
import android.view.View
import android.widget.AdapterView
import android.widget.AdapterView.OnItemSelectedListener
import android.widget.ArrayAdapter
import android.widget.Toast
import androidx.activity.enableEdgeToEdge
import androidx.annotation.RequiresApi
import androidx.appcompat.app.AppCompatActivity
import com.terratenientes.medicalhealth.adapters.HistorialDataBaseHelper
import com.terratenientes.medicalhealth.data.Historial
import com.terratenientes.medicalhealth.databinding.ActivityRecetaBinding
import com.terratenientes.medicalhealth.utilidad.DatePickerFragment
import java.time.ZoneId
import java.time.ZonedDateTime
import java.time.format.DateTimeFormatter
import java.util.Date
@RequiresApi(Build.VERSION_CODES.O)
class RecetaActivity : AppCompatActivity(), OnItemSelectedListener {
private lateinit var binding : ActivityRecetaBinding
private lateinit var db : RecetaDataBaseHelper
private lateinit var dbPaciente : DoctorDataBaseHelper
private lateinit var dbHistorial: HistorialDataBaseHelper
private lateinit var historial: Historial
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
@ -25,14 +38,22 @@ class RecetaActivity : AppCompatActivity(), OnItemSelectedListener {
val view = binding.root
enableEdgeToEdge()
db= RecetaDataBaseHelper(this@RecetaActivity)
dbHistorial = HistorialDataBaseHelper(this@RecetaActivity)
dbPaciente = DoctorDataBaseHelper(this@RecetaActivity)
setContentView(view)
//db.crearTablaReceta()
cargarSpinnerPacientes()
historial = Historial("Doctor", intent.getStringExtra("NombreDoctor"),"Se inicio la actividad de añadir receta", obtenerFecha())
añadirHistorial(historial)
binding.spNombrePaciente.onItemSelectedListener=this
binding.btnAgregarReceta.setOnClickListener {
agregarReceta()
}
binding.tvDatepicker.setOnClickListener{
historial.eventoRealizado = "Se dio click en el calendario"
historial.fecha = obtenerFecha()
showPickerDialog()
}
}
@SuppressLint("Range")
private fun obtenerNombrePacientes() : ArrayList<String>{
@ -57,12 +78,15 @@ class RecetaActivity : AppCompatActivity(), OnItemSelectedListener {
val edadPaciente = (binding.etEdadPaciente.text.toString()).toInt()
val pesoPaciente = (binding.etPesoPaciente.text.toString()).toDouble()
val medicamento= binding.etRecetaMedicamento.text.toString()
val fecha=binding.etFecha.text.toString()
val fecha=binding.tvFecha.text.toString()
val dosis = binding.etDosisMedicamento.text.toString()
val duracion= binding.etDuracion.text.toString()
val receta = Receta(nombrePaciente,edadPaciente,pesoPaciente,medicamento,fecha,dosis,duracion)
db.agregarReceta(receta)
historial.eventoRealizado = "Añadio una receta al paciente $nombrePaciente"
historial.fecha = obtenerFecha()
Toast.makeText(this@RecetaActivity , "RECETA AGREGADA CORRECTAMENTE", Toast.LENGTH_LONG).show()
finish()
}
override fun onItemSelected(p0: AdapterView<*>?, p1: View?, p2: Int, p3: Long) {
@ -74,4 +98,33 @@ class RecetaActivity : AppCompatActivity(), OnItemSelectedListener {
override fun onNothingSelected(p0: AdapterView<*>?) {
}
private fun showPickerDialog() {
val datePicker = DatePickerFragment{day, month, year -> obtenerFechaSeleccionada(day, month, year)}
datePicker.show(supportFragmentManager,"datePicker")
}
private fun obtenerFechaSeleccionada (day: Int, month: Int, year: Int) {
binding.tvFecha.text = "$day/$month/$year"
}
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

@ -1,20 +1,34 @@
package com.terratenientes.medicalhealth
import android.os.Build
import com.terratenientes.medicalhealth.adapters.DoctorDataBaseHelper
import com.terratenientes.medicalhealth.data.Doctor
import android.os.Bundle
import android.util.Log
import android.widget.Toast
import androidx.annotation.RequiresApi
import androidx.appcompat.app.AppCompatActivity
import com.terratenientes.medicalhealth.adapters.HistorialDataBaseHelper
import com.terratenientes.medicalhealth.data.Historial
import com.terratenientes.medicalhealth.databinding.ActivityRegistrarDactivityBinding
import java.time.ZoneId
import java.time.ZonedDateTime
import java.time.format.DateTimeFormatter
@RequiresApi(Build.VERSION_CODES.O)
class RegistrarDActivity : AppCompatActivity() {
private lateinit var binding : ActivityRegistrarDactivityBinding
private lateinit var db : DoctorDataBaseHelper
private lateinit var dbHistorial: HistorialDataBaseHelper
private lateinit var historial: Historial
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityRegistrarDactivityBinding.inflate(layoutInflater)
val view = binding.root
setContentView(view)
dbHistorial = HistorialDataBaseHelper(this@RegistrarDActivity)
historial = Historial(null, null, "Se abrio la actividad de registro", obtenerFecha())
añadirHistorial(historial)
db= DoctorDataBaseHelper(this@RegistrarDActivity)
binding.btnRegistrar.setOnClickListener {
registrarUsuario()
@ -30,6 +44,31 @@ class RegistrarDActivity : AppCompatActivity() {
val usuario= Doctor(cedula,nombre,apellido,telefono,domicilio.toInt())
db.agregarDoctores(usuario,contrasena)
Toast.makeText(this@RegistrarDActivity,"USUARIO AGREGADO",Toast.LENGTH_LONG).show()
historial.eventoRealizado = "Se registraron los datos de un doctor"
historial.fecha = obtenerFecha()
historial.tipoUsuario = "Doctor"
historial.nombreUsuario = nombre
añadirHistorial(historial)
finish()
}
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

@ -0,0 +1,49 @@
package com.terratenientes.medicalhealth.adapters
import android.content.Context
import android.database.sqlite.SQLiteDatabase
import android.database.sqlite.SQLiteOpenHelper
import androidx.core.content.contentValuesOf
import com.terratenientes.medicalhealth.data.Historial
class HistorialDataBaseHelper (context: Context) : SQLiteOpenHelper(context, DATABAENAME, null, DATABASEVERSION){
companion object{
private val DATABAENAME = "MedicalHealth"
private val DATABASEVERSION=1
//PRIMERO VA EL NOMBRE DE LA TABLA
val TABLE_NAME = "Historial"
//LUEGO VAN LAS COLUMNAS DE ESA TABLA
val COLUMN_TIPO_USUARIO = "TipoUsuario"
val COLUMN_NOMBRE_USUARIO = "NombreUsuario"
val COLUMN_EVENTO = "Evento"
val COLUMN_FECHA = "Fecha"
}
override fun onCreate(db: SQLiteDatabase?) {
val crearTabla="CREATE TABLE ${TABLE_NAME} (${COLUMN_TIPO_USUARIO} VARCHAR(30), ${COLUMN_NOMBRE_USUARIO} VARCHAR(30), ${COLUMN_EVENTO} VARCHAR(255), ${COLUMN_FECHA} VARCHAR(70))"
db?.execSQL(crearTabla)
}
override fun onUpgrade(db: SQLiteDatabase?, oldVersion: Int, newVersion: Int) {
val dropTableReceta="DROP TABLE IF EXISTS ${TABLE_NAME}"
db?.execSQL(dropTableReceta)
}
fun crearTablaHistorial(){
val db=writableDatabase
val crearTabla="CREATE TABLE ${TABLE_NAME} (${COLUMN_TIPO_USUARIO} VARCHAR(30), ${COLUMN_NOMBRE_USUARIO} VARCHAR(30), ${COLUMN_EVENTO} VARCHAR(255), ${COLUMN_FECHA} VARCHAR(70))"
db?.execSQL(crearTabla)
}
fun agregarInformacin (historial: Historial) : Long {
val db = writableDatabase
val values = contentValuesOf().apply {
put(COLUMN_TIPO_USUARIO, historial.tipoUsuario)
put(COLUMN_NOMBRE_USUARIO, historial.nombreUsuario)
put(COLUMN_EVENTO, historial.eventoRealizado)
put(COLUMN_FECHA, historial.fecha)
}
val respuestaInsert = db.insert(TABLE_NAME, null, values)
db.close()
return respuestaInsert
}
}

View File

@ -21,6 +21,7 @@ class PacienteViewAdapter (private var notes : List<Paciente>, context: Context,
val tv_domicilio : TextView = itemView.findViewById(R.id.tv_domicilio)
val ivModificar : ImageView = itemView.findViewById(R.id.iv_modificar_paciente)
val ivEliminar : ImageView = itemView.findViewById(R.id.iv_eliminar_paciente)
val tvId: TextView = itemView.findViewById(R.id.tv_id_paciente)
}
@ -36,12 +37,13 @@ class PacienteViewAdapter (private var notes : List<Paciente>, context: Context,
override fun onBindViewHolder(holder: NoteViewHolder, position: Int) {
val note = notes[position]
holder.tvNombre.text = note.nombre
holder.tvApellidoPaterno.text = note.apellidoPaterno
holder.tvApellidoMaterno.text = note.apellidoMaterno
holder.tv_edad.text = note.edad.toString()
holder.tv_sexo.text = note.sexo
holder.tv_domicilio.text = note.domicilio
holder.tvNombre.text = "Nombre:\n${note.nombre}"
holder.tvApellidoPaterno.text = "Apellido Paterno:\n${note.apellidoPaterno}"
holder.tvApellidoMaterno.text = "Apellido Materno:\n${note.apellidoMaterno}"
holder.tv_edad.text = "Edad:\n${note.edad}"
holder.tv_sexo.text = "Sexo:\n${note.sexo}"
holder.tv_domicilio.text = "Domicilio:\n${note.domicilio}"
holder.tvId.text = "Id:${note.id}"
holder.ivEliminar.setOnClickListener {
cellClickListener.onEliminarClickListener(position)

View File

@ -0,0 +1,8 @@
package com.terratenientes.medicalhealth.data
data class Historial(
var tipoUsuario: String?,
var nombreUsuario: String?,
var eventoRealizado: String?,
var fecha: String?
)

View File

@ -99,6 +99,7 @@ class ConsultarPacientesActivity : AppCompatActivity() {
// Escribir los datos en el archivo CSV
val writer = FileWriter(archivoCSV)
writer.append("Nombre, Apellido Paterno, Apellido Materno, Edad, Sexo\n")
for (paciente in pacientesList) {
writer.append("${paciente.nombre},${paciente.apellidoPaterno},${paciente.apellidoMaterno},${paciente.edad},${paciente.sexo}\n")
}

View File

@ -0,0 +1,23 @@
package com.terratenientes.medicalhealth.utilidad
import android.app.DatePickerDialog
import android.app.Dialog
import android.content.Context
import android.os.Bundle
import android.widget.DatePicker
import androidx.fragment.app.DialogFragment
import java.util.Calendar
class DatePickerFragment (val listener: (day: Int, month: Int, year: Int) -> Unit): DialogFragment(), DatePickerDialog.OnDateSetListener {
override fun onDateSet(view: DatePicker?, year: Int, month: Int, dayOfMonth: Int) {
listener(dayOfMonth, month, year)
}
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
val c: Calendar = Calendar.getInstance()
val day: Int = c.get(Calendar.DAY_OF_MONTH)
val month: Int = c.get(Calendar.MONTH)
val year: Int = c.get(Calendar.YEAR)
return DatePickerDialog(activity as Context, this@DatePickerFragment, year, month, day)
}
}

View File

@ -51,15 +51,36 @@
android:hint="@string/receta_medicamento"
android:layout_gravity="center_horizontal"
/>
<EditText
android:id="@+id/et_fecha"
android:layout_marginTop="10dp"
<GridLayout
android:layout_width="300dp"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:columnCount="2"
android:rowCount="1">
<TextView
android:id="@+id/tv_fecha"
android:layout_marginTop="10dp"
android:layout_width="200dp"
android:layout_height="match_parent"
android:hint="@string/receta_fecha_paciente"
android:layout_gravity="center_horizontal"
android:textSize="20sp"
android:inputType="date"
/>
android:layout_columnWeight="0"
android:layout_column="0"
android:layout_row="0"/>
<TextView
android:id="@+id/tv_datepicker"
android:layout_height="match_parent"
android:layout_width="100dp"
android:layout_marginTop="10dp"
android:textColor="@color/primaryColor"
android:text="calendario"
android:textSize="20sp"
android:layout_columnWeight="1"
android:layout_column="1"
android:layout_row="0"/>
</GridLayout>
<EditText
android:id="@+id/et_dosis_medicamento"
android:layout_marginTop="10dp"

View File

@ -1,107 +1,132 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="vertical">
<androidx.cardview.widget.CardView
<androidx.cardview.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="100dp"
android:layout_margin="10dp"
app:cardCornerRadius="8dp"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="vertical"
app:cardCornerRadius="20dp"
app:cardElevation="8dp">
<GridLayout
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:columnCount="3"
android:rowCount="3">
android:layout_height="match_parent">
<TextView
android:id="@+id/tv_nombre"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="10dp"
android:layout_marginTop="10dp"
android:layout_columnWeight="1"
android:layout_column="0"
android:layout_row="0"
android:text="@string/ht_nombre"/>
android:layout_marginStart="16dp"
android:layout_marginTop="32dp"
android:text="@string/ht_nombre"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/tv_apellido_paterno"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="10dp"
android:layout_marginTop="10dp"
android:layout_columnWeight="1"
android:layout_column="1"
android:layout_row="0"
android:text="@string/ht_apellido_paterno"/>
android:layout_marginStart="4dp"
android:layout_marginTop="32dp"
android:text="@string/ht_apellido_paterno"
app:layout_constraintStart_toEndOf="@id/tv_nombre"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/tv_apellido_materno"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="10dp"
android:layout_marginTop="10dp"
android:layout_columnWeight="1"
android:layout_column="2"
android:layout_row="0"
android:text="@string/ht_apellido_materno"/>
android:layout_column="2"
android:layout_columnWeight="1"
android:layout_marginStart="16dp"
android:layout_marginTop="32dp"
android:text="@string/ht_apellido_materno"
app:layout_constraintStart_toEndOf="@+id/tv_apellido_paterno"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/tv_edad"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="10dp"
android:layout_marginTop="10dp"
android:layout_columnWeight="1"
android:layout_row="1"
android:layout_column="0"
android:layout_row="1"
android:text="@string/et_modificar_edad"/>
<TextView
android:id="@+id/tv_sexo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="10dp"
android:layout_marginTop="10dp"
android:layout_columnWeight="1"
android:layout_column="1"
android:layout_row="1"
android:text="@string/et_modificar_sexo"/>
android:layout_marginStart="20dp"
android:text="@string/et_modificar_edad"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toEndOf="@+id/tv_sexo"
app:layout_constraintTop_toBottomOf="@+id/tv_apellido_materno"
app:layout_constraintVertical_bias="0.2" />
<TextView
android:id="@+id/tv_domicilio"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="10dp"
android:layout_marginTop="10dp"
android:layout_columnWeight="1"
android:layout_column="2"
android:layout_row="1"
android:text="@string/ht_domicilio"/>
android:layout_column="2"
android:layout_columnWeight="1"
android:layout_marginStart="16dp"
android:text="@string/ht_domicilio"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/tv_nombre"
app:layout_constraintVertical_bias="0.2" />
<TextView
android:id="@+id/tv_sexo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_row="1"
android:layout_column="1"
android:layout_columnWeight="1"
android:layout_marginStart="8dp"
android:text="@string/et_modificar_sexo"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toEndOf="@+id/tv_domicilio"
app:layout_constraintTop_toBottomOf="@+id/tv_apellido_paterno"
app:layout_constraintVertical_bias="0.2" />
<TextView
android:id="@+id/tv_id_paciente"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="24dp"
android:text="Id"
app:layout_constraintBottom_toTopOf="@+id/tv_nombre"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.384" />
<ImageView
android:id="@+id/iv_modificar_paciente"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="10dp"
android:layout_marginTop="10dp"
android:layout_row="2"
android:layout_column="1"
android:layout_columnWeight="1"
android:layout_row="2"
android:src="@drawable/update"/>
android:layout_marginTop="60dp"
android:layout_marginEnd="36dp"
android:src="@drawable/update"
app:layout_constraintEnd_toStartOf="@+id/iv_eliminar_paciente"
app:layout_constraintHorizontal_bias="1.0"
app:layout_constraintStart_toEndOf="@+id/tv_edad"
app:layout_constraintTop_toTopOf="parent" />
<ImageView
android:id="@+id/iv_eliminar_paciente"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="10dp"
android:layout_marginTop="10dp"
android:layout_row="2"
android:layout_column="2"
android:layout_columnWeight="1"
android:layout_row="2"
android:src="@drawable/delete"/>
android:layout_marginTop="60dp"
android:layout_marginEnd="16dp"
android:src="@drawable/delete"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</GridLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
</androidx.cardview.widget.CardView>
</LinearLayout>
</androidx.cardview.widget.CardView>

View File

@ -2,13 +2,14 @@
<string name="app_name">MedicalHealth</string>
<!-- Modificar Activity -->
<string name="tv_modificar_titulo">Modificar Paciente</string>
<string name="et_modificar_edad">Edad:</string>
<string name="et_modificar_sexo">Sexo:</string>
<string name="et_modificar_edad">Edad</string>
<string name="et_modificar_sexo">Sexo</string>
<string name="ht_nombre">Nombre</string>
<string name="ht_apellido_paterno">Apellido Paterno</string>
<string name="ht_apellido_materno">Apellido Materno</string>
<string name="ht_domicilio">Domicilio</string>
<string name="bt_modificar">Modificar</string>
<string name="tv_id_paciente">Id</string>
<string name="tv_agregar_paciente_titulo">Agrega un paciente</string>
<string name="bt_agregar">Confirmar</string>
<string name="bt_cancelar">Cancelar</string>