Correción recycle view pacientes y funcionalidad de descarga de historial en formato csv

This commit is contained in:
AngelSuarez03 2024-05-26 11:32:32 -06:00
parent 33a29c155f
commit 08ffeac5e4
13 changed files with 281 additions and 95 deletions

View File

@ -33,7 +33,7 @@ class AgregarActivity : AppCompatActivity() {
setContentView(view) setContentView(view)
db = DoctorDataBaseHelper(this@AgregarActivity) db = DoctorDataBaseHelper(this@AgregarActivity)
dbHistorial = HistorialDataBaseHelper(this@AgregarActivity) dbHistorial = HistorialDataBaseHelper(this@AgregarActivity)
historial = Historial("Doctor", intent.getStringExtra("NombreDoctor"),"Se inició la actividad alta paciente", obtenerFecha()) historial = Historial("Doctor", intent.getStringExtra("NombreDoctor"),"Se inicio la actividad alta paciente", obtenerFecha())
añadirHistorial(historial) añadirHistorial(historial)
val opcionesGenero = arrayOf("Masculino", "Femenino", "Otro") val opcionesGenero = arrayOf("Masculino", "Femenino", "Otro")
val adapter = ArrayAdapter(this, R.layout.simple_spinner_item, opcionesGenero) val adapter = ArrayAdapter(this, R.layout.simple_spinner_item, opcionesGenero)

View File

@ -10,6 +10,7 @@ import androidx.annotation.RequiresApi
import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.app.AppCompatActivity
import com.terratenientes.medicalhealth.adapters.DoctorDataBaseHelper import com.terratenientes.medicalhealth.adapters.DoctorDataBaseHelper
import com.terratenientes.medicalhealth.adapters.HistorialDataBaseHelper import com.terratenientes.medicalhealth.adapters.HistorialDataBaseHelper
import com.terratenientes.medicalhealth.adapters.RecetaDataBaseHelper
import com.terratenientes.medicalhealth.data.Doctor import com.terratenientes.medicalhealth.data.Doctor
import com.terratenientes.medicalhealth.data.Historial import com.terratenientes.medicalhealth.data.Historial
import com.terratenientes.medicalhealth.databinding.ActivityMainBinding import com.terratenientes.medicalhealth.databinding.ActivityMainBinding
@ -24,16 +25,19 @@ class MainActivity : AppCompatActivity() {
private lateinit var binding: ActivityMainBinding private lateinit var binding: ActivityMainBinding
private lateinit var db: DoctorDataBaseHelper private lateinit var db: DoctorDataBaseHelper
private lateinit var dbHistorial: HistorialDataBaseHelper private lateinit var dbHistorial: HistorialDataBaseHelper
lateinit var dbRecetas: RecetaDataBaseHelper
private lateinit var historial: Historial private lateinit var historial: Historial
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
binding = ActivityMainBinding.inflate(layoutInflater) binding = ActivityMainBinding.inflate(layoutInflater)
val view = binding.root val view = binding.root
setContentView(view) setContentView(view)
historial = Historial(null, null, "Se abrió la aplicacion", obtenerFecha()) historial = Historial(null, null, "Se abrio la aplicacion", obtenerFecha())
db = DoctorDataBaseHelper(this@MainActivity) db = DoctorDataBaseHelper(this@MainActivity)
dbHistorial = HistorialDataBaseHelper(this@MainActivity) dbHistorial = HistorialDataBaseHelper(this@MainActivity)
dbRecetas = RecetaDataBaseHelper(this@MainActivity)
añadirHistorial(historial) añadirHistorial(historial)
//dbRecetas.crearTablaReceta()
//db.createTable() //db.createTable()
//dbHistorial.crearTablaHistorial() //dbHistorial.crearTablaHistorial()
binding.btnIniciarSesion.setOnClickListener { binding.btnIniciarSesion.setOnClickListener {
@ -47,7 +51,7 @@ class MainActivity : AppCompatActivity() {
binding.tvContrasena.text.toString() binding.tvContrasena.text.toString()
) )
if (res == true) { if (res == true) {
historial.eventoRealizado = "Inicio Sesión Doctor" historial.eventoRealizado = "Inicio Sesion Doctor"
historial.tipoUsuario = "Doctor" historial.tipoUsuario = "Doctor"
añadirHistorial(historial) añadirHistorial(historial)
Toast.makeText(this@MainActivity, "VALIDADO", Toast.LENGTH_LONG).show() Toast.makeText(this@MainActivity, "VALIDADO", Toast.LENGTH_LONG).show()
@ -57,7 +61,7 @@ class MainActivity : AppCompatActivity() {
startActivity(intent) startActivity(intent)
} else if (resPaciente == true) { } else if (resPaciente == true) {
historial.tipoUsuario = "Paciente" historial.tipoUsuario = "Paciente"
historial.eventoRealizado = "Inicio Sesión Paciente" historial.eventoRealizado = "Inicio Sesion Paciente"
añadirHistorial(historial) añadirHistorial(historial)
Toast.makeText(this@MainActivity, "VALIDADO", Toast.LENGTH_LONG).show() Toast.makeText(this@MainActivity, "VALIDADO", Toast.LENGTH_LONG).show()
val intent = Intent(this@MainActivity, PacientePrincipalActivity::class.java) val intent = Intent(this@MainActivity, PacientePrincipalActivity::class.java)
@ -69,7 +73,7 @@ class MainActivity : AppCompatActivity() {
} }
} }
binding.tvRegistrarme.setOnClickListener { binding.tvRegistrarme.setOnClickListener {
historial.eventoRealizado = "Accionó el botón para la pantalla de registro" historial.eventoRealizado = "Acciono el botón para la pantalla de registro"
historial.fecha = obtenerFecha() historial.fecha = obtenerFecha()
añadirHistorial(historial) añadirHistorial(historial)
val intent = Intent(this@MainActivity, RegistrarDActivity::class.java) val intent = Intent(this@MainActivity, RegistrarDActivity::class.java)

View File

@ -33,7 +33,7 @@ class ModificarActivity : AppCompatActivity() {
setContentView(view) setContentView(view)
db = DoctorDataBaseHelper(this@ModificarActivity) db = DoctorDataBaseHelper(this@ModificarActivity)
dbHistorial = HistorialDataBaseHelper(this@ModificarActivity) dbHistorial = HistorialDataBaseHelper(this@ModificarActivity)
historial = Historial("Doctor", intent.getStringExtra("NombreDoctor"),"Se inició la actividad modificar paciente", obtenerFecha()) historial = Historial("Doctor", intent.getStringExtra("NombreDoctor"),"Se inicio la actividad modificar paciente", obtenerFecha())
añadirHistorial(historial) 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()) 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() llenarCampos()
@ -48,7 +48,7 @@ class ModificarActivity : AppCompatActivity() {
paciente.apellidoMaterno = binding.etApellidoMaterno.text.toString() paciente.apellidoMaterno = binding.etApellidoMaterno.text.toString()
paciente.domicilio = binding.etDomicilio.text.toString() paciente.domicilio = binding.etDomicilio.text.toString()
db.modificarPaciente(paciente) db.modificarPaciente(paciente)
historial.eventoRealizado = "Se modifico la información de paciente ${paciente.nombre}" historial.eventoRealizado = "Se modifico la informacion de paciente ${paciente.nombre}"
historial.fecha = obtenerFecha() historial.fecha = obtenerFecha()
añadirHistorial(historial) añadirHistorial(historial)
finish() finish()

View File

@ -1,15 +1,24 @@
package com.terratenientes.medicalhealth package com.terratenientes.medicalhealth
import android.Manifest
import android.annotation.SuppressLint
import android.content.Context
import android.content.Intent import android.content.Intent
import android.content.pm.PackageManager
import android.os.Build import android.os.Build
import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle import android.os.Bundle
import android.os.Environment
import android.util.Log import android.util.Log
import android.widget.Toast
import androidx.annotation.RequiresApi import androidx.annotation.RequiresApi
import androidx.core.app.ActivityCompat
import androidx.core.content.ContextCompat
import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.LinearLayoutManager
import com.terratenientes.medicalhealth.adapters.CellClickListener import com.terratenientes.medicalhealth.adapters.CellClickListener
import com.terratenientes.medicalhealth.adapters.DoctorDataBaseHelper import com.terratenientes.medicalhealth.adapters.DoctorDataBaseHelper
import com.terratenientes.medicalhealth.adapters.HistorialDataBaseHelper import com.terratenientes.medicalhealth.adapters.HistorialDataBaseHelper
import com.terratenientes.medicalhealth.adapters.PacienteAdapter
import com.terratenientes.medicalhealth.adapters.PacienteViewAdapter import com.terratenientes.medicalhealth.adapters.PacienteViewAdapter
import com.terratenientes.medicalhealth.adapters.RecetaDataBaseHelper import com.terratenientes.medicalhealth.adapters.RecetaDataBaseHelper
import com.terratenientes.medicalhealth.adapters.RecetaViewAdapter import com.terratenientes.medicalhealth.adapters.RecetaViewAdapter
@ -17,6 +26,8 @@ import com.terratenientes.medicalhealth.data.Historial
import com.terratenientes.medicalhealth.data.Paciente import com.terratenientes.medicalhealth.data.Paciente
import com.terratenientes.medicalhealth.data.Receta import com.terratenientes.medicalhealth.data.Receta
import com.terratenientes.medicalhealth.databinding.ActivityPacienteBinding import com.terratenientes.medicalhealth.databinding.ActivityPacienteBinding
import java.io.File
import java.io.FileWriter
import java.time.ZoneId import java.time.ZoneId
import java.time.ZonedDateTime import java.time.ZonedDateTime
import java.time.format.DateTimeFormatter import java.time.format.DateTimeFormatter
@ -24,8 +35,8 @@ import java.time.format.DateTimeFormatter
@RequiresApi(Build.VERSION_CODES.O) @RequiresApi(Build.VERSION_CODES.O)
class PacienteActivity : AppCompatActivity(), CellClickListener { class PacienteActivity : AppCompatActivity(), CellClickListener {
lateinit var binding : ActivityPacienteBinding lateinit var binding : ActivityPacienteBinding
private var idPaciente : String =""
private lateinit var db: DoctorDataBaseHelper private lateinit var db: DoctorDataBaseHelper
private lateinit var pacientesList: MutableList<Paciente>
private lateinit var dbHistorial: HistorialDataBaseHelper private lateinit var dbHistorial: HistorialDataBaseHelper
private lateinit var historial: Historial private lateinit var historial: Historial
private lateinit var recycleAdapter : PacienteViewAdapter private lateinit var recycleAdapter : PacienteViewAdapter
@ -42,18 +53,26 @@ class PacienteActivity : AppCompatActivity(), CellClickListener {
binding.rvPacientes.layoutManager = LinearLayoutManager(this) binding.rvPacientes.layoutManager = LinearLayoutManager(this)
binding.rvPacientes.adapter = recycleAdapter binding.rvPacientes.adapter = recycleAdapter
dbHistorial = HistorialDataBaseHelper(this@PacienteActivity) dbHistorial = HistorialDataBaseHelper(this@PacienteActivity)
historial = Historial("Doctor", intent.getStringExtra("NombreDoctor").toString(),"Se inició la actividad de pacientes", obtenerFecha()) historial = Historial("Doctor", intent.getStringExtra("NombreDoctor").toString(),"Se inicio la actividad de pacientes", obtenerFecha())
añadirHistorial(historial) añadirHistorial(historial)
cargarListaPacientes()
nombreDoctor = intent.getStringExtra("NombreDoctor").toString() nombreDoctor = intent.getStringExtra("NombreDoctor").toString()
Log.i("Pacientes", pacientes.toString()) Log.i("Pacientes", pacientes.toString())
binding.ivAgregarPaciente.setOnClickListener { binding.ivAgregarPaciente.setOnClickListener {
val intent = Intent(this@PacienteActivity, AgregarActivity::class.java) val intent = Intent(this@PacienteActivity, AgregarActivity::class.java)
intent.putExtra("NombreDoctor", nombreDoctor) intent.putExtra("NombreDoctor", nombreDoctor)
startActivity(intent) startActivity(intent)
historial.eventoRealizado = "Se accionó el boton para inciar la actividad de alta paciente" historial.eventoRealizado = "Se acciono el boton para inciar la actividad alta paciente"
historial.fecha = obtenerFecha() historial.fecha = obtenerFecha()
añadirHistorial(historial) 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)
}
} }
override fun onResume() { override fun onResume() {
@ -67,7 +86,7 @@ class PacienteActivity : AppCompatActivity(), CellClickListener {
override fun onEliminarClickListener(position: Int) { override fun onEliminarClickListener(position: Int) {
val paciente = pacientes[position] val paciente = pacientes[position]
Log.i("Paciente Elim", paciente.toString()) Log.i("Paciente Elim", paciente.toString())
historial.eventoRealizado = "Se acciono el botón para eliminar al usuario ${paciente.id}" historial.eventoRealizado = "Se acciono el boton para eliminar al usuario ${paciente.id}"
historial.fecha = obtenerFecha() historial.fecha = obtenerFecha()
añadirHistorial(historial) añadirHistorial(historial)
db.eliminarPaciente(paciente.id) db.eliminarPaciente(paciente.id)
@ -86,11 +105,48 @@ class PacienteActivity : AppCompatActivity(), CellClickListener {
intent.putExtra("Sexo", paciente.sexo) intent.putExtra("Sexo", paciente.sexo)
intent.putExtra("NombreDoctor",nombreDoctor) intent.putExtra("NombreDoctor",nombreDoctor)
startActivity(intent) startActivity(intent)
historial.eventoRealizado = "Se acciono el botón para iniciar la actividad modificar paciente con los datos del paciente ${paciente.nombre}" historial.eventoRealizado = "Se acciono el boton para iniciar la actividad modificar paciente con los datos del paciente ${paciente.nombre}"
historial.fecha = obtenerFecha() historial.fecha = obtenerFecha()
añadirHistorial(historial) 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 { private fun obtenerFecha(): String {
val fromTimeZone = ZoneId.of("America/Mexico_City") val fromTimeZone = ZoneId.of("America/Mexico_City")
@ -110,4 +166,28 @@ class PacienteActivity : AppCompatActivity(), CellClickListener {
msj = "Error al almacenar la información" msj = "Error al almacenar la información"
Log.i("Historial", msj + " | Información almacenada: " + historial) 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

@ -97,7 +97,7 @@ class PacientePrincipalActivity : AppCompatActivity(), CellClickListener {
override fun onEliminarClickListener(position: Int) { override fun onEliminarClickListener(position: Int) {
val receta = recetas[position] val receta = recetas[position]
db.eliminarReceta(receta) db.eliminarReceta(receta)
historial.eventoRealizado = "Se accionó el boton de eliminar la receta" historial.eventoRealizado = "Se acciono el boton de eliminar la receta"
historial.fecha = obtenerFecha() historial.fecha = obtenerFecha()
añadirHistorial(historial) añadirHistorial(historial)
recycleAdapter.refreshData(db.obtenerRecetasPaciente(idPaciente)) recycleAdapter.refreshData(db.obtenerRecetasPaciente(idPaciente))
@ -106,7 +106,7 @@ class PacientePrincipalActivity : AppCompatActivity(), CellClickListener {
override fun onModifyClickListener(position: Int) { override fun onModifyClickListener(position: Int) {
val receta = recetas[position] val receta = recetas[position]
historial.eventoRealizado = "Se accionó el boton de iniciar la actividad de modificar la receta" historial.eventoRealizado = "Se acciono el boton de iniciar la actividad de modificar receta"
historial.fecha = obtenerFecha() historial.fecha = obtenerFecha()
añadirHistorial(historial) añadirHistorial(historial)
val intent = Intent(this@PacientePrincipalActivity, ModificarRecetaActivity::class.java) val intent = Intent(this@PacientePrincipalActivity, ModificarRecetaActivity::class.java)

View File

@ -1,17 +1,27 @@
package com.terratenientes.medicalhealth package com.terratenientes.medicalhealth
import android.Manifest
import android.annotation.SuppressLint
import android.content.Context
import android.content.Intent import android.content.Intent
import android.content.pm.PackageManager
import android.os.Build import android.os.Build
import androidx.appcompat.app.AppCompatActivity import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle import android.os.Bundle
import android.os.Environment
import android.util.Log import android.util.Log
import android.widget.Toast
import androidx.annotation.RequiresApi 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.DoctorDataBaseHelper
import com.terratenientes.medicalhealth.adapters.HistorialDataBaseHelper import com.terratenientes.medicalhealth.adapters.HistorialDataBaseHelper
import com.terratenientes.medicalhealth.data.Doctor import com.terratenientes.medicalhealth.data.Doctor
import com.terratenientes.medicalhealth.data.Historial import com.terratenientes.medicalhealth.data.Historial
import com.terratenientes.medicalhealth.databinding.ActivityPrincipalBinding import com.terratenientes.medicalhealth.databinding.ActivityPrincipalBinding
import com.terratenientes.medicalhealth.reports.ConsultarPacientesActivity import com.terratenientes.medicalhealth.reports.ConsultarPacientesActivity
import java.io.File
import java.io.FileWriter
import java.time.ZoneId import java.time.ZoneId
import java.time.ZonedDateTime import java.time.ZonedDateTime
import java.time.format.DateTimeFormatter import java.time.format.DateTimeFormatter
@ -21,6 +31,7 @@ class PrincipalActivity : AppCompatActivity() {
lateinit var binding : ActivityPrincipalBinding lateinit var binding : ActivityPrincipalBinding
lateinit var db : DoctorDataBaseHelper lateinit var db : DoctorDataBaseHelper
private lateinit var dbHistorial: HistorialDataBaseHelper private lateinit var dbHistorial: HistorialDataBaseHelper
private lateinit var historialList: MutableList<Historial>
private lateinit var historial: Historial private lateinit var historial: Historial
lateinit var nombreDoctor : String lateinit var nombreDoctor : String
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
@ -31,14 +42,14 @@ class PrincipalActivity : AppCompatActivity() {
db = DoctorDataBaseHelper(this@PrincipalActivity) db = DoctorDataBaseHelper(this@PrincipalActivity)
dbHistorial = HistorialDataBaseHelper(this@PrincipalActivity) dbHistorial = HistorialDataBaseHelper(this@PrincipalActivity)
Log.i("Datos Doctor", intent.getStringExtra("Cedula").toString()) Log.i("Datos Doctor", intent.getStringExtra("Cedula").toString())
historial = Historial("Doctor", null,"Se inició la actividad de menú 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.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)
startActivity(intent) startActivity(intent)
historial.eventoRealizado = "Se presionó el botón para iniciar la actividad de pacientes" historial.eventoRealizado = "Se presiono el boton para iniciar la actividad de pacientes"
historial.fecha = obtenerFecha() historial.fecha = obtenerFecha()
añadirHistorial(historial) añadirHistorial(historial)
} }
@ -47,14 +58,16 @@ class PrincipalActivity : AppCompatActivity() {
val intent = Intent(this@PrincipalActivity, RecetaActivity::class.java) val intent = Intent(this@PrincipalActivity, RecetaActivity::class.java)
intent.putExtra("NombreDoctor", nombreDoctor) intent.putExtra("NombreDoctor", nombreDoctor)
startActivity(intent) startActivity(intent)
historial.eventoRealizado = "Se presionó el botón para iniciar la actividad de recetas" historial.eventoRealizado = "Se presiono el boton para iniciar la actividad de recetas"
historial.fecha = obtenerFecha() historial.fecha = obtenerFecha()
añadirHistorial(historial) añadirHistorial(historial)
} }
binding.ivHistorial.setOnClickListener { binding.ivHistorial.setOnClickListener {
historial.eventoRealizado = "Se presionó el botón para iniciar la actividad de historial" historial.eventoRealizado = "Se presiono el boton para descargar el historial"
historial.fecha = obtenerFecha() historial.fecha = obtenerFecha()
añadirHistorial(historial) añadirHistorial(historial)
cargarHistorial()
exportarCSV(this@PrincipalActivity, historialList)
} }
} }
@ -90,4 +103,64 @@ class PrincipalActivity : AppCompatActivity() {
msj = "Error al almacenar la información" msj = "Error al almacenar la información"
Log.i("Historial", msj + " | Información almacenada: " + historial) 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

@ -43,7 +43,7 @@ class RecetaActivity : AppCompatActivity(), OnItemSelectedListener {
setContentView(view) setContentView(view)
//db.crearTablaReceta() //db.crearTablaReceta()
cargarSpinnerPacientes() cargarSpinnerPacientes()
historial = Historial("Doctor", intent.getStringExtra("NombreDoctor"),"Se inició la actividad de añadir receta", obtenerFecha()) historial = Historial("Doctor", intent.getStringExtra("NombreDoctor"),"Se inicio la actividad de añadir receta", obtenerFecha())
añadirHistorial(historial) añadirHistorial(historial)
binding.spNombrePaciente.onItemSelectedListener=this binding.spNombrePaciente.onItemSelectedListener=this
binding.btnAgregarReceta.setOnClickListener { binding.btnAgregarReceta.setOnClickListener {

View File

@ -27,7 +27,7 @@ class RegistrarDActivity : AppCompatActivity() {
val view = binding.root val view = binding.root
setContentView(view) setContentView(view)
dbHistorial = HistorialDataBaseHelper(this@RegistrarDActivity) dbHistorial = HistorialDataBaseHelper(this@RegistrarDActivity)
historial = Historial(null, null, "Se abrió 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 {

View File

@ -11,12 +11,12 @@ class HistorialDataBaseHelper (context: Context) : SQLiteOpenHelper(context, DAT
private val DATABAENAME = "MedicalHealth" private val DATABAENAME = "MedicalHealth"
private val DATABASEVERSION=1 private val DATABASEVERSION=1
//PRIMERO VA EL NOMBRE DE LA TABLA //PRIMERO VA EL NOMBRE DE LA TABLA
private val TABLE_NAME = "Historial" val TABLE_NAME = "Historial"
//LUEGO VAN LAS COLUMNAS DE ESA TABLA //LUEGO VAN LAS COLUMNAS DE ESA TABLA
private val COLUMN_TIPO_USUARIO = "TipoUsuario" val COLUMN_TIPO_USUARIO = "TipoUsuario"
private val COLUMN_NOMBRE_USUARIO = "NombreUsuario" val COLUMN_NOMBRE_USUARIO = "NombreUsuario"
private val COLUMN_EVENTO = "Evento" val COLUMN_EVENTO = "Evento"
private val COLUMN_FECHA = "Fecha" val COLUMN_FECHA = "Fecha"
} }
override fun onCreate(db: SQLiteDatabase?) { 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))" val crearTabla="CREATE TABLE ${TABLE_NAME} (${COLUMN_TIPO_USUARIO} VARCHAR(30), ${COLUMN_NOMBRE_USUARIO} VARCHAR(30), ${COLUMN_EVENTO} VARCHAR(255), ${COLUMN_FECHA} VARCHAR(70))"

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 tv_domicilio : TextView = itemView.findViewById(R.id.tv_domicilio)
val ivModificar : ImageView = itemView.findViewById(R.id.iv_modificar_paciente) val ivModificar : ImageView = itemView.findViewById(R.id.iv_modificar_paciente)
val ivEliminar : ImageView = itemView.findViewById(R.id.iv_eliminar_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) { override fun onBindViewHolder(holder: NoteViewHolder, position: Int) {
val note = notes[position] val note = notes[position]
holder.tvNombre.text = note.nombre holder.tvNombre.text = "Nombre:\n${note.nombre}"
holder.tvApellidoPaterno.text = note.apellidoPaterno holder.tvApellidoPaterno.text = "Apellido Paterno:\n${note.apellidoPaterno}"
holder.tvApellidoMaterno.text = note.apellidoMaterno holder.tvApellidoMaterno.text = "Apellido Materno:\n${note.apellidoMaterno}"
holder.tv_edad.text = note.edad.toString() holder.tv_edad.text = "Edad:\n${note.edad}"
holder.tv_sexo.text = note.sexo holder.tv_sexo.text = "Sexo:\n${note.sexo}"
holder.tv_domicilio.text = note.domicilio holder.tv_domicilio.text = "Domicilio:\n${note.domicilio}"
holder.tvId.text = "Id:${note.id}"
holder.ivEliminar.setOnClickListener { holder.ivEliminar.setOnClickListener {
cellClickListener.onEliminarClickListener(position) cellClickListener.onEliminarClickListener(position)

View File

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

View File

@ -1,107 +1,132 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" <androidx.cardview.widget.CardView xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" xmlns:tools="http://schemas.android.com/tools"
android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="vertical">
<androidx.cardview.widget.CardView
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="100dp" android:layout_height="100dp"
android:layout_margin="10dp" 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"> app:cardElevation="8dp">
<GridLayout <androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent">
android:columnCount="3"
android:rowCount="3">
<TextView <TextView
android:id="@+id/tv_nombre" android:id="@+id/tv_nombre"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="10dp" android:layout_marginStart="16dp"
android:layout_marginTop="10dp" android:layout_marginTop="32dp"
android:layout_columnWeight="1" android:text="@string/ht_nombre"
android:layout_column="0" app:layout_constraintStart_toStartOf="parent"
android:layout_row="0" app:layout_constraintTop_toTopOf="parent" />
android:text="@string/ht_nombre"/>
<TextView <TextView
android:id="@+id/tv_apellido_paterno" android:id="@+id/tv_apellido_paterno"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="10dp" android:layout_marginStart="4dp"
android:layout_marginTop="10dp" android:layout_marginTop="32dp"
android:layout_columnWeight="1" android:text="@string/ht_apellido_paterno"
android:layout_column="1" app:layout_constraintStart_toEndOf="@id/tv_nombre"
android:layout_row="0" app:layout_constraintTop_toTopOf="parent" />
android:text="@string/ht_apellido_paterno"/>
<TextView <TextView
android:id="@+id/tv_apellido_materno" android:id="@+id/tv_apellido_materno"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="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: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 <TextView
android:id="@+id/tv_edad" android:id="@+id/tv_edad"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="10dp" android:layout_row="1"
android:layout_marginTop="10dp"
android:layout_columnWeight="1"
android:layout_column="0" 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_columnWeight="1"
android:layout_column="1" android:layout_marginStart="20dp"
android:layout_row="1" android:text="@string/et_modificar_edad"
android:text="@string/et_modificar_sexo"/> 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 <TextView
android:id="@+id/tv_domicilio" android:id="@+id/tv_domicilio"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="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: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 <ImageView
android:id="@+id/iv_modificar_paciente" android:id="@+id/iv_modificar_paciente"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="10dp" android:layout_row="2"
android:layout_marginTop="10dp"
android:layout_column="1" android:layout_column="1"
android:layout_columnWeight="1" android:layout_columnWeight="1"
android:layout_row="2" android:layout_marginTop="60dp"
android:src="@drawable/update"/> 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 <ImageView
android:id="@+id/iv_eliminar_paciente" android:id="@+id/iv_eliminar_paciente"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginStart="10dp" android:layout_row="2"
android:layout_marginTop="10dp"
android:layout_column="2" android:layout_column="2"
android:layout_columnWeight="1" android:layout_columnWeight="1"
android:layout_row="2" android:layout_marginTop="60dp"
android:src="@drawable/delete"/> 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> </androidx.cardview.widget.CardView>
</LinearLayout>

View File

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