From 92de4c6341a14b14d8a9f2db576a8be89b5cf63d Mon Sep 17 00:00:00 2001 From: AngelSuarez03 Date: Tue, 4 Jun 2024 21:25:05 -0600 Subject: [PATCH] =?UTF-8?q?Correci=C3=B3n=20funcionalidades=20recetas=20M?= =?UTF-8?q?=C3=A9dico=20y=20pacientes?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/AndroidManifest.xml | 9 +- .../medicalhealth/PrincipalActivity.kt | 2 +- .../medicalhealth/RecetasActivity.kt | 139 +++++++++++++++ .../adapters/RecetaDataBaseHelper.kt | 20 +++ .../adapters/RecetaDoctorViewAdapter.kt | 62 +++++++ .../adapters/RecetaViewAdapter.kt | 8 - app/src/main/res/layout/activity_recetas.xml | 24 +++ app/src/main/res/layout/rc_receta_item.xml | 29 --- .../main/res/layout/rc_receta_medico_item.xml | 165 ++++++++++++++++++ 9 files changed, 417 insertions(+), 41 deletions(-) create mode 100644 app/src/main/java/com/terratenientes/medicalhealth/RecetasActivity.kt create mode 100644 app/src/main/java/com/terratenientes/medicalhealth/adapters/RecetaDoctorViewAdapter.kt create mode 100644 app/src/main/res/layout/activity_recetas.xml create mode 100644 app/src/main/res/layout/rc_receta_medico_item.xml diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 3e4d4e7..340144e 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -1,6 +1,6 @@ + xmlns:tools="http://schemas.android.com/tools"> @@ -14,7 +14,10 @@ android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/Theme.MedicalHealth" - tools:targetApi="31" > + tools:targetApi="31"> + @@ -51,7 +54,7 @@ android:exported="false" /> + android:exported="true"> diff --git a/app/src/main/java/com/terratenientes/medicalhealth/PrincipalActivity.kt b/app/src/main/java/com/terratenientes/medicalhealth/PrincipalActivity.kt index 47f98b9..7b4538e 100644 --- a/app/src/main/java/com/terratenientes/medicalhealth/PrincipalActivity.kt +++ b/app/src/main/java/com/terratenientes/medicalhealth/PrincipalActivity.kt @@ -59,7 +59,7 @@ class PrincipalActivity : AppCompatActivity() { } binding.ivRecetas.setOnClickListener { - val intent = Intent(this@PrincipalActivity, RecetaActivity::class.java) + val intent = Intent(this@PrincipalActivity, RecetasActivity::class.java) intent.putExtra("NombreDoctor", nombreDoctor) startActivity(intent) historial.eventoRealizado = "Se presiono el boton para iniciar la actividad de recetas" diff --git a/app/src/main/java/com/terratenientes/medicalhealth/RecetasActivity.kt b/app/src/main/java/com/terratenientes/medicalhealth/RecetasActivity.kt new file mode 100644 index 0000000..43e7e0b --- /dev/null +++ b/app/src/main/java/com/terratenientes/medicalhealth/RecetasActivity.kt @@ -0,0 +1,139 @@ +package com.terratenientes.medicalhealth + +import android.content.Intent +import android.os.Build +import androidx.appcompat.app.AppCompatActivity +import android.os.Bundle +import android.util.Log +import android.widget.Toast +import androidx.annotation.RequiresApi +import androidx.recyclerview.widget.LinearLayoutManager +import com.terratenientes.medicalhealth.adapters.CellClickListener +import com.terratenientes.medicalhealth.adapters.HistorialDataBaseHelper +import com.terratenientes.medicalhealth.adapters.RecetaDataBaseHelper +import com.terratenientes.medicalhealth.adapters.RecetaDoctorViewAdapter +import com.terratenientes.medicalhealth.adapters.RecetaViewAdapter +import com.terratenientes.medicalhealth.data.Historial +import com.terratenientes.medicalhealth.data.Receta +import com.terratenientes.medicalhealth.databinding.ActivityRecetasBinding +import java.time.ZoneId +import java.time.ZonedDateTime +import java.time.format.DateTimeFormatter + + +@RequiresApi(Build.VERSION_CODES.O) +class RecetasActivity : AppCompatActivity(), CellClickListener { + lateinit var binding: ActivityRecetasBinding + private lateinit var db: RecetaDataBaseHelper + private lateinit var recycleAdapter : RecetaDoctorViewAdapter + private lateinit var recetas : List + lateinit var dbHistorial: HistorialDataBaseHelper + lateinit var historial: Historial + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + binding = ActivityRecetasBinding.inflate(layoutInflater) + val view = binding.root + setContentView(view) + db= RecetaDataBaseHelper(this@RecetasActivity) + dbHistorial = HistorialDataBaseHelper(this@RecetasActivity) + historial = Historial("Doctor", intent.getStringExtra("NombreDoctor"),"Se inicio la actividad de recetas", obtenerFecha()) + añadirHistorial(historial) + recycleAdapter = RecetaDoctorViewAdapter(db.obtenerRecetas(), this, this@RecetasActivity) + binding.rvRecetas.layoutManager= LinearLayoutManager(this@RecetasActivity) + binding.rvRecetas.adapter= recycleAdapter + binding.ivAgregarReceta.setOnClickListener { + val intent = Intent(this@RecetasActivity, RecetaActivity::class.java) + historial.eventoRealizado = "Se pulso el boton para agregar una receta" + historial.fecha = obtenerFecha() + añadirHistorial(historial) + startActivity(intent) + } + } + + override fun onResume() { + super.onResume() + recycleAdapter.refreshData(db.obtenerRecetas()) + } + + override fun onCellClickListener(position: Int) { + } + + override fun onEliminarClickListener(position: Int) { + val receta = recetas[position] + db.eliminarReceta(receta) + historial.eventoRealizado = "Se acciono el boton de eliminar la receta" + historial.fecha = obtenerFecha() + añadirHistorial(historial) + recycleAdapter.refreshData(db.obtenerRecetas()) + Toast.makeText(this, "Receta eliminada correctamente", Toast.LENGTH_SHORT).show() + } + + override fun onModifyClickListener(position: Int) { + val receta = recetas[position] + historial.eventoRealizado = "Se acciono el boton de iniciar la actividad de modificar receta" + historial.fecha = obtenerFecha() + añadirHistorial(historial) + val intent = Intent(this@RecetasActivity, ModificarRecetaActivity::class.java) + intent.putExtra("NombrePaciente", receta.NombrePaciente) + intent.putExtra("EdadPaciente", receta.edadPaciente.toString()) + intent.putExtra("PesoPaciente", receta.pesoPaciente.toString()) + intent.putExtra("NombreMedicamento", receta.nombreMedicamento) + intent.putExtra("Fecha", receta.fecha) + intent.putExtra("Dosis", receta.dosis) + intent.putExtra("Duracion", receta.duracion) + startActivity(intent) + } + + override fun onEnviarCorreoClickListener(position: Int) { + val receta = recetas[position] + val nombrePaciente = receta.NombrePaciente + val nombreMedicamento = receta.nombreMedicamento + val dosisMedicamento = receta.dosis + val duracionMedicamento = receta.duracion + val fechaReceta = receta.fecha + val pesoPaciente = receta.pesoPaciente + val edadPaciente = receta.edadPaciente + + val descripcionReceta = """ + Fecha de Consulta: $fechaReceta + Datos Generales del Paciente: + Peso del Paciente: $pesoPaciente + Edad del Paciente: $edadPaciente + Medicamento a Recetar: $nombreMedicamento + Dosis del Medicamento: $dosisMedicamento + Duración del Tratamiento: $duracionMedicamento + """.trimIndent() + + val intent = Intent(Intent.ACTION_SEND).apply { + type = "message/rfc822" + putExtra(Intent.EXTRA_SUBJECT, "Receta Médica de $nombrePaciente") + putExtra(Intent.EXTRA_TEXT, descripcionReceta) + } + try { + startActivity(Intent.createChooser(intent, "Enviar receta a través de:")) + } catch (ex: android.content.ActivityNotFoundException) { + Toast.makeText(this, "No hay clientes de correo instalados.", Toast.LENGTH_SHORT).show() + } + } + + private fun obtenerFecha(): String { + val fromTimeZone = ZoneId.of("America/Mexico_City") + + val currentTime = ZonedDateTime.now(fromTimeZone) + + val dateFormat = "MMM dd yyyy | hh:mm:ss a " + val formatter = DateTimeFormatter.ofPattern(dateFormat) + return formatter.format(currentTime) + } + + private fun añadirHistorial(historial: Historial) { + val resultadoInsert = dbHistorial.agregarInformacin(historial) + var msj = "" + if(resultadoInsert > 0) + msj = "Información historica almacenada" + else + msj = "Error al almacenar la información" + Log.i("Historial", msj + " | Información almacenada: " + historial) + } + +} \ No newline at end of file diff --git a/app/src/main/java/com/terratenientes/medicalhealth/adapters/RecetaDataBaseHelper.kt b/app/src/main/java/com/terratenientes/medicalhealth/adapters/RecetaDataBaseHelper.kt index 4ce9d26..4e473c1 100644 --- a/app/src/main/java/com/terratenientes/medicalhealth/adapters/RecetaDataBaseHelper.kt +++ b/app/src/main/java/com/terratenientes/medicalhealth/adapters/RecetaDataBaseHelper.kt @@ -93,6 +93,26 @@ class RecetaDataBaseHelper(context: Context) : SQLiteOpenHelper(context, DATABAE return recetas } + @SuppressLint("Range") + fun obtenerRecetas(): List { + val recetas = mutableListOf() + val db = readableDatabase + val cursor = db.rawQuery("SELECT * FROM $TABLE_NAME", null) + while (cursor.moveToNext()) { + val nombrePaciente = cursor.getString(cursor.getColumnIndex(COLUMN_NOMBRE_PACIENTE)) + val edadPaciente = cursor.getInt(cursor.getColumnIndex(COLUMN_EDAD_PACIENTE)) + val pesoPaciente = cursor.getDouble(cursor.getColumnIndex(COLUMN_PESO_PACIENTE)) + val medicamento = cursor.getString(cursor.getColumnIndex(COLUMN_MEDICAMENTO)) + val fecha = cursor.getString(cursor.getColumnIndex(COLUMN_FECHA)) + val dosis = cursor.getString(cursor.getColumnIndex(COLUMN_DOSIS_PACIENTE)) + val duracion = cursor.getString(cursor.getColumnIndex(DURACION_MEDICAMENTO)) + val receta = Receta(nombrePaciente, edadPaciente, pesoPaciente, medicamento, fecha, dosis, duracion) + recetas.add(receta) + } + cursor.close() + return recetas + } + fun eliminarReceta(receta: Receta) { Log.d("RecetaDataBaseHelper", "Eliminando receta: ${receta.NombrePaciente}, ${receta.fecha}") val db = writableDatabase diff --git a/app/src/main/java/com/terratenientes/medicalhealth/adapters/RecetaDoctorViewAdapter.kt b/app/src/main/java/com/terratenientes/medicalhealth/adapters/RecetaDoctorViewAdapter.kt new file mode 100644 index 0000000..c72afdc --- /dev/null +++ b/app/src/main/java/com/terratenientes/medicalhealth/adapters/RecetaDoctorViewAdapter.kt @@ -0,0 +1,62 @@ +package com.terratenientes.medicalhealth.adapters + +import android.content.Context +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.widget.ImageView +import android.widget.TextView +import androidx.recyclerview.widget.RecyclerView +import com.terratenientes.medicalhealth.R +import com.terratenientes.medicalhealth.data.Receta + +class RecetaDoctorViewAdapter(private var notes : List, context: Context, val cellClickListener: CellClickListener) : +RecyclerView.Adapter() { + class NoteViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView){ + val tituloReceta : TextView = itemView.findViewById(R.id.tv_titulo_receta) + val fechaReceta : TextView = itemView.findViewById(R.id.tv_fecha_receta) + val nombreReceta : TextView = itemView.findViewById(R.id.tv_nombre_paciente) + val btnEliminar: ImageView = itemView.findViewById(R.id.iv_eliminar_receta) + val btnModificar : ImageView = itemView.findViewById(R.id.iv_modificar_receta) + val btnEnviar : ImageView = itemView.findViewById(R.id.iv_correo_receta) + val pesoReceta : TextView = itemView.findViewById(R.id.tv_peso_paciente) + val edadReceta : TextView = itemView.findViewById(R.id.tv_edad_paciente) + val dosisReceta : TextView =itemView.findViewById(R.id.tv_dosis_medicamento) + val duracionReceta : TextView = itemView.findViewById(R.id.tv_duracion_receta) + + } + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): NoteViewHolder { + val view = LayoutInflater.from(parent.context).inflate(R.layout.rc_receta_medico_item, parent, false) + return NoteViewHolder(view) + } + + override fun getItemCount(): Int { + return notes.size + } + + override fun onBindViewHolder(holder: NoteViewHolder, position: Int) { + val note = notes[position] + holder.tituloReceta.text = note.nombreMedicamento + holder.fechaReceta.text = note.fecha + holder.dosisReceta.text=note.dosis + holder.duracionReceta.text=note.duracion + holder.nombreReceta.text=note.NombrePaciente + holder.pesoReceta.text= note.pesoPaciente.toString() + holder.edadReceta.text=note.edadPaciente.toString() + holder.btnEliminar.setOnClickListener{ + cellClickListener.onEliminarClickListener(position) + } + holder.btnModificar.setOnClickListener { + cellClickListener.onModifyClickListener(position) + } + holder.btnEnviar.setOnClickListener{ + cellClickListener.onEnviarCorreoClickListener(position) + } + } + + fun refreshData( newNotes : List){ + this.notes=newNotes + notifyDataSetChanged() + } +} \ No newline at end of file diff --git a/app/src/main/java/com/terratenientes/medicalhealth/adapters/RecetaViewAdapter.kt b/app/src/main/java/com/terratenientes/medicalhealth/adapters/RecetaViewAdapter.kt index 5e68ed8..a879518 100644 --- a/app/src/main/java/com/terratenientes/medicalhealth/adapters/RecetaViewAdapter.kt +++ b/app/src/main/java/com/terratenientes/medicalhealth/adapters/RecetaViewAdapter.kt @@ -18,8 +18,6 @@ class RecetaViewAdapter(private var notes : List, context: Context, val val fechaReceta : TextView = itemView.findViewById(R.id.tv_fecha_receta) val nombreReceta : TextView = itemView.findViewById(R.id.tv_nombre_paciente) val btnDescargar : ImageView = itemView.findViewById(R.id.iv_descargar_receta) - val btnEliminar: ImageView = itemView.findViewById(R.id.iv_eliminar_receta) - val btnModificar : ImageView = itemView.findViewById(R.id.iv_modificar_receta) val btnEnviar : ImageView = itemView.findViewById(R.id.iv_correo_receta) val pesoReceta : TextView = itemView.findViewById(R.id.tv_peso_paciente) val edadReceta : TextView = itemView.findViewById(R.id.tv_edad_paciente) @@ -49,12 +47,6 @@ class RecetaViewAdapter(private var notes : List, context: Context, val holder.btnDescargar.setOnClickListener{ cellClickListener.onCellClickListener(position) } - holder.btnEliminar.setOnClickListener{ - cellClickListener.onEliminarClickListener(position) - } - holder.btnModificar.setOnClickListener { - cellClickListener.onModifyClickListener(position) - } holder.btnEnviar.setOnClickListener{ cellClickListener.onEnviarCorreoClickListener(position) } diff --git a/app/src/main/res/layout/activity_recetas.xml b/app/src/main/res/layout/activity_recetas.xml new file mode 100644 index 0000000..866f4bd --- /dev/null +++ b/app/src/main/res/layout/activity_recetas.xml @@ -0,0 +1,24 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/rc_receta_item.xml b/app/src/main/res/layout/rc_receta_item.xml index 8cbb8a7..e862ace 100644 --- a/app/src/main/res/layout/rc_receta_item.xml +++ b/app/src/main/res/layout/rc_receta_item.xml @@ -96,35 +96,6 @@ app:layout_constraintVertical_bias="0.522" app:srcCompat="@android:drawable/ic_dialog_email" /> - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file