Professional Documents
Culture Documents
PROGRAMACIN DE APLICACIONES
PARA DISPOSITIVOS MVILES
PRESENTADO POR:
NELSON EDUARDO HERNNDEZ GERMN
UNIVERSIDAD DE EL SALVADOR
RECTORA
:
DRA. MARA ISABEL RODRGUEZ
SECRETARIA GENERAL
:
ING. MARIO ROBERTO NIETO LOVO
SECRETARIO
:
ING. JULIO ALBERTO PORTILLO
UNIVERSIDAD DE EL SALVADOR
FACULTAD DE INGENIERA Y ARQUITECTURA
ESCUELA DE INGENIERA DE SISTEMAS INFORMTICOS
Ttulo
Presentado por
Docente Director
:
ING. JULIO ALBERTO PORTILLO
Docente Director
Indice General
Introduccin.............................................................................................................................i
Objetivos.................................................................................................................................ii
Objetivo General ................................................................................................................ii
Objetivos Especficos .........................................................................................................ii
Alcance ..................................................................................................................................iii
Limitaciones ..........................................................................................................................iv
1.
2.
1.2.
1.3.
1.3.1.
1.3.2.
Descripcin de la Aplicacin.................................................................................. 9
2.1.1.
2.2.
Requerimientos....................................................................................................... 9
2.2.1.
2.2.2.
Atributos de la Aplicacin............................................................................ 10
2.2.3.
2.2.4.
Descripcin de Procesos............................................................................... 11
2.2.5.
2.2.6.
2.2.7.
2.2.8.
2.3.
Anlisis ................................................................................................................. 28
2.3.1.
Diagramas de Secuencia............................................................................... 29
2.3.2.
2.3.3.
2.3.4.
2.3.5.
2.4.
Diseo................................................................................................................... 74
3.
2.4.1.
2.4.2.
Diagramas de Colaboracin.......................................................................... 85
2.4.3.
2.4.4.
2.4.5.
2.5.
2.6.
2.7.
2.7.1.
2.7.2.
2.7.3.
2.7.4.
2.7.5.
3.2.
3.2.1.
3.2.2.
3.3.
3.3.1.
3.3.2.
3.4.
4.
3.4.1.
3.4.2.
3.5.
3.6.
3.7.
3.7.1.
3.7.2.
4.2.
4.3.
4.4.
Desinstalacin..................................................................................................... 212
Tablas
Tabla 2.1 Categoras de las funciones .................................................................................... 9
Tabla 2.2 Funciones de la aplicacin.................................................................................... 10
Tabla 2.3 Atributos de la aplicacin..................................................................................... 10
Tabla 2.4 Glosario conceptual .............................................................................................. 27
Tabla 2.5 Descripcin de archivos con conforman la aplicacin ....................................... 140
Tabla A. 1 Paquetes de los perfiles MID............................................................................ 224
Tabla A. 2 Descripcin de atributos del archivo .jar .......................................................... 243
Introduccin
Los grandes avances en la ciencia y la tecnologa han contribuido a la evolucin de los
sistemas computarizados, los dispositivos electrnicos se vuelven cada vez ms pequeos y
con mayores capacidades a la vez que su costo disminuye, volvindose asequibles para la
mayora de la poblacin. Hoy en da existen dispositivos dotados de capacidades de
procesamiento de datos que caben en la palma de la mano, mismos que son conocidos
como dispositivos mviles. Entre estos dispositivos se destacan los PDA (ayudante
personal digital por sus siglas en ingls) y los SmartPhones.
Los dispositivos mviles constituyen poderosas herramientas, que aunadas con recurso
humano calificado permiten lograr eficiencia y efectividad en las actividades de cualquier
tipo de organizacin, ya que tienden a reducir el tiempo y esfuerzo en la captura de datos lo
que finalmente se traduce en reduccin de costos.
Con el propsito de aportar tanto conocimiento en las, relativamente incipientes,
tecnologas relacionadas con el desarrollo de aplicaciones para dispositivos mviles; como
nuevas soluciones a nuestra sociedad, se ha desarrollado una aplicacin de tipo corporativa.
Dicha aplicacin est destinada a mdicos, de forma tal, que un galeno pueda llevar un
registro de los datos personales y caractersticas del paciente, el motivo de la consulta,
antecedentes personales y familiares relacionados con el padecimiento, as como las
distintas etapas del tratamiento.
Se han determinado los requerimientos para la aplicacin, se ha elaborado el anlisis y
diseo y se ha codificado empleado Java 2 Micro Edition (J2ME), el cual es un lenguaje de
programacin que permite una alta portabilidad, es decir, que las aplicaciones desarrolladas
pueden correr en diversos dispositivos. As mismo se ha elaborado la memoria del proyecto
siguiendo los lineamientos establecidos en la norma espaola UNE 157001:2002 segn lo
establece el Reglamento General para la Realizacin de los Proyectos de Fin de Carrera de
las Titulaciones de la Escuela Superior de Ingeniera de Cdiz.
ii
Objetivos
Objetivo General
Realizar una investigacin y aplicacin de las tecnologas disponibles relacionadas con el
desarrollo de aplicaciones para dispositivos mviles.
Objetivos Especficos
iii
Alcance
Para el desarrollo de aplicaciones para dispositivos mviles existen tecnologas propietarias
no liberadas y tecnologas liberadas de uso comercial, la investigacin se enmarcar en
estas ltimas ya que es sobre ellas que est disponible informacin para su explotacin.
La codificacin de la aplicacin se har empleando el lenguaje de programacin que sea
ms flexible, es decir aquel lenguaje que sea ms independiente del hardware, esto con el
propsito de garantizar la mayor portabilidad de las aplicaciones de un dispositivo a otro.
Es importante recalcar que existen diferentes tipos de aplicaciones para dispositivos
mviles, a saber: compras en contexto, mapas y navegacin, bsqueda y acceso a Internet,
comunicaciones y chat, juegos, y aplicaciones corporativas; no obstante la aplicacin que se
desarrollar para demostrar el uso de las tecnologas investigadas se centrar en el ltimo
tipo, es decir aplicaciones corporativas, tal es el caso de la aplicacin de fichas mdicas.
iv
Limitaciones
Para el desarrollo del proyecto se econtr la siguiente limitante.
Los gestores de bases de datos disponibles en el mercado para dispositivos mviles no
proveen un subconjunto de interfaces de programacin que permita establecer conexiones
desde las aplicaciones a la base de datos; excepto el gestor PointBase Micro, el cual en su
versin de evaluacin limita a 25 el nmero de registros por tabla.
1. Dispositivos Mviles
Cuando se habla de dispositivos mviles, se est refiriendo principalmente a los PDA
(asistentes personales digitales por sus siglas en ingls) y los SmartPhones o telfonos
inteligentes.
Un PDA es una especie de computadora de mano que inicialmente fue diseada con el
propsito de ser una agenda electrnica, pero actualmente es mucho ms que una agenda,
ya que en estos dispositivos es posible navegar en la web, ver y editar documentos, ver
pelculas, entre otras cosas. Fue en el ao de 1992 cuando Apple present el primer PDA,
sin embargo este fue un fracaso; el xito estaba reservado para la empresa Palm, la cual
present su versin de PDA en el ao de 1995. Actualmente existen PDAs que corren el
sistema operativo de Palm, otros que corren el sistema Pocket PC de Microsoft y algunos
que funcionan bajo el sistema operativo Symbian.
Por otro lado los SmartPhones son dispositivos que integran la funcionalidad de un telfono
mvil y un PDA, algunos de estos aparatos corren el sistema operativo Symbian.
Conforme transcurre el tiempo, salen al mercado nuevos dispositivos mviles que superan
en gran medida a sus antecesores en lo concerniente a capacidades de procesamiento y
almacenamiento. As mismo, en los ltimos aos se han liberado interfaces de
programacin que facilitan el desarrollo de aplicaciones que corran en estos dispositivos.
Symbian OS3
Symbian OS es un potente sistema operativo, no obstante, por razones ms bien de
marketing no alcanzado la popularidad debida. Por ahora, Nokia emplea Symbian para sus
telfonos celulares, sin embargo existen en el mercado otros dispositivos que tambin
utilizan este sistema, tal es el caso de Siemens.
La versin 9.3 del sistema operativo Symbian posee un kernel multi tarea, soporte de
telefona integrado, multimedia, protocolos de comunicacin, manejo de datos, soporte de
grficos en 3D, amplio soporte de Java, criptografa y manejo de certificados, envo de
msica a auriculares a travs de tecnologa inalmbrica.
en un
Palm PC SDK. Los lenguajes de programacin disponibles son Visual C++ y Visual Basic,
ambos en ediciones embedded.
HS Pascal
Con HS Pascal es posible producir programas ejecutables directamente sobre Palm OS. En
el mercado existen entornos de desarrollo que soportan HS Pascal, tal como Pythia y Poivre.
1.3.2. Gestores de Bases de Datos5
Un aspecto de vital importancia en el desarrollo de aplicaciones corporativas es el
almacenamiento, la mayora de aplicaciones de este tipo operan sobre datos,
almacenndolos, recuperndolos, actualizndolos, manipulndolos y eliminndolos.
Por defecto, los dispositivos mviles soportan un tipo de almacenamiento denominado
Record Management System (RMS), el cual es semejante a una base de datos, sin embargo
no soporta sentencias SQL. En RMS la unidad mnima de almacenamiento es el registro, y
su manipulacin, en el caso de J2ME, se logra a travs de una serie de mtodos propios de
un paquete denominado rms, el cual permite para operar directamente sobre los registros.
Una mejor opcin para almacenar datos en dispositivos mviles, lo constituyen los gestores
de bases de datos propios para dichos dispositivos y actualmente existen varias alternativas,
a continuacin se describen brevemente las principales.
HSQLDB
Es un motor de base de datos relacional escrito en Java, cuenta con un driver JDBC, soporta
ANSI-92 SQL. Ofrece bases de datos pequeas y rpidas con tablas basadas ya sea en
memoria o disco. Solamente necesita 170 KB de memoria para correr.
SQL Anywhere Studio
Es una plataforma de base de datos y sincronizacin desarrollada por iAnywhere Solutions
Inc. (Una subsidiaria de Sybase Inc.). Soporta SQL, proporciona manejo de datos y
Ver referencias: [SNS06], [OST06], [IBM06-1], [CWD06], [IBM06-2], [PED06-1], [ORC06-1], [ORC06-2],
2.2. Requerimientos
2.2.1. Funciones de la Aplicacin
Las funciones principales de la aplicacin se describen en la tabla 2.2, y se clasifican de
acuerdo a las categoras mostradas en la tabla 2.1.
CATEGORIA
Externa
Interna
DESCRIPCION
Estas funciones son las que al ser ejecutadas, pueden
ser observadas por el usuario.
La ejecucin de esta categora de funciones puede que
no sea visible para el usuario.
Tabla 2.1 Categoras de las funciones
REFERENCIA
R-001
R-002
R-003
R-004
R-005
FUNCION
Asignar nmero de expediente
Registrar datos personales del paciente
Registrar motivo de la consulta
Registrar datos del resultado del examen fsico del paciente
Almacenar diagnstico de la enfermedad
CATEGORIA
Interna
Externa
Externa
Externa
Externa
R-006
R-007
R-008
R-009
R-010
R-011
R-012
R-013
Almacenar tratamiento
Recuperar citas prximas
Almacenar evolucin del paciente
Registrar datos del resultado de exmenes de laboratorio
Recuperar y mostrar datos del paciente
Mostrar listado de citas
Mostrar listado de pacientes
Sincronizar datos entre dispositivo mvil y computadora de
escritorio
10
Externa
Interna
Externa
Externa
Externa
Externa
Externa
Interna
Paciente
Mdico
11
Crear expediente
Iniciar consulta
Diagnosticar enfermedad
Crear expediente
Iniciar consulta
Diagnosticar enfermedad
Prescribir tratamiento
Asignar cita
Obtener listado
Sincronizar datos
Sincronizar datos
12
civil, direccin, nmero de telfono fijo, nmero de telfono mvil, direccin de correo
electrnico, tipo y nmero de documento de identidad personal, ocupacin, nombre del
padre, nombre de la madre, nombre del cnyuge, nombre del responsable, direccin del
responsable, telfono del responsable, nombre de la persona que proporciona los datos,
parentesco de la persona que proporciona los datos, tipo y nmero de documento de
identidad de la persona que proporciona los datos.
Iniciar consulta
Este caso de uso inicia cuando el paciente se presenta al consultorio del mdico o cuando el
mdico hace una visita al paciente, entonces el mdico solicita los siguientes datos:
apellidos, nombres y/o nmero de documento de identidad personal. Este caso de uso
presupone que el expediente del paciente ya fue creado. El mdico indaga sobre el motivo
de la consulta.
Realizar examen fsico
Este caso de uso se presenta cuando el mdico mide el peso, estatura y las constantes
vitales del paciente: presin arterial, pulso, frecuencia respiratoria y temperatura.
Diagnosticar enfermedad
Este caso de uso sucede cuando el mdico indaga sobre los sntomas que presenta el
paciente, y los antecedentes personales y familiares del mismo. Y formula su diagnstico.
Prescribir tratamiento
Este caso de uso se da cuando el mdico prescribe los medicamentos y su dosificacin. E
indica la realizacin de exmenes de laboratorio.
Asignar cita
Este caso de uso sucede cuando el mdico le asigna al paciente la fecha y hora de la
prxima cita.
Determinar evolucin de la enfermedad
Este caso de uso inicia cuando el paciente se ha presentado al consultorio del mdico o
cuando el mdico ha realizado una visita al paciente, con el propsito de darle seguimiento
13
a una enfermedad previamente consultada, entonces el mdico indaga sobre los resultados
del tratamiento.
Obtener listado
Este caso de uso se presenta cuando el mdico requiere un listado de las citas para una
fecha determinada, o un listado de sus pacientes.
Sincronizar datos
Este caso de uso se da cuando el mdico quiere sincronizar los datos entre el dispositivo
mvil y la computadora de escritorio.
14
DETALLE DE LA TECNICA
DIAGRAMA DE CASOS DE USO
Un caso de uso representa un proceso comn e importante. Los casos de uso constituyen una tcnica para la
captura de requisitos potenciales de un nuevo sistema o una actualizacin software. Un diagrama de Casos de
Uso muestra las distintas operaciones que se esperan de una aplicacin o sistema y cmo se relaciona con su
entorno (usuarios u otras aplicaciones).
SIMBOLOGIA
Actor (usuario)
Mdico
Casos de uso
Crear expediente
15
Iniciar Consulta
Paciente
Realizar examen
fsico
Mdico
Diagnosticar
enfermedad
Determinar evolucin
de la enfermedad
ACE
Sincronizar datos
Prescribir
tratamiento
Obtener Listado
Asignar cita
16
Crear expediente
ACTORES
Paciente, Mdico
TIPO
Primario y esencial
DESCRIPCIN
Este caso de uso inicia cuando el paciente se presenta al consultorio del mdico o
cuando el mdico hace una visita al paciente. Y es primera vez que el mdico
atiende al paciente.
CASO DE USO
Iniciar consulta
ACTORES
Paciente, Mdico
TIPO
Primario y esencial
DESCRIPCIN
Este caso de uso inicia cuando el paciente se presenta al consultorio del mdico o
cuando el mdico hace una visita al paciente. Y el mdico indaga sobre el motivo
de la consulta.
CASO DE USO
ACTORES
Paciente, Mdico
TIPO
Primario y esencial
DESCRIPCIN
Este caso de uso se presenta cuando el mdico mide el peso, estatura y las
constantes vitales del paciente: presin arterial, pulso, frecuencia respiratoria y
temperatura.
CASO DE USO
Diagnosticar enfermedad
ACTORES
Paciente, Mdico
TIPO
Primario y esencial
DESCRIPCIN
Este caso de uso sucede cuando el mdico indaga sobre los sntomas que presenta
el paciente, y los antecedentes personales y familiares del mismo. Y formula su
diagnstico.
17
CASO DE USO
Prescribir tratamiento
ACTORES
Mdico
TIPO
Primario y esencial
DESCRIPCIN
CASO DE USO
Asignar cita
ACTORES
Mdico
TIPO
Primario y esencial
DESCRIPCIN
Este caso de uso sucede cuando el mdico le asigna al paciente la fecha y hora de la
prxima cita.
CASO DE USO
ACTORES
Mdico
TIPO
Primario y esencial
DESCRIPCIN
CASO DE USO
Obtener listado
ACTORES
Mdico
TIPO
Primario y esencial
DESCRIPCIN
Este caso de uso se presenta cuando el mdico requiere un listado de las citas para
una fecha determinada, o un listado de sus pacientes.
CASO DE USO
Sincronizar datos
ACTORES
Mdico, ACE
18
TIPO
Primario y esencial
DESCRIPCIN
Este caso de uso se da cuando el mdico quiere sincronizar los datos entre el
dispositivo mvil y la computadora de escritorio.
Crear expediente
ACTORES
Paciente, Mdico
PROPOSITO
VISION
Este caso de uso inicia cuando el paciente se presenta al consultorio del mdico o
cuando el mdico hace una visita al paciente. Y es primera vez que el mdico
atiende al paciente.
TIPO
Primario y esencial
REFERENCIAS
2.
4.
RESPUESTA DE LA APLICACION
3.
5.
CURSOS ALTERNATIVOS
---
---
19
CASO DE USO
Iniciar consulta
ACTORES
Paciente, Mdico
PROPOSITO
VISION
Este caso de uso inicia cuando el paciente se presenta al consultorio del mdico o
cuando el mdico hace una visita al paciente. Y el mdico indaga sobre el motivo
de la consulta.
TIPO
Primario y esencial
REFERENCIAS
Funciones: R-003
RESPUESTA DE LA APLICACION
1.
2.
3.
4.
5.
CURSOS ALTERNATIVOS
---
---
CASO DE USO
ACTORES
Paciente, Mdico
PROPOSITO
VISION
Este caso de uso se presenta cuando el mdico mide el peso, estatura y las
constantes vitales del paciente: presin arterial, pulso, frecuencia respiratoria y
temperatura.
TIPO
Primario y esencial
REFERENCIAS
Funciones: R-004
RESPUESTA DE LA APLICACION
20
4.
CURSOS ALTERNATIVOS
---
---
CASO DE USO
Diagnosticar enfermedad
ACTORES
Paciente, Mdico
PROPOSITO
VISION
Este caso de uso sucede cuando el mdico indaga sobre los sntomas que presenta
el paciente, y los antecedentes personales y familiares del mismo. Y formula su
diagnstico.
TIPO
Primario y esencial
REFERENCIAS
Funciones: R-005
RESPUESTA DE LA APLICACION
1.
2.
3.
la
5.
La aplicacin almacena
personales y familiares.
los
antecedentes
6.
CURSOS ALTERNATIVOS
Paso 3. El mdico realiza diagnstico de la
enfermedad y refiere al paciente a un hospital, e
ingresa los datos respectivos en la aplicacin.
del
21
CASO DE USO
Prescribir tratamiento
ACTORES
Mdico
PROPOSITO
VISION
TIPO
Primario y esencial
REFERENCIAS
RESPUESTA DE LA APLICACION
1.
2.
3.
La aplicacin almacena
tratamiento prescrito.
los
datos
del
CURSOS ALTERNATIVOS
---
---
CASO DE USO
Asignar cita
ACTORES
Mdico
PROPOSITO
VISION
Este caso de uso sucede cuando el mdico le asigna al paciente la fecha y hora de
la prxima cita.
TIPO
Primario y esencial
REFERENCIAS
Funciones: R-007
RESPUESTA DE LA APLICACION
1.
2.
3.
4.
22
cita.
CURSOS ALTERNATIVOS
---
---
CASO DE USO
ACTORES
Mdico, Paciente
PROPOSITO
VISION
TIPO
Primario y esencial
REFERENCIAS
RESPUESTA DE LA APLICACION
1.
2.
3.
6.
5.
CURSOS ALTERNATIVOS
Paso 4. El mdico ingresa los datos de la evolucin
de la enfermedad, los resultados de los exmenes de
laboratorio y refiere al paciente a un hospital.
CASO DE USO
Obtener listado
ACTORES
Mdico
23
PROPOSITO
VISION
Este caso de uso se presenta cuando el mdico requiere un listado de las citas para
una fecha determinada, o un listado de sus pacientes.
TIPO
Primario y esencial
REFERENCIAS
RESPUESTA DE LA APLICACION
1.
2.
3.
4.
7.
CURSOS ALTERNATIVOS
---
---
CASO DE USO
Sincronizar datos
ACTORES
Mdico, ACE
PROPOSITO
VISION
Este caso de uso se da cuando el mdico quiere sincronizar los datos entre el
dispositivo mvil y la computadora de escritorio.
TIPO
Primario y esencial
REFERENCIAS
Funciones: R-013
2.
RESPUESTA DE LA APLICACION
3.
5.
24
4.
La aplicacin
sincronizacin.
6.
CURSOS ALTERNATIVOS
---
---
hace
la
peticin
de
25
DETALLE DE LA TECNICA
MODELO CONCEPTUAL
El modelo concetual representa de manera grfica la relacin entre los diferentes conceptos u objetos
encontrados a partir de la descripcin de los casos de uso.
SIMBOLOGIA
Objeto
Expediente
Nmero
Fecha
Asociaciones
Nombre de la relacin o asociacin
Multiplicidad
Multiplicidad
A
Registra
1..*
26
Tiene
Formado por
1..*
Paciente
Expediente
1
Posee
Nombre
Direccin
Telfono
Nmero
Fecha
Antecedentes
Posee 1..*
Tipo
Descripcin
Diagnstico
1..*
Tratamiento
Iniciada por
Descripcin
1..*
Medicamento
Dosificacin
1
Consulta
Tiene
1
Presenta
Evolucin
1
Fecha
Descripcin
Tiene
Fecha
Descripcin
1
1
1
Referida a
Registra
Hospital
1
1
Comprobada por
1..*
Examen
Constantes
Fisiolgicas
Peso
Estatura
Presin arterial
Pulso
Frecuencia respiratoria
Nombre
Resultado
Cita
Listado
1..*
1..*
Nombre
Formado por
Fecha
Hora
1
Nombre
27
DESCRIPCION
Persona que adolece una enfermedad y que se presenta al mdico para que
ste lo ausculte.
Informacin relativa a un paciente, que incluye sus datos personales y la
fecha de la primera consulta.
Contiene los antecedentes personales del paciente y los antecedentes
familiares relacionados con la enfermedad que padece.
Consiste en el dictamen emitido por el mdico respecto de la enfermedad
que padece el paciente.
Formado por la prescripcin de medicamentos con su respectiva
dosificacin.
Contiene una descripcin del motivo por el cual el paciente se presenta ante
el mdico.
Est formada por las diversas etapas que atraviesa el paciente, despus de
seguir el tratamiento ordenado por el mdico.
Resultado de los anlisis de laboratorio ordenados por el mdico.
Contiene el peso, estatura y constantes vitales (presin arterial, pulso,
frecuencia respiratoria y temperatura) del paciente.
Centro de atencin de salud al cual es referido un paciente para un
tratamiento exhaustivo.
Formada por la fecha y hora de la prxima entrevista con el paciente.
Puede estar formado por una lista de citas o por una lista de pacientes.
Tabla 2.4 Glosario conceptual
28
2.3. Anlisis
DETALLE DE LA TECNICA
DIAGRAMAS DE SECUENCIA
Muestran de forma grfica los eventos que se producen en la interaccin entre los actores y el sistema o
aplicacin, o entre objetos.
Los diagramas de secuencia muestran el intercambio de mensajes y ponen especial nfasis en el orden y el
momento en que se envan los mensajes a los objetos.
En los diagramas de secuencia, los objetos estn representados por rectngulos, el eje de tiempo es vertical,
incrementndose hacia abajo, de forma que los mensajes son enviados de un objeto a otro en forma de
flechas con los nombres de la operacin y los parmetros.
29
Aplicacin de fichas
mdicas
2.
Mdico
crearExpediente(fecha)
3.
4.
5.
agregarDatosPaciente(nombre, ... )
Aplicacin de fichas
mdicas
2.
3.
4.
5.
Mdico
crearConsulta()
agregarMotivoConsulta(fecha, descripcion )
Aplicacin de fichas
mdicas
2.
3.
Mdico
agregarConstantes(estatura, presion, )
Aplicacin de fichas
mdicas
2.
3.
4.
5.
6.
30
Mdico
agregarAntecedentePersonal(tipo, descrp)
agregarDiagnostico(descripcion)
31
Aplicacin de fichas
mdicas
2.
3.
4.
5.
6.
Mdico
agregarAntecedentePersonal(tipo, descrp)
agregarDiagnostico(descripcion)
agregarReferencia(hospital)
Aplicacin de fichas
mdicas
2.
3.
Mdico
agregarTratamiento (medicam, dosificacion)
32
Aplicacin de fichas
mdicas
Mdico
2.
3.
4.
crearCita()
mostrarCitas()
agregarCita(fecha, hora)
Aplicacin de fichas
mdicas
2.
3.
4.
5.
agregarEvolucion(fecha, descripcin)
agregarExamen (nombre, resultado)
33
Aplicacin de fichas
mdicas
Mdico
2.
3.
4.
5.
agregarEvolucion(fecha, descripcin)
agregarExamen (nombre, resultado)
agregarReferencia(hospital)
Aplicacin de fichas
mdicas
3.
4.
5.
6.
Mdico
obtenerListado( )
mostrarTipoListado( )
seleccionarListado(tipo, fechaInicio, fechaFin)
mostrarListado( )
34
2.
La aplicacin en la computadora de escritorio (ACE) escucha las peticiones de sincronizacin provenientes del
dispositivo mvil.
3.
4.
5.
6.
Aplicacin de fichas
mdicas
ACE
Mdico
Mdico
iniciarSincronizacinACE( )
iniciarSincronizacin( )
sincronizar( )
mostrarMensaje(mensaje)
35
DETALLE DE LA TECNICA
CONTRATOS DE OPERACION
Los contratos de operacin contribuyen a definir el sistema o aplicacin, ya que, describen el efecto que
tienen las operaciones sobre el sistema.
crearExpediente(fecha)
agregarDatosPaciente(nombre,)
crearConsulta()
agregarMotivoConsulta(fecha, descripcin)
agregarConstantes(estatura, presion, )
agregarAntecedentePersonal(tipo, descripcin)
agregarDiagnostico(descripcin)
agregarReferencia(hospital)
agregarTratamiento(medicamento, dosificacin)
crearCita()
mostrarCitas()
agregarCita(fecha, hora)
agregarEvolucin(fecha, descripcin)
agregarExamen(nombre, resultado)
obtenerListado()
mostrarTipoListado()
mostrarListado()
iniciarSincronizacionACE()
iniciarSincronizacion()
sincronizar()
36
37
mostrarMensaje(mensaje)
NOMBRE
crearExpediente(fecha)
RESPONSABILIDADES
REFERENCIAS
NOTAS
---
EXCEPCIONES
---
SALIDA
---
PRE-CONDICIONES
--POST-CONDICIONES
NOMBRE
RESPONSABILIDADES
REFERENCIAS
NOTAS
---
EXCEPCIONES
---
SALIDA
---
PRE-CONDICIONES
POST-CONDICIONES
38
Se han modificado los atributos del paciente: apellidos, nombres, sexo, fechaNac, estadoCivil,
direccion, telefono, movil, email, tipoDoc, numeroDoc, ocupacion, padre, madre, conyuge,
responsable, direccionResp, telefonoResp, nombrePDatos, parentescoPDatos, tipoDocPDatos,
numeroDocPDatos.
NOMBRE
crearConsulta()
RESPONSABILIDADES
REFERENCIAS
NOTAS
---
EXCEPCIONES
---
SALIDA
---
PRE-CONDICIONES
POST-CONDICIONES
NOMBRE
agregarMotivoConsulta(fecha, descripcin)
RESPONSABILIDADES
REFERENCIAS
NOTAS
---
EXCEPCIONES
---
SALIDA
---
PRE-CONDICIONES
39
POST-CONDICIONES
NOMBRE
agregarConstantes(estatura,
peso,
presionArterial,
pulso,
frecuenciaRespiratoria)
RESPONSABILIDADES
REFERENCIAS
NOTAS
---
EXCEPCIONES
---
SALIDA
---
PRE-CONDICIONES
POST-CONDICIONES
NOMBRE
agregarAntecedentesPersonales(tipo, descripcin)
RESPONSABILIDADES
REFERENCIAS
NOTAS
---
EXCEPCIONES
---
SALIDA
40
---
PRE-CONDICIONES
POST-CONDICIONES
NOMBRE
RESPONSABILIDADES
REFERENCIAS
NOTAS
---
EXCEPCIONES
---
SALIDA
---
PRE-CONDICIONES
POST-CONDICIONES
NOMBRE
agregarDiagnostico(descripcin)
RESPONSABILIDADES
REFERENCIAS
NOTAS
---
EXCEPCIONES
---
SALIDA
---
PRE-CONDICIONES
POST-CONDICIONES
NOMBRE
agregarReferencia(hospital)
RESPONSABILIDADES
REFERENCIAS
NOTAS
---
EXCEPCIONES
---
SALIDA
---
PRE-CONDICIONES
POST-CONDICIONES
41
NOMBRE
agregarTratamiento(medicamento, dosificacin)
RESPONSABILIDADES
REFERENCIAS
NOTAS
---
EXCEPCIONES
---
SALIDA
---
PRE-CONDICIONES
POST-CONDICIONES
NOMBRE
crearCita()
RESPONSABILIDADES
REFERENCIAS
NOTAS
---
EXCEPCIONES
---
SALIDA
---
PRE-CONDICIONES
POST-CONDICIONES
42
NOMBRE
mostrarCitas()
RESPONSABILIDADES
REFERENCIAS
NOTAS
---
EXCEPCIONES
---
SALIDA
PRE-CONDICIONES
POST-CONDICIONES
---
NOMBRE
agregarCita(fecha, hora)
RESPONSABILIDADES
REFERENCIAS
NOTAS
---
EXCEPCIONES
---
SALIDA
---
PRE-CONDICIONES
POST-CONDICIONES
43
NOMBRE
agregarEvolucin(fecha, descripcin)
RESPONSABILIDADES
REFERENCIAS
NOTAS
---
EXCEPCIONES
---
SALIDA
---
PRE-CONDICIONES
POST-CONDICIONES
NOMBRE
agregarExamen(nombre, resultado)
RESPONSABILIDADES
REFERENCIAS
NOTAS
---
EXCEPCIONES
---
SALIDA
---
PRE-CONDICIONES
44
POST-CONDICIONES
NOMBRE
obtenerListado()
RESPONSABILIDADES
REFERENCIAS
NOTAS
---
EXCEPCIONES
---
SALIDA
---
PRE-CONDICIONES
--POST-CONDICIONES
NOMBRE
mostrarTipoListado()
RESPONSABILIDADES
REFERENCIAS
NOTAS
---
EXCEPCIONES
---
SALIDA
PRE-CONDICIONES
--POST-CONDICIONES
45
---
NOMBRE
RESPONSABILIDADES
REFERENCIAS
NOTAS
---
EXCEPCIONES
---
SALIDA
---
PRE-CONDICIONES
POST-CONDICIONES
NOMBRE
mostrarListado()
RESPONSABILIDADES
REFERENCIAS
NOTAS
---
EXCEPCIONES
---
SALIDA
PRE-CONDICIONES
POST-CONDICIONES
---
46
NOMBRE
iniciarSincronizacionACE()
RESPONSABILIDADES
REFERENCIAS
NOTAS
---
EXCEPCIONES
---
SALIDA
---
47
PRE-CONDICIONES
--POST-CONDICIONES
---
NOMBRE
iniciarSincronizacion()
RESPONSABILIDADES
REFERENCIAS
NOTAS
---
EXCEPCIONES
---
SALIDA
---
PRE-CONDICIONES
POST-CONDICIONES
---
NOMBRE
sincronizar()
RESPONSABILIDADES
REFERENCIAS
NOTAS
---
EXCEPCIONES
---
SALIDA
---
48
PRE-CONDICIONES
POST-CONDICIONES
Se han sincronizado los datos entre la base de datos en la computadora de escritorio y la base de
datos en el dispositivo mvil
NOMBRE
mostrarMensaje(mensaje)
RESPONSABILIDADES
REFERENCIAS
NOTAS
---
EXCEPCIONES
---
SALIDA
PRE-CONDICIONES
--POST-CONDICIONES
---
49
DETALLE DE LA TECNICA
DIAGRAMAS DE ESTADO
Los diagramas de estado se emplean para representar el estado y transisciones del sistema o estados de los
objetos durante su vida en una aplicacin.
50
Diagnosticar enfermedad
Ingresando diagnstico
Prescribir tratamiento
Asignando cita
Entrada / Mostrar citas programadas
Cita asignada
Ingresando tratamiento
51
Prescribir tratamiento
Asignando cita
Entrada / Mostrar citas programadas
Cita asignada
Ingresando tratamiento
52
DETALLE DE LA TECNICA
DIAGRAMAS DE ACTIVIDADES
Los diagramas de actividades describen la secuencia de actividades en un sistema o aplicacin. Las
actividades se representan por medio de rectngulos y la secuencia es descrita por medio de flechas.
53
Mdico
Registrar nuevo
paciente
Paciente
Crear expediente,
asignar correlativo y
fecha
Asignar apellidos,
nombres,
Nueva consulta
Aplicacin
Consulta
Crear consulta
Asignar motivo de la
consulta
54
Consulta
Mdico
Registrar constantes
Crear constantes
Asignar estatura,
presin,
Registrar diagnstico
Consulta
Diagnstico
Crear diagnstico
Asignar descripcin
Crear antecedentes
Antecedentes
Asignar tipo y
descripcin
55
Registrar tratamiento
Consulta
Tratamiento
Crear tratamiento
Asignar
medicamento, dosif
Asignar cita
Ingresar cita
Aplicacin
Cita
Mostrar citas
56
Registrar evolucin
Examen
Evolucin
Consulta
Mdico
Crear evolucin
Asignar fecha y
descripcin
Asignar nombre y
resultado
Crear examen
Obtener listado
Aplicacin
Listado
Mostrar tipos de
listado
Tipo: pacientes
Elegir tipo e ingresar
parmetros
Tipo: citas
Obtener lista de
pacientes
57
Iniciar sincronizacin
en ACE
Aplicacin
Iniciar servicio de
sincronizacin
Iniciar peticin de
sincronizacin
Iniciar sincronizacin
en Mvil
Sincronizar datos
58
DETALLE DE LA TECNICA
MODELO CONCEPTUAL REFINADO
Despus de desarrollar las tcnicas correspondientes al anlisis, se debe realizar un refinamiento del modelo
conceptual, ya que, se tiene una mejor comprensin del dominio del problema. Es posible identificar nuevos
objetos, nuevas asociaciones, nuevos atributos o determinar que algunos objetos pueden ser representados de
diferente forma.
59
Tiene
Formado por
1..*
Paciente
Expediente
1
Posee
Nombre
Direccin
Telfono
Nmero
Fecha
1..*
Posee 1..*
Tipo
Descripcin
1
Posee
Diagnstico
Iniciada por
Descripcin
Tipo
Descripcin
Parentesco
Consulta
1
1
Presenta
Evolucin
Tiene
Fecha
Descripcin
1..*
Tratamiento
1
1
1
Fecha
Descripcin
Asociada a
Medicamento
Dosificacin
Registra
1
Comprobada por
1..*
Constantes
Fisiolgicas
Examen
Referencia
Hospital
Nombre
Telfono
Fecha
Peso
Estatura
Presin arterial
Pulso
Frecuencia respiratoria
Nombre
Resultado
Asociada a
Cita
Listado
1..*
1..*
Antecedentes
Familiares
1..*
1
Tiene
Antecedentes
Personales
Formado por
Fecha
Hora
FechaInicio
FechaFin
60
Descripcin de atributos
OBJETO
expediente
DESCRIPCION
numero
fecha
Numrico
LONGITUD
4 caracteres
Correlativo
FORMATO
####
Fecha
LONGITUD
N/A
FORMATO
dd/mm/aa
OBJETO
paciente
DESCRIPCION
apellidos
nombres
Alfabtico
LONGITUD
50 caracteres
N/A
FORMATO
Alfabtico
sexo
fechaNac
estadoCivil
direccion
61
LONGITUD
50 caracteres
N/A
FORMATO
Alfanumrico
LONGITUD
1 caracter
N/A
FORMATO
Fecha
LONGITUD
N/A
N/A
FORMATO
dd/mm/aa
Alfabtico
LONGITUD
10 caracteres
N/A
FORMATO
Alfanumrico
LONGITUD
50 caracteres
N/A
FORMATO
telefono
movil
tipoDoc
62
Alfanumrico
LONGITUD
8 caracteres
N/A
FORMATO
########
Alfanumrico
LONGITUD
8 caracteres
N/A
FORMATO
##########
Alfanumrico
LONGITUD
50 caracteres
N/A
FORMATO
Alfanumrico
LONGITUD
9 caracteres
DUI
FORMATO
numeroDoc
ocupacion
padre
madre
conyuge
63
Alfanumrico
LONGITUD
20 caracteres
N/A
FORMATO
Alfanumrico
LONGITUD
30 caracteres
N/A
FORMATO
Alfabtico
LONGITUD
50 caracteres
N/A
FORMATO
Alfabtico
LONGITUD
50 caracteres
N/A
FORMATO
Alfabtico
responsable
direccionResp
telefonoResp
nombrePDatos
64
LONGITUD
50 caracteres
N/A
FORMATO
Alfabtico
LONGITUD
50 caracteres
N/A
FORMATO
Alfanumrico
LONGITUD
50 caracteres
N/A
FORMATO
Alfanumrico
LONGITUD
8 caracteres
N/A
FORMATO
########
Alfabtico
LONGITUD
50 caracteres
parentescoPDatos
tipoDocPDatos
numeroDocPDatos
65
N/A
FORMATO
Alfabtico
LONGITUD
10 caracteres
N/A
FORMATO
Alfanumrico
LONGITUD
9 caracteres
DUI
FORMATO
Alfanumrico
LONGITUD
20 caracteres
N/A
FORMATO
OBJETO
antecedentesPersonales
DESCRIPCION
tipo
descripcin
66
Alfabtico
LONGITUD
13 caracteres
N/A
FORMATO
Alfanumrico
LONGITUD
50 caracteres
N/A
FORMATO
OBJETO
antecedentesFamiliares
DESCRIPCION
tipo
descripcin
Alfabtico
LONGITUD
13 caracteres
N/A
FORMATO
Alfanumrico
LONGITUD
50 caracteres
N/A
FORMATO
parentesco
67
Alfabtico
LONGITUD
6 caracteres
N/A
FORMATO
OBJETO
diagnostico
DESCRIPCION
descripcin
Alfanumrico
LONGITUD
200 caracteres
N/A
FORMATO
OBJETO
consulta
DESCRIPCION
fecha
Fecha
LONGITUD
N/A
dd/mm/aa
FORMATO
descripcin
68
Alfanumrico
LONGITUD
100 caracteres
N/A
FORMATO
OBJETO
evolucion
DESCRIPCION
fecha
descripcin
Fecha
LONGITUD
N/A
FORMATO
dd/mm/aa
Alfanumrico
LONGITUD
200 caracteres
N/A
FORMATO
OBJETO
tratamiento
DESCRIPCION
medicamento
dosificacion
69
Alfanumrico
LONGITUD
50 caracteres
N/A
FORMATO
Alfanumrico
LONGITUD
50 caracteres
N/A
FORMATO
OBJETO
examen
DESCRIPCION
nombre
resultado
Alfanumrico
LONGITUD
25 caracteres
N/A
FORMATO
Alfanumrico
LONGITUD
25 caracteres
N/A
FORMATO
70
OBJETO
constantesFisiologicas
DESCRIPCION
peso
estatura
presionArterialSistlica
presionArterialDiastlica
numrico
LONGITUD
3 dgitos
N/A
FORMATO
numrico
LONGITUD
3 dgitos
N/A
FORMATO
numrico
LONGITUD
3 dgitos
N/A
FORMATO
numrico
LONGITUD
2 dgitos
N/A
71
FORMATO
frecuenciaRespiratoria
Numrico
LONGITUD
3 dgitos
N/A
FORMATO
numrico
LONGITUD
2 dgitos
N/A
FORMATO
OBJETO
referencia
DESCRIPCION
fecha
Fecha
LONGITUD
N/A
FORMATO
dd/mm/aa
OBJETO
hospital
DESCRIPCION
72
ATRIBUTOS
nombre
telefono
Alfanumrico
LONGITUD
50 caracteres
N/A
FORMATO
Alfanumrico
LONGITUD
8 caracteres
N/A
FORMATO
########
OBJETO
cita
DESCRIPCION
fecha
hora
Fecha
LONGITUD
N/A
N/A
FORMATO
dd/mm/aa
Tiempo
LONGITUD
N/A
N/A
FORMATO
hh:mm
73
OBJETO
listado
DESCRIPCION
fechaInicio
fechaFin
Fecha
LONGITUD
N/A
N/A
FORMATO
dd/mm/aa
Fecha
LONGITUD
N/A
N/A
FORMATO
dd/mm/aa
74
2.4. Diseo
DETALLE DE LA TECNICA
DESCRIPCION DE CASOS DE USO REALES
Aqu se hace una descripcin de los casos de uso, e incluye la interaccin con las interfaces de usuario que
tendr el sistema o aplicacin.
75
CASO DE USO
Crear expediente
ACTORES
Paciente, Mdico
PROPOSITO
VISION
Este caso de uso inicia cuando el paciente se presenta al consultorio del mdico
o cuando el mdico hace una visita al paciente. Y es primera vez que el mdico
atiende al paciente.
TIPO
Primario y real
REFERENCIAS
RESPUESTA DE LA APLICACION
1.
2.
3.
4.
5.
6.
7.
76
CURSOS ALTERNATIVOS
Paso 4: El mdico cancela el ingreso de datos, para lo
cual selecciona el botn cancelar de la pantalla
Ventana_crearExpediente (figura 2.20 a).
Paso 6: El mdico cancela el ingreso de datos, para lo
cual selecciona el botn cancelar de la pantalla
Ventana_crearExpediente (figura 2.20 b).
CASO DE USO
Iniciar consulta
ACTORES
Paciente, Mdico
PROPOSITO
VISION
Este caso de uso inicia cuando el paciente se presenta al consultorio del mdico
o cuando el mdico hace una visita al paciente. Y el mdico indaga sobre el
motivo de la consulta.
TIPO
Primario y real
REFERENCIAS
Funciones: R-003
2.
4.
RESPUESTA DE LA APLICACION
3.
CURSOS ALTERNATIVOS
---
---
La aplicacin presenta la
Ventana_consulta (figura 2.21).
pantalla
77
CASO DE USO
ACTORES
Paciente, Mdico
PROPOSITO
VISION
Este caso de uso se presenta cuando el mdico mide el peso, estatura y las
constantes vitales del paciente: presin arterial, pulso, frecuencia respiratoria y
temperatura.
TIPO
Primario y real
REFERENCIAS
Funciones: R-004
RESPUESTA DE LA APLICACION
1.
3.
CURSOS ALTERNATIVOS
---
---
CASO DE USO
Diagnosticar enfermedad
ACTORES
Paciente, Mdico
PROPOSITO
VISION
Este caso de uso sucede cuando el mdico indaga sobre los sntomas que
presenta el paciente, y los antecedentes personales y familiares del mismo. Y
formula su diagnstico.
TIPO
Primario y real
REFERENCIAS
Funciones: R-005
RESPUESTA DE LA APLICACION
78
3.
4.
5.
6.
La aplicacin muestra la
Ventana_antecedentesPersonales
2.17).
7.
8.
9.
de
pantalla
(figura
la
CASO DE USO
Prescribir tratamiento
ACTORES
Mdico
PROPOSITO
79
VISION
TIPO
Primario y real
REFERENCIAS
RESPUESTA DE LA APLICACION
1.
2.
3.
4.
5.
6.
7.
8.
9.
salir
la
CURSOS ALTERNATIVOS
---
---
CASO DE USO
Asignar cita
ACTORES
Mdico
PROPOSITO
VISION
Este caso de uso sucede cuando el mdico le asigna al paciente la fecha y hora
de la prxima cita.
TIPO
Primario y real
REFERENCIAS
Funciones: R-007
80
RESPUESTA DE LA APLICACION
1.
cita
de
3.
2.
4.
CURSOS ALTERNATIVOS
---
---
CASO DE USO
ACTORES
Mdico, Paciente
PROPOSITO
VISION
TIPO
Primario y real
REFERENCIAS
2.
3.
4.
RESPUESTA DE LA APLICACION
5.
La
aplicacin
muestra
la
pantalla
81
evolucin de la enfermedad.
6.
7.
9.
salir
de
8.
pantalla
CURSOS ALTERNATIVOS
Paso 15:
El mdico realiza diagnstico de la enfermedad y
refiere al paciente a un hospital e ingresa el
diagnstico en la caja de texto K de
Ventana_consultaEvolucion
(figura
2.17)
y
selecciona el hospital al que referir al paciente de la
lista desplegable L y selecciona el botn aceptar.
CASO DE USO
Obtener listado
ACTORES
Mdico
PROPOSITO
VISION
Este caso de uso se presenta cuando el mdico requiere un listado de las citas
para una fecha determinada, o un listado de sus pacientes.
TIPO
Primario y real
REFERENCIAS
82
RESPUESTA DE LA APLICACION
1.
2.
3.
4.
La aplicacin muestra la
Ventana_listado (figura 2.21).
pantalla
CURSOS ALTERNATIVOS
---
---
CASO DE USO
Sincronizar datos
ACTORES
Mdico, ACE
PROPOSITO
VISION
Este caso de uso se da cuando el mdico quiere sincronizar los datos entre el
dispositivo mvil y la computadora de escritorio.
TIPO
Primario y real
REFERENCIAS
Funciones: R-013
2.
3.
5.
CURSOS ALTERNATIVOS
RESPUESTA DE LA APLICACION
4.
La aplicacin
sincronizacin.
hace
la
peticin
de
6.
---
83
---
84
DETALLE DE LA TECNICA
DIAGRAMAS DE COLABORACION
Un diagrama de colaboracin es semejante al diagrama de secuencia, en el sentido de que representa la
interaccin entre los objetos.
Los objetos se representan por medio de rectngulos y los mensajes enviados de un objeto a otro mediante
flechas, mostrando el nombre del mensaje, los parmetros y la secuencia del mensaje.
crearExpediente
agregarDatosPaciente
Iniciar Consulta
crearConsulta
agregarMotivoConsulta
agregarReferencia
agregarConstantes
Diagnosticar enfermedad
agregarAntecedentePersonal
agregarAntecedenteFamiliar
agregarDiagnostico
Prescribir tratamiento
agregarTratamiento
Asignar cita
crearCita
agregarEvolucin
agregarExamen
Obtener listado
obtenerListado
85
Sincronizar datos
sincronizar
Editar
editarExpediente
editarConsulta
editarEvolucion
86
87
crearExpediente( )
: Aplicacin
1: crearExpediente(correlativo, fecha)
: expediente
Operacin: agregarDatosPaciente
agregarDatosPaciente(nombre, )
E: expediente
crearConsulta( )
: Aplicacin
1: crearConsulta(fecha)
: consulta
Operacin: agregarMotivoConsulta
agregarDatosPaciente(descripcion )
C: consulta
Operacin: agregarReferencia
agregarReferencia(hospital )
C: consulta
agregarConstantes(estatura,.. )
C: consulta
agregarAntecedentePersonal ( )
E: expediente
1: crearAntecedentePersonal(tipo, descripcion)
: AntecedentesPersonales
Operacin: agregarAntecedenteFamiliar
agregarAntecedenteFamiliar ( )
E: expediente
1: crearAntecedenteFamiliar(tipo, )
: AntecedentesFamiliares
88
89
Operacin: agregarDiagnostico
agregarDiagnostico(descripcion)
C: consulta
agregarTratamiento ( )
C: consulta
1: crearTratamiento(medicamento, dosificacion)
: tratamiento
crearCita( )
: Aplicacin
1: crearCita(fecha, hora)
: cita
crearEvolucion( )
: Aplicacin
1: crearEvolucion(fecha, descripcion)
: evolucion
Operacin: agregarExamen
agregarExamen(nombre, resultado )
E: evolucion
obtenerListado( )
: Aplicacin
1: mostrarListado(tipo, fechaInicio, fechafin)
: listado
90
91
1: sincronizar ( )
: ACE
3: sincronizar()
2: sincronizar ( )
: Aplicacin
1a [accion=0]: eliminarExpediente(numero)
1b [accion=1]: modificarExpediente(numero, datos)
: expediente
: expediente
92
Operacin: editarConsulta
editarConsulta(id, accion, datos)
: Aplicacin
1a [accion=0]: eliminarConsulta(id)
: consulta
: consulta
Operacin: editarEvolucion
editarEvolucion(id, accion, datos)
: Aplicacin
1a [accion=0]: eliminarEvolucion(id)
: evolucion
: evolucion
93
DETALLE DE LA TECNICA
DIAGRAMA DE CLASES
Un diagrama de clases presenta las clases del sistema o aplicacin con sus relaciones. La definicin de clase
incluye atributos y operaciones.
SIMBOLOGIA
Clase
cita
Nombre de la clase
- fecha
- hora
Atributos
+ fijarFecha(fecha)
+ fijarHora(hora)
+ obtenerFecha( )
+ obtenerHora( )
Operaciones
Relaciones estructurales
Nombre de la relacin
Multiplicidad
Multiplicidad
A
Registra
1..*
94
- fecha
- hora
- tipo
- descripcion
1..*
+ fijarFecha(fecha)
+ fijarHora(hora)
+ obtenerFecha( )
+ obtenerHora( )
1..*
+ fijarTipo(tipo)
+ fijarDescripcion(descripcion)
+ obtenerTipo( )
+ obtenerDescripcion( )
posee
registra
1..*
1
expediente
- numero
- fecha
- apellidos
- nombres
antecedentePersonal
- parentesco
+ crearNuevoExpediente(numero, fecha)
+ fijarDatos(apellidos, nombres, )
+ obtenerNumero( )
+ obtenerDatos( )
agrega
1..*
tratamiento
1
tiene
- medicamento
- dosificacion
agrega
1..*
1..*
antecedenteFamiliar
listado
- tipo
- fechaInicio
- fechaFin
+ fijarTipo(tipo)
+ fijarFechasInicio(fechaInicio)
+ fijarFechaFin(fechaFin)
+ obtenerTipo( )
+ obtenerFechaInicio( )
+ obtenerFechaFin( )
consulta
- fecha
- descripcin
- diagnostico
- peso
- estatura
- presionArterial
- pulso
- frecuenciaRespiratoria
- referencia
+ crearNuevaConsulta(fecha)
+ fijarDescripcion(descripcion)
+ fijarConstantes(constantes)
+ fijarDiagnostico(diagnostico)
+ fijarReferencia(hospital)
+ obtenerFecha
+ obtenerDescripcion( )
+ obtenerConstantes()
+ obtenerDiagnostico()
+ obtenerReferencia()
+ fijarMedicamento (nombre)
+ fijarDosificacion(dosis)
+ obtenerMedicamento( )
+ obtenerDosificacion( )
registra
hospital
1
- nombre
- telefono
1
registra
+ fijarNombre (nombre)
+ fijarTelefono(telefono)
+ obtenerNombre( )
+ obtenerTelefono( )
examen
1..*
evolucion
1
registra
- nombre
- resultado
+ fijarNombre (nombre)
+ fijarResultado(resultado)
+ obtenerNombre( )
+ obtenerResultado( )
95
Aplicando 1FN
El dominio de CONSULTA, EVOLUCION, ANTECEDENTES, TRATAMIENTO,
EXAMEN, HOSPITAL y CITA solo deben tener valores atmicos.
96
Aplicando 2FN
Se puede ver que los siguientes atributos no dependen funcionalmente de manera total de la
clave NUMERO:
FECHA_CONSULTA, DESCRIPCION_CONSULTA, FECHA_EVOLUCION,
DESCRIPCION_EVOLUCION, DIAGNOSTICO, TIPO_ANTECEDENTES,
DESCRIPCION_ANTECEDENTES, MEDICAMENTO, DOSIFICACION,
NOMBRE_EXAMEN, RESULTADO_EXAMEN, CONSTANTES, REFERENCIA,
NOMBRE_HOSPITAL, TELEFONO_HOSPITAL, FECHA_CITA, HORA_CITA
Aplicando 3FN
Se puede apreciar que en las entidades anteriores estn en 3FN ya que no existen
dependencias transitivas entre sus atributos.
97
98
DETALLE DE LA TECNICA
DIAGRAMA ENTIDAD-RELACION
Los diagramas entidad-relacin o diagramas E-R representan los conceptos (entidades) u objetos del sistema
o aplicacin y sus relaciones. Estos diagramas facilitan el diseo de las bases de datos.
SIMBOLOGIA
Diagrama Entidad-Relacin
99
100
DETALLE DE LA TECNICA
MODELO FISICO DE LA BASE DE DATOS
Es un diagrama que representa la base de datos, incluye las tablas, la longitud y tipo de datos de los campos,
as como las relaciones entre las tablas.
SIMBOLOGIA
Tabla
tratamiento
Nombre de la tabla
id
Integer
NN (PK)
medicamento Varchar(50) NN
dosificacion Varchar(50) NN
Nombre del
campo
Longitud
Relaciones
Cardinalidad
101
102
Descripcin de elementos
Aplicacin en computadora de escritorio
JDBC
Permite la ejecucin de operaciones sobre bases de datos.
BD
Base de datos residente en la computadora de escritorio.
103
Servidor de sincronizacin
Escucha las peticiones y realiza la sincronizacin de datos provenientes de la
aplicacin en el dispositivo mvil.
JVM
Mquina virtual sobre la que se ejecuta la aplicacin de escritorio
Subconjunto JDBC
Es un conjunto reducido de instrucciones, que permite la ejecucin de operaciones
sobre bases de datos.
BD
Base de datos residente en el dispositivo mvil.
Cliente de sincronizacin
Realiza las peticiones de sincronizacin de datos.
KVM
Mquina virtual sobre la que se ejecuta la aplicacin en el dispositivo mvil.
HTTP
Es el protocolo que permite la sincronizacin entre las bases de datos de ambas
aplicaciones, empleando el servidor y cliente de sincronizacin
104
Atributos
(package private) c
static Connection
datos
Constructor
DBAccess()
Mtodos
boolean borrarDB()
105
Para ejecutar una sentencia sql tipo SELECT sobre la base de datos
Clase Expediente
Clase que provee la funcionalidad para registrar los expedientes de los pacientes.
Atributos
private
java.lang.St apellidos
ring
Apellidos del paciente
private
java.lang.St conyuge
ring
Nombres del cnyuge del paciente
private
java.lang.St direccion
ring
Direccin del paciente
private
java.lang.St direccionResp
ring
Direccin del responsable del paciente
private
java.lang.St email
ring
Direccin de correo electrnico del paciente
private
java.util.Da fecha
te
Fecha de creacin del expediente
private
java.util.Da fechaNac
te
Fecha de nacimiento del paciente
private
java.lang.St id_ESTADO_CIVIL
ring
106
private
java.lang.St id_OCUPACION
ring
Ocupacin del paciente
private
java.lang.St id_PARENTESCO_PDatos
ring
Parentesco de la persona que proporciona los datos del
paciente
private
java.lang.St id_TIPO_DOCUMENTO_paciente
ring
Tipo de documento del paciente
private
java.lang.St id_TIPO_DOCUMENTO_PDatos
ring
Tipo de documento de la persona que proporciona los
DBAccess m_dbaccess
java.lang.St madre
ring
Nombre del padre del paciente
private
java.lang.St movil
ring
Nmero de telfono mvil del paciente
private
java.lang.St nombrePDatos
ring
Nombre de la persona que proporciona los datos del
paciente
private
java.lang.St nombres
ring
Nombres del paciente
private
int numero
Nmero de expediente
private
java.lang.St numeroDoc
ring
Nmero de documento del paciente
private
java.lang.St numeroDocPDatos
ring
Nmero de documento de la persona que proporciona los
java.lang.St padre
ring
107
private
java.lang.St responsable
ring
Nombres del responsable del paciente
private
java.lang.St sexo
ring
Sexo del paciente
private
java.lang.St telefono
ring
Nmero de telfono fijo del paciente
private
java.lang.St telefonoResp
ring
Nmero telefnico del responsable del paciente
Constructores
Expediente()
Mtodos
boolean actualizar()
boo consistencia()
lean
Necesario para mantener la consistencia (integridad referencial)
108
109
del paciente
void fijarMadre(java.lang.String m_madre)
Fija el sexo
void fijarTelefono(java.lang.String m_telefono)
tring
110
java.lang.S obtenerConyuge()
tring
Devuelve el nombre del cnyuge del paciente
java.lang.S obtenerDireccion()
tring
Devuelve la direccin del paciente
java.lang.S obtenerDireccionResp()
tring
Devuelve la direccin del responsable del paciente
java.lang.S obtenerEmail()
tring
Devuelve la direccin de correo electrnico del paciente
java.util.D obtenerFecha()
ate
Devuelve la fecha de creacin del expediente
java.util.D obtenerFechaNac()
ate
Devuelve la fecha de nacimiento del paciente
java.lang.S obtenerId_ESTADO_CIVIL()
tring
Devuelve el estado civil del paciente
java.lang.S obtenerId_OCUPACION()
tring
Devuelve la ocupacin del paciente
java.lang.S obtenerId_PARENTESCO_PDatos()
tring
Devuelve el parentesco de la persona que proporciona los datos del
paciente
java.lang.S obtenerId_TIPO_DOCUMENTO_paciente()
tring
Devuelve el tipo de documento del paciente
java.lang.S obtenerId_TIPO_DOCUMENTO_PDatos()
tring
Devuelve el tipo de documento de la persona que proporciona los
111
java.lang.S obtenerNombrePDatos()
tring
Devuelve el nombre de la persona que proporciona los datos del
paciente
java.lang.S obtenerNombres()
tring
Devuelve los nombres del paciente
int obtenerNumero()
java.lang.S obtenerNumeroDoc()
tring
Devuelve el nmero de documento del paciente
java.lang.S obtenerNumeroDocPDatos()
tring
Devuelve el nmero de documento de la persona que proporciona
Clase Consulta
Clase que provee la funcionalidad para registrar las consultas de los pacientes.
Atributos
protected
java.lang.Strin descripcion
g
Descripcin del motivo de la consulta
protected
java.lang.Strin diagnostico
g
Descripcin del diagnstico realizado
protected
112
int estatura
java.util.Date fecha
Fecha de la consulta
protected
int frecuenciaRespiratoria
int id
Identificador de la consulta
protected
int id_HOSPITAL
DBAccess m_dbaccess
int numero_EXPEDIENTE
int peso
int presionDiastolica
int presionSistolica
int pulso
Constructores
113
Consulta()
java.util.Date m_fecha,
java.lang.String m_diagnostico,
int m_presionSistolica,
int m_frecuenciaRespiratoria,
int m_numero_EXPEDIENTE)
Mtodos
boolean actualizar()
boolean consistencia()
la
consistencia
(integridad
mantener la consistencia
referencial) entre consulta, expediente y hospital
(integridad
boolea consistenciaOK()
n
Necesario para
boolean eliminar()
114
Fija el id de la consulta
void fijarNumero_EXPEDIENTE(int m_numero_EXPEDIENTE)
115
java.util.Date obtenerFecha()
int obtenerFrecuenciaRespiratoria()
Devuelve el id de la consulta
int obtenerNumero_EXPEDIENTE()
int obtenerPresionSistolica()
Clase Evolucion
Clase que provee la funcionalidad para registrar las evoluciones de los pacientes.
Atributos
private
int id_CONSULTA
Identificador de la consulta
116
Constructores
Evolucion()
java.util.Date m_fecha,
java.lang.String m_diagnostico,
int m_presionSistolica,
int m_frecuenciaRespiratoria,
int m_id_CONSULTA)
Mtodos
boolean actualizar()
boolean consistencia()
boolean consistenciaOK()
117
identificador de consulta
void fijarId_CONSULTA(int m_id_CONSULTA)
Fija el id de la consulta
boolean guardar()
Devuleve el id de la consulta
boolean recuperar()
Clase Tratamiento
Clase que provee la funcionalidad para registrar los tratamientos de los pacientes.
Atributos
private
int b_PADRE
java.lang.String dosificacion
Descripcin de la dosificacin
private
int id
private
protected
118
int id_PADRE
DBAccess m_dbaccess
java.lang.String medicamento
Constructores
Tratamiento()
int m_id_PADRE)
int m_b_PADRE,
int m_id_PADRE)
int m_id_PADRE,
java.lang.String m_dosificacion)
Mtodos
boolean actualizar()
boolean consistencia()
boolean consistenciaOK()
int m_id_PADRE)
119
Devuelve la descripcin
medicamento prescrito
de
la
dosificacin
int obtenerId_PADRE()
del
private
120
Clase Examen
Clase que provee la funcionalidad para registrar los exmenes de los pacientes.
Atributos
private
int id
private
int id_EVOLUCION
protected
DBAccess m_dbaccess
java.lang.String nombre
java.lang.String resultado
Constructores
Examen()
int m_id_EVOLUCION)
java.lang.String m_nombre,
121
Mtodos
boolean actualizar()
boolean consistencia()
boolean consistenciaOK()
Fija el id de la evolucin
void fijarId(int m_id)
Clase Cita
Clase que provee la funcionalidad para registrar las citas de los pacientes.
Atributos
private
java.util.Date fecha
Fecha de la cita
private
int hora
Hora de la cita
private
int id
Identificador de la consulta
protected
DBAccess m_dbaccess
int minutos
Minutos de la cita
private
int numero_EXPEDIENTE
Constructores
Cita()
122
Cita(int m_numero_EXPEDIENTE,
int m_minutos)
123
java.util.Date m_fecha,
int m_hora,
int m_numero_EXPEDIENTE)
Mtodos
boolean actualizar()
boolean consistencia()
boolean consistenciaOK()
int m_minutos)
Fija el id de la cita
void fijarNumero_EXPEDIENTE(int m_numero_EXPEDIENTE)
boolean guardar()
124
java.util.Date obtenerFecha()
java.lang.String obtenerHora()
Devuelve el id de la cita
int obtenerNumero_EXPEDIENTE()
Clase Antecedentes_p
Clase que provee la funcionalidad para registrar los antecedentes personales de los
pacientes.
Atributos
protected
java.lang.St descripcion
ring
Descripcin del antecedente
protected
protected
int id
java.lang.St id_TIPO_ANTECEDENTE
ring
Identificador del tipo de antecedente
protected
DBAccess m_dbaccess
int numero_EXPEDIENTE
Constructores
125
Antecedentes_p()
int m_numero_EXPEDIENTE)
java.lang.String m_descripcion)
Mtodos
boolean actualizar()
private
bool consistenciaOK()
ean
Necesario para mantener la consistencia (integridad referencial)
126
boolean guardar()
Clase Antecedentes_f
Clase que provee la funcionalidad para registrar los antecedentes familiares de los pacientes.
Atributos
private
java.lang.String id_PARENTESCO
Constructores
Antecedentes_f()
127
Antecedentes_f(int m_numero_EXPEDIENTE)
int m_numero_EXPEDIENTE)
java.lang.String m_descripcion,
Mtodos
boolean actualizar()
boolean consistencia()
la
consistencia
(integridad
(integridad
boolean consistenciaPOK()
boolean eliminar()
Almacena
correspondiente
los
datos
del
java.lang.String obtenerId_PARENTESCO()
antecedente
en
la
tabla
128
Clase Hospital
Clase que provee la funcionalidad para registrar los datos de los hospitales.
Atributos
private
int id
DBAccess m_dbaccess
java.lang.String nombre
java.lang.String telefono
Constructores
Hospital()
java.lang.String m_telefono)
Mtodos
129
boolean actualizar()
private
boolean consistencia()
la consistencia (integridad
boolean eliminar()
int obtenerId()
130
(a)
(b)
Figura 2.8 Ventana_crearExpediente
131
132
133
134
135
136
137
138
139
DESCRIPCION
Archivo empaquetado que contiene la aplicacin completa
Archivo que describe la aplicacin contenida en movilMed.jar
Arechivo de manifiesto que describe el contenido del archivo
movilMed.jar
Contiene la pantalla de acceso a la aplicacin y el men
principal.
Clase para la manipulacin de la base de datos.
Clase para la gestin de los expedientes.
Clase para la gestin de las consultas.
Clase para la gestin de la evolucin de los pacientes.
Clase para la gestin del tratamiento de los pacientes.
Clase para la gestin de los antecedentes personales de los
pacientes.
Clase para la gestin de los antecedentes familiares de los
pacientes.
Clase para la gestin de las citas de los pacientes.
Clase para la gestin de los exmenes de los pacientes.
Clase para la gestin de los hospitales a los que se refiere a los
pacientes.
Clase para el manejo de fechas entre las pantallas y la base de
datos.
Clase que permite inicializar la base de datos.
Contiene la pantalla para la adicin de expedientes.
Contiene la pantalla para la modificacin y eliminacin de
expedientes.
Contiene la pantalla para la adicin de consultas.
Contiene la pantalla para la modificacin y eliminacin de
consultas.
Contiene la pantalla para la adicin de la evolucin de un
paciente.
Contiene la pantalla para la modificacin y eliminacin de la
evolucin de un paciente.
Contiene la pantalla para mostrar listados de pacientes y citas.
Contiene la pantalla que permite sincronizar los datos entre el
PantallaCambiarClave.java
140
/**
* Clase que permite acceder a la base de datos
* @see
* @since
* @author
Nelson Hernndez
141
*/
public class DBAccess {
/**
* Para establecer la conexin con la base de datos
*/
static Connection c = null;
/**
* Para las sentencias que se ejecutarn sobre la base de datos
*/
static Statement s = null;
/**
* Especifica el nombre de la base de datos
*/
static String m_dbname = "fichasMedicas"; // Nombre de la base de datos
/**
* Realiza la conexin a la base de datos
*/
public void conectar() {
// Crea una nueva conexin
try {
c = DriverManager.getConnection(
"jdbc:pointbase:micro:"+ m_dbname,"admin", "galeno");
s = c.createStatement();
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
/**
* Se desconecta de la base de datos
*/
public void desconectar() {
//Cierra la conexin a la base de datos
try {
if(s != null){
s.close();
s = null;
142
}
if(c!= null){
c.close();
c = null;
}
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
/**
* Verifica si existe la base de datos
* @return true si existe la base de datos
* @return false si no existe la base de datos
*/
public boolean dbExiste(){
try{
ResultSet rs = getTables();
if (rs == null || rs.next() == false)
return false;
}
catch( Exception e){
System.out.println( e.getMessage());
return false;
}
return true;
}
/**
* Verifica si la base de datos tiene tablas
* @return true si se han encontrado tablas en la base de datos
* @return false si no se han encontrado tablas la base de datos
*/
public ResultSet getTables(){
try{
return c.getMetaData().getTables(null, null, null, null);
}catch(SQLException e){
System.out.println(e.getMessage());
return null;
}
}
143
/**
* Sirve para borrar la base de datos
* @return true si no hay problema al eliminar la base de datos
* @return false si hay problema al eliminar la base de datos
*/
public boolean borrarDB(){
//Cerramos la conexin
desconectar();
//obtenemos una lista de todos los recod store en el RMS
String lista[]=RecordStore.listRecordStores();
/**
* Sirve para crear las tablas en la base de datos
* @return true si no hay problema de creacin
* @return false si hay problema en la creacin
*/
public boolean crearTablas(){
//Cadenas para la creacin de las tablas
String crearEstado_civil = "CREATE TABLE estado_civil("
+ "id VARCHAR(1) NOT NULL,"
+ "nombre VARCHAR(13) NOT NULL,"
+ "CONSTRAINT pk_estado_civil "
144
+ "PRIMARY KEY (id))";
String crearOcupacion =
String crearParentesco =
String crearExpediente =
145
+ "id_PARENTESCO_PDatos VARCHAR(1),"
+ "id_TIPO_DOCUMENTO_PDatos VARCHAR(1),"
+ "numeroDocPDatos VARCHAR(20),"
+ "CONSTRAINT pk_expediente "
+ "PRIMARY KEY (numero))";
String crearCita =
String crearHospital =
146
+ "telefono VARCHAR(10),"
+ "CONSTRAINT pk_hospital "
+ "PRIMARY KEY (id))";
String crearConsulta =
String crearEvolucion =
String crearTratamiento =
147
+ "PRIMARY KEY (id, id_PADRE))";
String crearExamen =
String crearUsuarios =
try{
//Creamos las tablas
s.execute(crearEstado_civil);
p = c.prepareStatement(insertarTipo_documento);
for (int i=0; i<5; i++){
p.setString(1, ids[i]);
p.setString(2, tipo_doc[i]);
p.executeUpdate();
}
p.close();
p = c.prepareStatement(insertarOcupacion);
for (int i=0; i<6; i++){
p.setString(1, ids[i]);
p.setString(2, ocupacion[i]);
p.executeUpdate();
}
p.close();
148
p = c.prepareStatement(insertarTipo_antecedente);
for (int i=0; i<6; i++){
p.setString(1, ids[i]);
p.setString(2, antecedente[i]);
p.executeUpdate();
}
p.close();
p = c.prepareStatement(insertarUsuario);
p.setString(1, "1");
p.setString(2, "admin");
p.setString(3, "0000");
p.executeUpdate();
p.close();
c.commit();
}
catch (SQLException e){
System.out.println(e.getMessage());
return false;
}
return true;
}
/**
* Para ejecutar una sentencia sql sobre la base de datos
* @param sql String sentencia sql que se ejecutar
* @return -1 si hay problema en la ejecucin
*/
public int executeUpdate(String sql) {
try {
149
150
return(s.executeUpdate(sql));
} catch (Exception e) {
System.out.println(e.getMessage());
return -1;
}
}
/**
* Para ejecutar una sentencia sql sobre la base de datos
* @param sql String sentencia sql que se ejecutar
* @return Numero que indica el valor autonumrico generado en la insercin
* @return 0 si hay problema en la ejecucin
*/
public int executeUpdateValue(String sql) {
try{
s.executeUpdate(sql);
ResultSet rs = s.getGeneratedKeys();
if(rs==null || !rs.next()) {
return 0;
}
int ultimo_id = rs.getInt(1);
rs.close();
System.out.println(sql);
return ultimo_id;
}
catch (Exception e) {
System.out.println(e.getMessage());
return 0;
}
}
/**
* Para ejecutar una sentencia sql tipo SELECT sobre la base de datos
* @param sql String senencia sql que se ejecutar
* @return ResulSet con el resultado de la ejecucin del SELECT
* @return NULL si hay problemas en la ejecucin
*/
public ResultSet execute(String sql) {
ResultSet rs = null;
try {
if (s.execute(sql)) {
rs = s.getResultSet();
151
}
} catch (Exception e) {
System.out.println(e.getMessage());
return null;
}
finally {
return rs;
}
}
}
Archivo: Expediente.java
//Importamos los paquetes necesarios
import java.util.*;
import com.pointbase.me.*;
/**
* Clase que provee la funcionalidad para registrar los expedientes de los pacientes
* @see
DBAccess
* @version
* @since
* @author
Nelson Hernndez
*/
public class Expediente{
/**
* Nmero de expediente
*/
private int numero;
/**
* Fecha de creacin del expediente
*/
private String fecha;
/**
* Apellidos del paciente
*/
private String apellidos;
/**
* Nombres del paciente
*/
private String nombres;
/**
152
153
/**
* Constructor sin parmetros
*/
public Expediente(){
numero = 0;
}
/**
* Constructor que recibe como parmetro el nmero de expediente
* @param m_numero int numero de expediente
*/
public Expediente(int m_numero){
numero = m_numero;
}
/**
* Constructor que recibe como parmetros los datos del paciente
*/
public Expediente(
//int m_numero,
String m_fecha,
String m_apellidos,
String m_nombres,
String m_sexo,
String m_fechaNac,
String m_id_ESTADO_CIVIL,
String m_direccion,
String m_telefono,
String m_movil,
String m_email,
String m_id_TIPO_DOCUMENTO_paciente,
String m_numeroDoc,
String m_id_OCUPACION,
String m_padre,
String m_madre,
String m_conyuge,
String m_responsable,
String m_direccionResp,
String m_telefonoResp,
String m_nombrePDatos,
String m_id_PARENTESCO_PDatos,
String m_id_TIPO_DOCUMENTO_PDatos,
String m_numeroDocPDatos
154
/**
* Fija el nmero de expediente
* @param m_numero int numero de expediente
*/
public void fijarNumero(int m_numero){
numero = m_numero;
}
/**
* Fija la fecha de creacin del expediente
* @param m_fecha Date fecha de creacin del expediente
*/
public void fijarFecha(String m_fecha){
fecha = m_fecha;
}
155
156
157
/**
* Fija el nmero de telfono fijo del paciente
* @param m_telefono String nmero de telfono fijo del paciente
*/
public void fijarTelefono(String m_telefono){
telefono = m_telefono;
}
/**
* Fija el nmero de telfono mvil del paciente
* @param m_movil String nmero de telfono mvil del paciente
*/
public void fijarMovil(String m_movil){
movil = m_movil;
}
/**
* Fija la direccin de correo electrnico del paciente
* @param m_email String direccin de correo electrnico del paciente
*/
public void fijarEmail(String m_email){
email = m_email;
}
/**
* Fija el tipo de documento del paciente
* @param m_id_TIPO_DOCUMENTO_paciente String tipo de documento del paciente
*/
public void fijarId_TIPO_DOCUMENTO_paciente(String
m_id_TIPO_DOCUMENTO_paciente){
id_TIPO_DOCUMENTO_paciente = m_id_TIPO_DOCUMENTO_paciente;
}
/**
* Fija el nmero de documento del paciente
* @param m_numeroDoc String nmero de documento del paciente
*/
public void fijarNumeroDoc(String m_numeroDoc){
numeroDoc = m_numeroDoc;
}
/**
* Fija la ocupacin del paciente
* @param m_id_OCUPACION String ocupacin del paciente
*/
public void fijarId_OCUPACION(String m_id_OCUPACION){
id_OCUPACION = m_id_OCUPACION;
}
158
/**
* Fija el nombre del padre del paciente
* @param m_padre String nombre del padre del paciente
*/
public void fijarPadre(String m_padre){
padre = m_padre;
}
/**
* Fija el nombre de la madre del paciente
* @param m_madre String nombre de la madre del paciente
*/
public void fijarMadre(String m_madre){
madre = m_madre;
}
/**
* Fija el nombre del cnyuge del paciente
* @param m_conyuge String nombre del cnyuge del paciente
*/
public void fijarConyuge(String m_conyuge){
conyuge = m_conyuge;
}
/**
* Fija el nombre del responsable del paciente
* @param m_responsable String nombre del responsable del paciente
*/
public void fijarResponsable(String m_responsable){
responsable = m_responsable;
}
/**
* Fija la direccin del responsable del paciente
* @param m_direccionResp String direccin del responsable del paciente
*/
public void fijarDireccionResp(String m_direccionResp){
direccionResp = m_direccionResp;
}
/**
* Fija el nmero de telfono del responsable del paciente
* @param m_telefonoResp String nmero de telfono del responsable del
paciente
*/
public void fijarTelefonoResp(String m_telefonoResp){
telefonoResp = m_telefonoResp;
}
159
/**
* Fija el nombre de la persona que proporciona los datos del paciente
* @param m_nombrePDatos String nombre de la persona que proporciona los
datos del paciente
*/
public void fijarNombrePDatos(String m_nombrePDatos){
nombrePDatos = m_nombrePDatos;
}
/**
* Fija el parentesco de la persona que proporciona los datos del paciente
* @param m_id_PARENTESCO_PDatos String parentesco de la persona que
proporciona los datos del paciente
*/
public void fijarId_PARENTESCO_PDatos(String m_id_PARENTESCO_PDatos){
id_PARENTESCO_PDatos = m_id_PARENTESCO_PDatos;
}
/**
* Fija el tipo de documento de la persona que proporciona los datos del
paciente
* @param m_id_TIPO_DOCUMENTO_PDatos String tipo de documento de la persona
que proporciona los datos del paciente
*/
public void fijarId_TIPO_DOCUMENTO_PDatos(String m_id_TIPO_DOCUMENTO_PDatos){
id_TIPO_DOCUMENTO_PDatos = m_id_TIPO_DOCUMENTO_PDatos;
}
/**
* Fija el nmero de documento de la persona que proporciona los datos del
paciente
* @param m_numeroDocPDatos String nmero de documento de la persona que
proporciona los datos del paciente
*/
public void fijarNumeroDocPDatos(String m_numeroDocPDatos){
numeroDocPDatos = m_numeroDocPDatos;
}
/**
* Devuelve el nmero de expediente
* @return numero int numero de expediente
*/
public int obtenerNumero (){
return numero;
}
/**
/**
* Devuelve los apellidos del paciente
* @return apellidos String apellidos del paciente
*/
public String obtenerApellidos(){
return apellidos;
}
/**
* Devuelve los nombres del paciente
* @return nombres String nombres del paciente
*/
public String obtenerNombres(){
return nombres;
}
/**
* Devuelve el sexo
* @return sexo String sexo del paciente
*/
public String obtenerSexo(){
return sexo;
}
/**
* Devuelve la fecha de nacimiento del paciente
* @return fechaNac String fecha de nacimiento del paciente
*/
public String obtenerFechaNac(){
return fechaNac;
}
/**
* Devuelve el estado civil del paciente
* @return id_ESTADO_CIVIL String estado civil del paciente
160
161
*/
public String obtenerId_ESTADO_CIVIL(){
return id_ESTADO_CIVIL;
}
/**
* Devuelve la direccin del paciente
* @return direccion String direccin del paciente
*/
public String obtenerDireccion(){
return direccion;
}
/**
* Devuelve el nmero de telfono fijo del paciente
* @return telefono String nmero de telfono fijo del paciente
*/
public String obtenerTelefono(){
return telefono;
}
/**
* Devuelve el nmero de telfono mvil del paciente
* @return movil String nmero de telfono mvil del paciente
*/
public String obtenerMovil(){
return movil;
}
/**
* Devuelve la direccin de correo electrnico del paciente
* @return email String direccin de correo electrnico del paciente
*/
public String obtenerEmail(){
return email;
}
/**
* Devuelve el tipo de documento del paciente
* @return id_TIPO_DOCUMENTO_paciente String tipo de documento del paciente
*/
public String obtenerId_TIPO_DOCUMENTO_paciente(){
/**
* Devuelve el nmero de documento del paciente
* @return numeroDoc String nmero de documento del paciente
*/
public String obtenerNumeroDoc(){
return numeroDoc;
}
/**
* Devuelve la ocupacin del paciente
* @return id_OCUPACION String ocupacin del paciente
*/
public String obtenerId_OCUPACION(){
return id_OCUPACION;
}
/**
* Devuelve el nombre del padre del paciente
* @return padre String nombre del padre del paciente
*/
public String obtenerPadre(){
return padre;
}
/**
* Devuelve el nombre de la madre del paciente
* @return madre String nombre de la madre del paciente
*/
public String obtenerMadre(){
return madre;
}
/**
* Devuelve el nombre del cnyuge del paciente
* @return conyuge String nombre del cnyuge del paciente
*/
public String obtenerConyuge(){
return conyuge;
}
162
163
/**
* Devuelve el nombre del responsable del paciente
* @return responsable String nombre del responsable del paciente
*/
public String obtenerResponsable(){
return responsable;
}
/**
* Devuelve la direccin del responsable del paciente
* @return direccionResp String direccin del responsable del paciente
*/
public String obtenerDireccionResp(){
return direccionResp;
}
/**
* Devuelve el nmero de telfono del responsable del paciente
* @return telefonoResp String nmero de telfono del responsable del
paciente
*/
public String obtenerTelefonoResp(){
return telefonoResp;
}
/**
* Devuelve el nombre de la persona que proporciona los datos del paciente
* @return nombrePDatos String nombre de la persona que proporciona los datos
del paciente
*/
public String obtenerNombrePDatos(){
return nombrePDatos;
}
/**
* Devuelve el parentesco de la persona que proporciona los datos del
paciente
* @return id_PARENTESCO_PDatos String parentesco de la persona que
proporciona los datos del paciente
*/
public String obtenerId_PARENTESCO_PDatos(){
return id_PARENTESCO_PDatos;
}
164
/**
* Devuelve el tipo de documento de la persona que proporciona los datos del
paciente
* @return id_TIPO_DOCUMENTO_PDatos String tipo de documento de la persona
que proporciona los datos del paciente
*/
public String obtenerId_TIPO_DOCUMENTO_PDatos(){
return id_TIPO_DOCUMENTO_PDatos;
}
/**
* Devuelve el nmero de documento de la persona que proporciona los datos
del paciente
* @return numeroDocPDatos String nmero de documento de la persona que
proporciona los datos del paciente
*/
public String obtenerNumeroDocPDatos(){
return numeroDocPDatos;
}
/**
* Almacena los datos del paciente en la tabla expediente
* @return numero si no hay problemas al guardar el registro
* @return 0 si hay problemas al guardar el registro
*/
public int guardar(){
if (numero == 0){ //Si es un nuevo objeto
String query = "INSERT INTO expediente("
+ "fecha,"
+ "apellidos,"
+ "nombres,"
+ "sexo,"
+ "fechaNac,"
+ "id_ESTADO_CIVIL,"
+ "direccion,"
+ "telefono,"
+ "movil,"
+ "email,"
+ "id_TIPO_DOCUMENTO_paciente,"
+ "numeroDoc,"
+ "id_OCUPACION,"
+ "padre,"
+ "madre,"
165
+ "conyuge,"
+ "responsable,"
+ "direccionResp,"
+ "telefonoResp,"
+ "nombrePDatos,"
+ "id_PARENTESCO_PDatos,"
+ "id_TIPO_DOCUMENTO_PDatos,"
+ "numeroDocPDatos"
+ ") VALUES("
+ "'" + fecha + "',"
+ "'" + apellidos + "',"
+ "'" + nombres + "',"
+ "'" + sexo + "',"
+ "'" + fechaNac + "',"
+ "'" + id_ESTADO_CIVIL + "',"
+ "'" + direccion + "',"
+ "'" + telefono + "',"
+ "'" + movil + "',"
+ "'" + email + "',"
+ "'" + id_TIPO_DOCUMENTO_paciente + "',"
+ "'" + numeroDoc + "',"
+ "'" + id_OCUPACION + "',"
+ "'" + padre + "',"
+ "'" + madre + "',"
+ "'" + conyuge + "',"
+ "'" + responsable + "',"
+ "'" + direccionResp + "',"
+ "'" + telefonoResp + "',"
+ "'" + nombrePDatos + "',"
+ "'" + id_PARENTESCO_PDatos + "',"
+ "'" + id_TIPO_DOCUMENTO_PDatos + "',"
+ "'" + numeroDocPDatos + "'"
+")";
DBAccess m_dbaccess = new DBAccess();
//Conectamos a la base de datos
m_dbaccess.conectar();
int numeroExpediente;
numeroExpediente = m_dbaccess.executeUpdateValue(query);
//Nos desconectamos de la base de datos
m_dbaccess.desconectar();
m_dbaccess = null;
return numeroExpediente;
/**
* Recupera un registro de la tabla expediente
* @return true si no hay problemas al recuperar el registro
* @return false si hay problemas al recuperar el registro
*/
public boolean recuperar(){
String query = "SELECT * FROM expediente WHERE numero="
+ numero;
DBAccess m_dbaccess = new DBAccess();
//Conectamos a la base de datos
m_dbaccess.conectar();
ResultSet rs = null;
boolean m_bandera = false;
problema
166
/**
* Actualiza un registro de la tabla expediente
* @return true si no hay problemas al actualizar el registro
* @return false si hay problemas al actualizar el registro
*/
public boolean actualizar(){
if (numero != 0){ //Si es un objeto modificado
String query = "UPDATE expediente SET "
+ "fecha="
+ "'" + fecha + "',"
+ "apellidos="
+ "'" + apellidos + "',"
+ "nombres="
+ "'" + nombres + "',"
+ "sexo="
+ "'" + sexo + "',"
+ "fechaNac="
+ "'" + fechaNac + "',"
+ "id_ESTADO_CIVIL="
+ "'" + id_ESTADO_CIVIL + "',"
+ "direccion="
+ "'" + direccion + "',"
+ "telefono="
+ "'" + telefono + "',"
167
168
169
m_dbaccess = null;
return m_bandera;
}
else return false;
}
/**
* Elimina un registro de la tabla expediente
* @return true si no hay problemas al eliminar el registro
* @return false si hay problemas al eliminar el registro
*/
public boolean eliminar(){
String query = "DELETE FROM expediente WHERE numero="
+ numero;
DBAccess m_dbaccess = new DBAccess();
//Conectamos a la base de datos
m_dbaccess.conectar();
boolean m_bandera = false;
if (m_dbaccess.executeUpdate(query) != -1){// -1 hubo un problema
//Controlamos la consistencia (integridad referencial)
consistencia();
numero = 0; //Reseteamos el identificador
m_bandera = true;
}
else
m_bandera = false; // no funcion
//Nos desconectamos de la base de datos
m_dbaccess.desconectar();
m_dbaccess = null;
return m_bandera;
}
/**
* Necesario para mantener la consistencia (integridad referencial) entre las
tablas
* @return true si no hay problemas durante la ejecucin
* @return false si hay problemas durante la ejecucin
*/
private boolean consistencia(){
//Borramos los antecedentes personales
Antecedentes_p m_antecedentes_p = new Antecedentes_p();
m_antecedentes_p.eliminarCascada(numero);
m_antecedentes_p = null;
/**
* Clase que muestra el men principal de la aplicacin
* @see
* @version
* @since
* @author
Nelson Hernndez
*/
public class movilMed extends MIDlet
implements CommandListener{
//Manejador de la pantalla
private Display display;
170
//Arreglo de imgenes
Image[] iconoApp;
Image[] iconosMain;
Image[] imagenOpcion;
Image[] iconosGestion;
Image[] iconosListado;
//Botones de comando
private Command cmdSalir;
private Command cmdCancelar;
private Command cmdCancelarInicio;
private Command cmdAceptarInicio;
/**
* Constructor sin parmetros
*/
public movilMed(){
iniciado=false;
171
172
173
/**
* Inicia el MIDLet
*/
public void startApp(){
//Obtenemos el objeto Display del midlet
display = Display.getDisplay(this);
if(!iniciado){ //si es la primera vez que se corre
login();
}
else mainMenu(); //Mostramos el menu principal en pantalla
}
/**
* Pide el ingreso de la clave para iniciar la aplicacin
*/
public void login(){
//Creamos la pantalla para el acceso a la aplicacin
frmClave = new Form("Clave");
/**
* Verifica la clave ingresada
*/
174
/**
* obtiene la clave guardada en la base de datos
* @param m_dbaccess DBAccess manejador de la base de datos
* @return String clave guardada en la base de datos
*/
public String obtenerClave(DBAccess m_dbaccess){
if (m_dbaccess.dbExiste()){ //Si existen las tablas
//Cadena para obtener la clave
String query = "SELECT clave FROM usuario WHERE
nombre='admin'";
ResultSet rs = null;
if ((rs = m_dbaccess.execute(query)) != null){// null hubo un
problema
//Obtenemos la clave la clave
try{
rs.next();
String clave = rs.getString(1);
rs.close();
return clave;
}
175
/**
* Muestra el men principal de la aplicacin
*/
public void mainMenu(){
menuActual = "Men Principal";
if(listaMenuPrincipal == null){ //Si aun no se ha creado el men
listaMenuPrincipal = new List("movilMed",
List.IMPLICIT);
//Agregamos los elementos del men principal
listaMenuPrincipal.append("Expediente", iconosMain[0]);
listaMenuPrincipal.append("Consulta", iconosMain[1]);
listaMenuPrincipal.append("Evolucin", iconosMain[2]);
listaMenuPrincipal.append("Listados", iconosMain[3]);
listaMenuPrincipal.append("Sincronizar", iconosMain[4]);
listaMenuPrincipal.append("Administrar", iconosMain[5]);
listaMenuPrincipal.addCommand(cmdSalir);
//Indicamos el manejador de eventos
listaMenuPrincipal.setCommandListener(this);
}
//Mostramos el menu principal
if (alertSplash == null){
splash("MovilMed", null, iconoApp[0]);
display.setCurrent (alertSplash, listaMenuPrincipal);
}
/**
* Muestra una pantalla de indicando la opcin seleccionada en el men
* @param strTitulo String ttulo de la pantalla
* @param strMensaje String mensaje a mostrar
* @param imagen Image imagen a desplegar en la pantalla
*/
public void splash(String strTitulo, String strMensaje,
Image imagen){
alertSplash = new Alert (strTitulo, strMensaje,
imagen, AlertType.INFO);
//La ventana esperar 3 segundos
alertSplash.setTimeout(3000);
}
/**
* Muestra el men correspondiente a expediente
*/
public void menuExpediente(){
menuActual = "Men Expediente";
//Agregamos las opciones a la lista
if (listaMenuExpediente == null){
listaMenuExpediente = new List("Expedientes",
List.IMPLICIT);
listaMenuExpediente.append("Nuevo", iconosGestion[0]);
listaMenuExpediente.append("Editar", iconosGestion[1]);
listaMenuExpediente.addCommand(cmdCancelar);
//Indicamos el manejador de eventos
listaMenuExpediente.setCommandListener(this);
176
/**
* Muestra el men correspondiente a consulta
*/
public void menuConsulta(){
menuActual = "Men Consulta";
//Agregamos las opciones a la lista
if (listaMenuConsulta == null){
listaMenuConsulta = new List("Consultas",
List.IMPLICIT);
listaMenuConsulta.append("Nuevo", iconosGestion[0]);
listaMenuConsulta.append("Editar", iconosGestion[1]);
listaMenuConsulta.addCommand(cmdCancelar);
listaMenuConsulta.setCommandListener(this);
splash("Consultas", null, imagenOpcion[1]);
display.setCurrent (alertSplash, listaMenuConsulta);
}
else {
display.setCurrent (listaMenuConsulta);
}
}
/**
* Muestra el men correspondiente a evolucin
*/
public void menuEvolucion(){
menuActual = "Men Evolucin";
//Agregamos las opciones a la lista
if (listaMenuEvolucion == null){
listaMenuEvolucion = new List("Evolucin",
List.IMPLICIT);
listaMenuEvolucion.append("Nuevo", iconosGestion[0]);
listaMenuEvolucion.append("Editar", iconosGestion[1]);
listaMenuEvolucion.addCommand(cmdCancelar);
listaMenuEvolucion.setCommandListener(this);
splash("Evolucin", null, imagenOpcion[2]);
display.setCurrent (alertSplash, listaMenuEvolucion);
}
else {
display.setCurrent (listaMenuEvolucion);
}
}
177
178
/**
* Muestra el men correspondiente a listados
*/
public void menuListado(){
menuActual = "Men Listados";
//Agregamos las opciones a la lista
if (listaMenuListados == null){
listaMenuListados = new List("Listados",
List.IMPLICIT);
listaMenuListados.append("Citas", iconosListado[0]);
listaMenuListados.append("Pacientes", iconosListado[1]);
listaMenuListados.addCommand(cmdCancelar);
listaMenuListados.setCommandListener(this);
splash("Listados", null, imagenOpcion[3]);
display.setCurrent (alertSplash, listaMenuListados);
}
else {
display.setCurrent (listaMenuListados);
}
}
/**
* Realiza la sincronizacin de datos
*/
public void sincronizar(){
splash("Sincronizar", null, imagenOpcion[4]);
display.setCurrent (alertSplash, listaMenuPrincipal);
}
/**
*
*/
public void menuAdministrar(){
menuActual = "Men Administrar";
//Agregamos las opciones a la lista
if (listaMenuAdministrar == null){
listaMenuAdministrar = new List("Administrar",
List.IMPLICIT);
iconosGestion[2]);
iconosGestion[3]);
listaMenuAdministrar.append("Inicializar BD",
listaMenuAdministrar.append("Cambiar Clave",
179
listaMenuAdministrar.addCommand(cmdCancelar);
//Indicamos el manejador de eventos
listaMenuAdministrar.setCommandListener(this);
/**
* Muestra la pantalla para agregar un nuevo expediente
*/
public void nuevoExpediente(){
PantallaExpedienteNv expediente = new PantallaExpedienteNv(display,
listaMenuPrincipal);
try{
display.setCurrent(expediente.mostrar());
}
catch (Exception e){
System.out.println("Excepcin: " + e.getMessage());
}
//Necesario para que despus de finalizada la adicin, la aplicacin
sepa
//que est mostrando el men principal
menuActual = "Men Principal";
}
/**
* Muestra la pantalla para buscar y editar expedientes
*/
public void edicionExpediente(){
PantallaExpedienteEd expediente = new PantallaExpedienteEd(display,
listaMenuPrincipal);
try{
display.setCurrent(expediente.mostrar());
}
catch (Exception e){
System.out.println("Excepcin: " + e.getMessage());
}
//Necesario para que despus de finalizada la adicin, la aplicacin
sepa
180
/**
* Muestra la pantalla para confirma el borrado e inicializacin de la base
de datos
*/
public void inicializarBD(){
IniciarDB m_iniciarDB = new IniciarDB(display, listaMenuPrincipal);
Displayable frmBorrado = null;
//Realizamos la conexin a la base de datos
DBAccess m_dbaccess = new DBAccess();
m_dbaccess.conectar();
try{
//frmBorrado = m_iniciarDB.mostrar();
display.setCurrent(m_iniciarDB.mostrar(m_dbaccess));
}
catch (Exception e){
System.out.println("Excepcin: " + e.getMessage());
}
/*
if (frmBorrado != null)
display.setCurrent(frmBorrado);
else
display.setCurrent(listaMenuPrincipal);
*/
/**
* Suspende las acciones en segundo plano y libera recursos
*/
181
/**
* Detiene toda actividad del midlet y libera recursos
*/
public void destroyApp(boolean incondicional){
}
/**
* Mtodo para controlar los comandos
*/
public void commandAction(Command c, Displayable s){
//Salir
if (c == cmdSalir || c == cmdCancelarInicio){
//Finalizamos la ejecucin del midlet
destroyApp(true);
//Notificamos al sistema que el midlet finaliza
notifyDestroyed();
}
//Si se elige acepatar inicio, se verifica la clave
else if (c == cmdAceptarInicio){
verificarClave();
}
//Cancela (vuelve a la pantalla anterior)
else if (c == cmdCancelar){
//System.out.println("Cancelando");
mainMenu();
}
else{
List l = (List) display.getCurrent();
//Si estamos en el men principal
if (menuActual=="Men Principal"){
switch(l.getSelectedIndex()){
case 0:
menuExpediente();
break;
case 1:
menuConsulta();
break;
case 2:
menuEvolucion();
182
break;
case 3:
menuListado();
break;
case 4:
sincronizar();
break;
case 5:
menuAdministrar();
}
}
//Si estamos en el men expediente
else if (menuActual=="Men Expediente"){
switch(l.getSelectedIndex()){
case 0:
nuevoExpediente();
break;
case 1:
edicionExpediente();
}
}
//Si estamos en el men consulta
else if (menuActual=="Men Consulta"){
switch(l.getSelectedIndex()){
case 0:
//nuevaConsulta();
System.out.println("Nueva consulta");
break;
case 1:
//edicionConsulta();
System.out.println("Edicin de
consulta");
}
}
183
//edicionEvolucion();
System.out.println("Edicin de
evolucin");
}
}
//Si estamos en el men listado
else if (menuActual=="Men Listados"){
switch(l.getSelectedIndex()){
case 0:
//citas();
System.out.println("Citas");
break;
case 1:
//pacientes();
System.out.println("Pacientes");
}
}
//Si estamos en el men administrar
else if (menuActual=="Men Administrar"){
switch(l.getSelectedIndex()){
case 0:
inicializarBD();
//System.out.println("Base de datos");
break;
case 1:
//camibarClave();
System.out.println("Cambio de clave");
}
}
}
}
}
Archivo: PantallaExpedienteNv.java
//Importamos los paquetes necesarios
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
import java.util.*;
/**
* Clase que permite ingresar los datos de un nuevo paciente
Expediente
* @version
* @since
* @author
Nelson Hernndez
*/
public class PantallaExpedienteNv
implements CommandListener, ItemStateListener{
//Formularios
private Form frmExpediente;
private Form frmExpediente2;
184
185
//Formulario padre
private List frmParent;
private Display display;
//Arreglo de imgenes
Image[] imagenMensaje;
/**
* Constructor que recibe como parmetro el display del dispositivo y una
lista
* @param pantalla Display display del dispositivo
* @param lista List Lista del men principal
*/
public PantallaExpedienteNv(Display pantalla, List lista){
frmParent = lista;
display = pantalla;
try{
//Imagenes para los mensajes
imagenMensaje[0] = Image.createImage("/images/error.png");
imagenMensaje[1] = Image.createImage("/images/guardado.png");
}
catch (Exception e){
System.out.println("Excepcin: " + e.getMessage());
}
186
StringItem("", buf.toString());
187
188
TextField.ANY);
String[] parentesco = {"Madre",
"Padre",
"Abuela",
"Abuelo",
"Hermano",
"Cnyuge"};
grpId_PARENTESCO_PDatos = new ChoiceGroup ("Parentesco: ",
Choice.EXCLUSIVE,
parentesco, null);
grpId_TIPO_DOCUMENTO_PDatos = new ChoiceGroup ("Tipo Doc: ",
Choice.EXCLUSIVE,
opcionesTipoDoc, null);
txtNumeroDocPDatos = new TextField ("Numero Doc: ", "", 20,
TextField.ANY);
/**
* Muestra el primer formulario para el registro de los datos del paciente
*/
public Displayable mostrar() throws MIDletStateChangeException{
//Devolvemos el formulario
189
return frmExpediente;
}
/**
* Realiza la validacin de datos ingresados en el formulario frmExpediente
* @return true si no hay problemas de validacin
* @return false si encuentran problemas en la validacin
*/
private boolean datosFrmExpedienteOK(){
//Verificamos que no est vaco el campo de apellidos
if(((txtApellidos.getString()).trim()).length()==0){
ventanaError("Error", "Debe ingresar los apellidos",
imagenMensaje[0]);
return false;
}
//Verificamos que no est vaco el campo de nombres
else if(((txtNombres.getString()).trim()).length()==0){
ventanaError("Error", "Debe ingresar los nombres",
imagenMensaje[0]);
return false;
}
//Verificamos que la fecha de nacimiento est dentro de un rango
vlido
else if(!fechaOK()){
ventanaError("Error", "Fecha de nacimiento errnea",
imagenMensaje[0]);
return false;
}
190
/**
* Verifica que la fecha est en el rango permitido
* @return true si la fecha est dentro del rango
* @return false si la fecha no est dentro del rango
*/
private boolean fechaOK(){
//Fijamos la fecha que ser permitida como inferior
Calendar cal = Calendar.getInstance();
cal.set(Calendar.DAY_OF_MONTH,1);
cal.set(Calendar.MONTH,1);
cal.set(Calendar.YEAR,1900);
Date fechaInferior = cal.getTime();
if((txtFechaNac.getDate()).getTime() < fechaInferior.getTime()){
return false;
}
else return true;
}
/**
* Almacena los datos del paciente en la base de datos
* @return true si se el registro se almacen correctamente
* @return false si hubo problema al almacenar el registro
*/
private boolean guardar(){
//Fecha actual
Calendar cal = Calendar.getInstance();
191
m_expediente.fijarFechaNac(FechaDB.fechaToDB(txtFechaNac.getDate()));
m_expediente.fijarId_ESTADO_CIVIL(String.valueOf(
grpId_ESTADO_CIVIL.getSelectedIndex() + 1));
m_expediente.fijarDireccion(txtDireccion.getString().toUpperCase());
m_expediente.fijarTelefono(txtTelefono.getString());
m_expediente.fijarMovil(txtMovil.getString());
m_expediente.fijarEmail(txtEmail.getString());
m_expediente.fijarId_TIPO_DOCUMENTO_paciente(String.valueOf(
grpId_TIPO_DOCUMENTO_paciente.getSelectedIndex() + 1 ));
m_expediente.fijarNumeroDoc(txtNumeroDoc.getString());
m_expediente.fijarId_OCUPACION(String.valueOf(
grpId_OCUPACION.getSelectedIndex() + 1 ));
m_expediente.fijarPadre(txtPadre.getString().toUpperCase());
m_expediente.fijarMadre(txtMadre.getString().toUpperCase());
m_expediente.fijarConyuge(txtConyuge.getString().toUpperCase());
m_expediente.fijarResponsable(txtResponsable.getString().toUpperCase());
m_expediente.fijarDireccionResp(txtDireccionResp.getString().toUpperCase());
m_expediente.fijarTelefonoResp(txtTelefonoResp.getString());
m_expediente.fijarNombrePDatos(txtNombrePDatos.getString().toUpperCase());
m_expediente.fijarId_PARENTESCO_PDatos(String.valueOf(
grpId_PARENTESCO_PDatos.getSelectedIndex() + 1 ));
m_expediente.fijarId_TIPO_DOCUMENTO_PDatos(String.valueOf(
grpId_TIPO_DOCUMENTO_PDatos.getSelectedIndex() + 1 ));
m_expediente.fijarNumeroDocPDatos(txtNumeroDocPDatos.getString());
192
System.out.println(e.getMessage());
}
return m_numero;
}
/**
* Muestra una pantalla de indicando error
* @param strTitulo String ttulo de la pantalla
* @param strMensaje String mensaje a mostrar
* @param imagen Image imagen a desplegar en la pantalla
*/
public void ventanaError(String strTitulo, String strMensaje,
Image imagen){
alertSplash = new Alert (strTitulo, strMensaje,
imagen, AlertType.ERROR);
display.setCurrent(alertSplash);
}
/**
* Muestra una pantalla de indicacin
* @param strTitulo String ttulo de la pantalla
* @param strMensaje String mensaje a mostrar
* @param imagen Image imagen a desplegar en la pantalla
*/
public void splash(String strTitulo, String strMensaje,
Image imagen){
alertSplash = new Alert (strTitulo, strMensaje,
imagen, AlertType.INFO);
//La ventana esperar 3 segundos
alertSplash.setTimeout(3000);
}
193
/**
* Controla los eventos de comando
* @param c Command comando seleccionado
* @param s Displayable display del dispositivo
*/
public void commandAction(Command c, Displayable s){
//Salir
if (c == cmdCancelar || c == cmdCancelar2){
//Mostramos en pantalla el formulario padre
display.setCurrent(frmParent);
}
//Si elegimos aceptar
else if (c == cmdAceptar){
//Mostramos en pantalla el segundo formulario de ingreso
if (datosFrmExpedienteOK())
display.setCurrent(frmExpediente2);
}
//Si elegimos aceptar
else if (c == cmdAceptar2){
guardar();
display.setCurrent(frmParent);
}
}
}
194
3. Manual de Usuario
MovilMed
Manual
de
Usuario
Por: Nelson Hernndez
195
Si es la primera vez que se ejecuta la aplicacin, se debe ingresar la clave 0000, misma que
es posible cambiar, tal como se detallar posteriormente. Luego seleccionar Aceptar.
Si la clave ingresada es correcta, se mostrar una pantalla con el cono de la aplicacin (ver
figura 3.2 a) y luego el men principal de la aplicacin (ver figura 3.2 b), caso contrario, se
mostrar una pantalla indicando el error (ver figura 3.3).
196
(a)
(b)
Figura 3.2 Inicio de la aplicacin. (a) Icono de la aplicacin, (b) Men principal
197
Para ingresar la fecha de nacimiento del paciente, hay que seleccionar el campo respectivo
y entonces aparecer un calendario como el mostrado en la figura 3.6, donde es posible
seleccionar el ao, mes y da de nacimiento.
198
199
200
201
202
203
204
205
206
207
3.7.1. Inicializar DB
Esta funcin permite borrar la base de datos, se recomienda utilizarla solamente cuando se
instala por primera vez la aplicacin. Si se selecciona esta opcin, habiendo ya ingresado
registros en la base de datos, se mostrar un mensaje de advertencia, semejante al mostrado
en la figura 3.20.
208
209
4. Manual de Instalacin
MovilMed
Manual
de
Instalacin
Por: Nelson Hernndez
210
CLDC 1.0
MIDP 2.0
DESCRIPCION
Pgina web que contien un enlace al archivo descriptor del
MIDlet.
Archivo que describe la aplicacin contenida en movilMed.jar
Archivo empaquetado que contiene la aplicacin completa
Tal como puede apreciarse en el cdigo anterior, lo nico que se necesita es un enlace al
archivo movilMed.jad.
211
MIDlet-Jar-Size: 327680
MIDlet-Jar-URL: http://servidor/movilMed.jar
MIDlet-Name: movilMed
MIDlet-Vendor: Nelson Hernndez
MIDlet-Version: 1.0
MicroEdition-Configuration: CLDC-1.0
MicroEdition-Profile: MIDP-2.0
Tal como puede apreciarse en el contenido del archivo movilMed.jad, existe una lnea que
dice MIDlet-Jar-URL: http://servidor/movilMed.jar, esta lnea le indica
al dispositivo la ubicacin del archivo movilMed.jar, para que pueda descargarlo. En este
caso la aplicacin estara en un sitio llamado servidor.
212
4.4. Desinstalacin
La desinstalacin de las aplicaciones es muy sencilla, cada dispositivo provee sus propias
utilidades, por lo general seleccionando la aplicacin y activando sus opciones, entre las
cuales se presenta la de eliminar, esta opcin permite eliminar tanto la aplicacin como su
rea de datos.
213
Las bases de datos basadas en Java permiten mayor flexibilidad cuando se emplea
J2ME, como es el caso de PointBase.
Trabajo Futuro
214
Apndice A
Tecnologas de programacin de aplicaciones con J2ME
Java es una plataforma de software desarrollada por Sun Microsystems. Su principal
caracterstica es que est pensada de tal manera que los programas creados en ella puedan
ejecutarse sin cambio alguno en diferentes tipos de arquitecturas y dispositivos
computacionales.
Actualmente Java tiene en el mercado tres paquetes con los que cubre una amplia gama de
dispositivos. Cada uno tiene muy claramente marcado su campo de actuacin. De esta
manera Sun puede crear ediciones mejores y ms preparadas, dotando a cada edicin de las
herramientas especficas que necesita y librndola de las que no necesita para su funcin.
Las ediciones disponibles son:
J2EE
Es una edicin enfocada a dar cobertura a los servidores de empresa. Se necesitaba un
producto software distribuido, que pudiera compartir fcilmente la informacin contenida
en diferentes ubicaciones fsicas, una edicin con un mayor nmero de opciones para las
redes, se necesita un lenguaje que pudiera crear los que se conocen como enterprise
applications (Programas de empresa). Para ello Sun decidi formar la J2EE.
J2SE
Es la edicin ms conocida de Java. Es un conjunto de herramientas y APIs que permiten
desarrollar applets y otro tipo de aplicaciones. Est especialmente enfocada a cubrir las
necesidades de las aplicaciones de Internet que corren en las computadoras personales y las
estaciones de trabajo.
J2ME
215
Para una mejor comprensin, la figura A.2 muestra la estructura de la tecnologa Java, de
abajo hacia arriba, se puede observar el hardware y el sistema operativo de cada uno de las
mquinas o dispositivos, que es totalmente dependiente del fabricante y completamente
transparente a los programadores Java. Por encima se sita la capa correspondiente a la
Mquina Virtual de Java (JVM), que se encarga de ejecutar los bytecodes de las
aplicaciones Java. Sobre la capa de la JVM se encuentra el API base de Java, consistente en
todas las clases y libreras de clases comunes a todas las ediciones. Tambin se puede
apreciar que J2ME se divide en dos configuraciones: la Configuracin para Dispositivos
Conectados (CDC) y la Configuracin para Dispositivos con Conexin Limitada (CLDC),
as mismo existen perfiles, los cuales se apoyan en las configuraciones, actualmente el
perfil ms importante para dispositivos mviles es el Perfil para Dispositivos de
Informacin Mvil (MIDP).
216
Los tipos float y double no son soportados por que la mayora de dispositivos
CLDC no tienen unidad de coma flotante y porque es una operacin muy costosa.
Archivos especiales
217
En J2ME no existe una funcin main como punto de entrada para la ejecucin del
programa. En su caso existe el mtodo startApp().
Arquitectura de J2ME
J2ME al igual que un ambiente completo de Java (Java Runtime Environment) abarca una
Mquina Virtual, Configuraciones, Perfiles y Paquetes adicionales opcionales; la figura A.3
muestra la arquitectura de J2ME para dispositivos mviles.
KVM
218
Altamente portable.
Compacta.
No hay soporte para tipos en coma flotante (no existen por tanto los tipos double ni
float).
219
No se permiten los grupos de hilos o hilos daemon (Cundo se quiera utilizar grupos
de hilos se deben utilizar los objetos Coleccin para almacenar cada hilo en el
mbito de la aplicacin).
No existe soporte para JNI (Java Native Interface) debido a los recursos limitados
de memoria.
Libreras CLDC
CLDC es un tipo de configuracin. Una configuracin define el ambiente de ejecucin
bsico, es decir un conjunto de clases principales y una mquina virtual especifica que
estn orientadas a conformar el corazn de las implementaciones para dispositivos con
caractersticas especficas.
La CLDC est orientada a dispositivos dotados de conexin y con limitaciones en cuanto a
capacidad grfica, procesamiento y memoria. La mayora de las restricciones vienen dadas
por el uso de la KVM, necesaria al trabajar con la CLDC debido a su pequeo tamao. Los
dispositivos que usan CLDC deben cumplir los siguientes requisitos:
220
As mismo las libreras CLDC aportan una serie de funcionalidades a los dispositivos:
Seguridad.
221
222
APIs
El MIDP 1.0 incluy solo las APIs ms bsicas, aquellas que eran consideradas como
requerimiento absoluto para alcanzar una amplia portabilidad.
Estas APIs estn relacionadas con:
Almacenamiento persistente.
Comunicaciones en red.
Temporizadores (Timers).
MIDP 2.0
Gracias al avance tecnolgico hoy en da se cuenta con dispositivos mviles mucho ms
completos y funcionales. Ahora existen terminales con ms memoria, pantallas a color
mejoradas, soporte para multimedia, cmara fotogrfica e incluso cmara de video, acceso
a Internet. Por todo ello era necesaria una nueva versin de MIDP para sacarle provecho a
estos avances.
A continuacin se describen las caractersticas de este perfil:
Hardware
Caractersticas mnimas:
PANTALLA
Tamao: 96x54
223
ENTRADA
MEMORIA
8 KB para memoria no voltil para datos persistentes para que las aplicaciones
puedan guardar datos.
SONIDO
REDES
APIs
Al igual que MIDP 1.0, la versin 2.0 de este perfil solo incluy las APIs consideradas
como requerimiento indispensable para asegurar la portabilidad de las aplicaciones, pero
aadi las necesarias para estar acorde con los nuevos avances existentes:
Interconexin a redes.
Almacenamiento persistente.
Sonido.
224
Temporizadores.
En la tabla A.1 se presenta un resumen de los tipos de paquetes que define los perfiles
MIDP en sus dos versiones.
TIPO
Interfaz de usuario
Juegos
Ciclo de vida
Interconexin a redes
Seguridad
Sonido
Persistencia de datos
Bsicos o del ncleo
Un IDE (opcional)
SDK
Un SDK es un Kit de desarrollo de software. Se utilizar el provisto por Sun, el J2SE SDK.
ste paquete sirve para desarrollar programas Java y proporciona el entorno de ejecucin
necesario para las aplicaciones. Es necesaria la instalacin de ste producto en primer lugar,
ya que el resto de herramientas se apoyan en l. Est disponible para las plataformas
Windows, Linux y Solaris.
Emulador MIDP
225
Antes de subir las aplicaciones al mvil para probarlas es necesario tener una herramienta
de preverificacin en la computadora que compruebe si funciona correctamente. sa es,
principalmente, la razn de existir de los emuladores MIDP. En el mercado es posible
encontrar un gran nmero de ellos.
Se emplear el J2ME Wireless Toolkit que es un potente emulador provisto por Sun, que
adems trae un completo paquete de aplicaciones entre las que se puede encontrar un
sencillo pero eficaz IDE que facilita la tarea de crear y compilar las aplicaciones MIDP.
IDE
Un IDE, relacionado con programacin es un Entorno Integrado de Desarrollo (Integrated
development environment). No es una herramienta indispensable, pero puede ser de gran
ayuda al escribir Midlets.
En otras palabras, al tener instalado un IDE lo que se obtiene es un conjunto de
herramientas que facilitan el desarrollo. Alguna de estas herramientas son: un editor de
texto, un buscador de clases o browser de clases, compilacin a travs de mens.
Se emplear JEdit, ste es un editor de texto orientado a la programacin. Adems incluye
herramientas de edicin, gestin de archivos e incorpora su propio lenguaje de macros. Est
hecho en Java y es gratuito. Para trabajar en JEdit se necesita tener instalado el Java
Runtime Environment 1.3 (o posterior).
J2SDK
Se trabajar con Java 2 Edicin estndar SDK (J2SE SDK), se detallar la instalacin bajo
el sistema operativo Windows XP.
Descarga
1. Hay que descargar el instalador de:
http://java.sun.com/j2se/1.4.2/download.html y elegir la versin apropiada, para el
caso J2SE v 1.4.2_12 SDK
2. Aceptar la licencia
226
227
Configuracin Manual
1. Dar clic derecho sobre Mi PC y seleccionar Propiedades.
2. Seleccionar la pestaa Opciones avanzadas y dar clic en el botn Variables de
entorno.
228
3. Tanto en el cuadro superior como el inferior, buscar una variable que se llama Path,
si aparece en los dos cuadros, los puntos 4, 5 y 6 deben hacerse para cada una de
ellas.
4. Dar clic sobre ella y luego sobre el botn Modificar.
5. En el cuadro de valor de variable, AADIR al final (NO sustituir ni BORRAR
nada) la ruta del directorio bin de java. Por ejemplo si se instal la "j2sdk1.4.2_12"
y no se cambi el directorio de instalacin por defecto, se tendra que
aadir: ;c:\j2sdk1.4.2_12\bin.
6. Dar clic en Aceptar.
En la figura A.6 se puede ver un ejemplo de la configuracin de la variable path.
229
230
231
JEDIT
JEdit se distribuye bajo los trminos de la Licencia Pblica General de GNU. Como sta es
una aplicacin escrita en Java, corre sobre Windows, Linux, Mac OS X, y otras plataformas.
Descarga
1. Entrar en: http://www.jedit.org/
2. Elegir Download
3. En el apartado Stable version seleccionar Windows installer
232
233
midlet
debe
importar
los
paquetes
javax.microedition.midlet.*
3. Un midlet no debe tener ningn mtodo public static void main(), como ocurre en
las aplicaciones Java de escritorio.
234
235
236
237
5. Ahora se debe elegir las opciones de acuerdo a las caractersticas soportadas por el
dispositivo mvil, por ejemplo MIDP 2.0 y CLDC 1.0, luego dar clic en OK.
6. Aparecer entonces en la ventana de KToolbar (ver figura A.14) una serie de
mensajes indicando donde ubicar los archivos del proyecto.
238
En vista de que KToolbar no cuenta con un editor integrado, se hace necesario el uso de
otra herramienta, bien puede emplearse un editor de texto normal como notepad, sin
embargo existen otros editores que, por ser orientados a la programacin, hacen ms
cmoda la edicin, este es el caso de JEdit.
7. Abrir el JEdit, por defecto estar en Men inicio / Programas / jEdit 4.2 / jEdit.
8. Lo primero que se debe hacer es guardar el archivo, esto es para que el editor
reconozca que es una aplicacin java y vaya coloreando el texto, lo cual mejora la
239
//Clase principal
public class HolaMundo extends MIDlet implements CommandListener{
//Declaraciones
private Command comandosalir;
private Display mostrar;
private Form pantalla;
//Constructor
public HolaMundo(){
//Obtenemos el objeto Display del midlet
mostrar = Display.getDisplay(this);
//Creamos el comando salir
comandosalir = new Command("Salir",Command.EXIT,2);
//Creamos la pantalla principal (un formulario)
pantalla = new Form("HolaMundo");
//Creamos y aadimos la cadena de texto a la pantalla
StringItem saludo = new StringItem("","Hola Mundo!!!");
pantalla.append(saludo);
//Aadimos el comando salir e indicamos que clase lo manejar
pantalla.addCommand(comandosalir);
pantalla.setCommandListener(this);
}
240
(a)
241
(b)
242
CARACTER
DESCRIPCION
Obligatorio
Nombre del conjunto, o suite, de midlets que lo
identifica. Es el nombre que se presenta al usuario.
MIDlet-Version
Obligatorio
MIDlet-Vendor
Obligatorio
MIDlet-Icon
Opcional
MIDlet-Description
Opcional
MIDlet-Info-URL
Opcional
MIDlet-<n>
Obligatorio
MIDlet-Jar-URL
Opcional
MIDlet-Jar-size
Opcional
243
MIDlet-Jar-Data-Size
Opcional
MicroEdition-Profile
Obligatorio
MicroEdition-Configuration
Obligatorio
Las lneas siguientes muestran el contenido del archivo .jad correspondiente al midlet
HolaMundo.
MIDlet-1: HolaMundo, HolaMundo.png, HolaMundo
MIDlet-Jar-Size: 1288
MIDlet-Jar-URL: http://localhost/j2me/HolaMundo.jar
MIDlet-Name: HolaMundo
MIDlet-Vendor: Nelson Hernandez
MIDlet-Version: 1.0
MicroEdition-Configuration: CLDC-1.0
MicroEdition-Profile: MIDP-2.0
Finalmente se deben transferir los archivos .jar y .jad al dispositivo mvil, y para esto hay
varias formas, puede ser por puerto infrarrojo, bluetooth, cable de datos, o a travs de
Internet.
Posterior a la transferencia, slo queda entrar en el men del dispositivo mvil, acceder a la
carpeta donde fueron copiados los archivos y ejecutar el .jar, et voil.
Explicacin del Midlet HolaMundo
Se explicar a continuacin el cdigo del midlet HolaMundo.
Importacin de paquetes
El cdigo del midlet comienza con las lneas siguientes:
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
244
245
public HolaMundo(){
El constructor debe llevar el mismo nombre que la clase, no hay que especificar tipo de
retorno (ni si quiera poner void) y es de acceso pblico.
En el constructor de clase se establecen los valores que han de tomar las variables, se crean
las instancias de las clases.
Cuando se ejecuta un midlet, se crea un objeto display. Este objeto ser el encargado de
mostrar informacin en la pantalla. Para poder utilizarlo, se tiene que obtener una
referencia a dicho objeto. Esto es lo que hace precisamente la siguiente lnea mediante el
mtodo getDisplay() del objeto esttico Display.
mostrar = Display.getDisplay(this);
Un comando es un elemento que permite interactuar con el usuario. Para crear un comando
se debe crear una instancia (con new) de la clase Command(). Como parmetro se le pasa
el texto del comando, el tipo de comando y la prioridad. En un comando, la prioridad indica
la importancia de ese comando con respecto a otros en la pantalla, dicha prioridad puede ir
de 1 a 10, siendo 1 el valor de prioridad ms alto.
comandosalir = new Command("Salir",Command.EXIT,2);
En la siguiente lnea se instancia (con new) un objeto Form con ttulo HolaMundo y de
nombre pantalla. sta ser la pantalla principal del proyecto.
pantalla = new Form("HolaMundo");
En la siguiente lnea se declara y crea una cadena de texto inicializndola con la frase
Hola Mundo!!!.
StringItem saludo = new StringItem("","Hola Mundo!!!");
246
Mtodos obligatorios
Hay tres mtodos estticos que es obligatorio declararlos (aunque no contengan cdigo),
stos son: pauseApp, destroyApp y startApp. En la aplicacin HolaMundo slo se codifica
el ltimo de los citados anteriormente, as pues, el resto quedan vacos.
El mtodo startApp es el que se ejecuta justo despus del constructor, podra compararse
con el procedimiento main de los programas escritos en la mayora de los lenguajes.
En este caso, el mtodo startApp, slo lleva una instruccin que se encarga de seleccionar
(con el mtodo setCurrent()), la pantalla que se mostrar, en este ejemplo pantalla es la
pantalla principal.
public void startApp() throws MIDletStateChangeException{
mostrar.setCurrent(pantalla);
}
El siguiente mtodo se encarga de controlar las acciones que se deben realizar cuando la
aplicacin queda pausada por el usuario, por la misma aplicacin o por otra.
public void pauseApp(){
}
El mtodo destroyApp, se encarga de controlar las acciones que deben llevarse a cabo antes
de finalizar la aplicacin.
public void destroyApp(boolean incondicional){
}
Otros mtodos
Las siguientes lneas de cdigo sirven para implementar el mtodo que se encarga de
procesar los comandos:
public void commandAction(Command c, Displayable s){
//Salir
if (c == comandosalir){
destroyApp(false);
notifyDestroyed();
247
}
}
248
Apndice B
PointBase Micro
Actualmente existen en el mercado diversos gestores de bases de datos orientados a los
dispositivos mviles, y en todos ellos prevalece la caracterstica del small footprint, es decir,
consumo mnimo de memoria. El acceso a las bases de datos, desde aplicaciones en
dispositivos mviles, generalmente se hace a travs de ODBC o JDBC. Adems, la mayora
de estos gestores proporciona utileras para sincronizacin de datos entre el dispositivo
mvil y un servidor de base de datos corporativo.
PointBase Micro y Transformation Server es la solucin presentada por DataMirror Mobile
Solutions Inc. para el almacenamiento y sincronizacin de datos entre dispositivos mviles
y servidores de bases de datos corporativas.
Descarga
DataMirror proporciona versiones de evaluacin de sus productos, por lo tanto es posible
descargar PointBase Micro, de la siguiente manera:
1. Entrar en: http://www.pointbase.com
2. Dar clic en Download
3. Completar el proceso de registro
4. Elegir el producto a evaluar
5. Aceptar la licencia
6. Descargar el instalador y documentacin apropiada al sistema operativo
Instalacin
Se explicar brevemente la instalacin de PointBase Micro en el sistema operativo de
escritorio Windows.
1. Descomprimir el archivo descargado.
249
250
Dentro de la carpeta lib se encuentran los archivos necesarios para acceder a la base de
datos. Para el perfil MIDP se debe utilizar la librera pbmicroMIDP54ev.jar (Donde: 54 es
la versin, es decir 5.4, y ev significa que es una versin de evaluacin).
Se mostrar a continuacin un ejemplo de acceso a base de datos desde de una aplicacin
J2ME empleando la librera pbmicroMIDP54ev.jar. Se presupone que Java est instalado
en el directorio C:\j2sdk1.4.2_12 y que el J2ME Wireless Toolkit est instalado en
C:\WTK22.
1. Empleando KToolbar, crear un proyecto con el nombre eisi, lo cual generar una
estructura de directorios como la mostrada en la figura B.2
2. Crear dos carpetas dentro de la carpeta eisi una con el nombre classes y la otra con
el nombre preverified.
3. Haciendo uso de una utilera de compresin, como winrar, extraer el contenido del
archivo pbmicroMIDP54ev.jar, el cual tiene dos carpetas: com y META-INF.
Copiar la carpeta com dentro de la carpeta classes creada en el paso anterior. Con lo
cual quedar una estructura como la mostrada en la figura B.3.
4. En un editor de texto plano (como el notepad), escribir el cdigo mostrado a
continuacin y guardarlo con el nombre eisi.java dentro de la carpeta src del
proyecto eisi.
//Clase principal
public class eisi extends MIDlet implements CommandListener{
//Declaraciones
private Command comandosalir;
private Display mostrar;
private Form pantalla;
251
252
}
public void destroyApp(boolean incondicional){
// Cerramos la conexin a la base de datos
try {
if(con!= null){
con.close();
con = null;
}
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
public void commandAction(Command c, Displayable s){
//Salir
if (c == comandosalir){
destroyApp(true);
notifyDestroyed();
}
}
}
con = DriverManager.getConnection(
"jdbc:pointbase:micro:eisi", "admin", "admin")
253
254
el
tamao
del
archivo
eisi.jar
(ubicado
en
255
256
257
Glosario
ADO
API
Atributo
Atributo Atmico
Lenguaje de programacin.
C++
258
Certificado
Clase
CLDC
Constructor
Descriptor (.jad)
Driver
Embedded
Emulador
Encriptacin
259
Framework
GCC
GNU
HTML
HTTP
IDE
Intellisense
260
J2ME
Java
JDBC
JVM
Manifiesto (.mf)
Mtodo
Midlet
261
Midlet Suite
MIDP
Objeto
ODBC
PHP
RSA
SDK
SQL
UML
262
Variable Path
WAP
Web-to-Go
Windows CE O/S
XML
263
Referencias Bibliogrficas
Libros de texto
[FRO04] Froufe Quintas, Agustn; Jorge Crdenes, Patricia, Java 2 Micro Edition
(J2ME). Manual de usuario y tutorial, Ra-Ma Editorial, Espaa, 2004.
Sitios web
264
265
266
[ORC06-1] Oracle, Oracle Database Lite 10g Build, Deploy, and Manage
Mobile Applications,
(http://www.oracle.com/database/Lite_Edition.html) (7 agosto
2006).
(Informacin acerca del gestor de bases de datos Oracle Database Lite)
267
268
269
ndice Alfabtico
Base de Datos, 95
IDEs, 3, 138
cita, 11, 12, 17, 21, 42, 43, 46, 72, 79, 80,
J2MEWTK, 229
40, 41, 42, 43, 44, 50, 51, 67, 68, 76,
77, 78, 79, 87, 112, 113, 114, 115, 116,
117, 118, 119, 120, 122, 131, 146, 170,
172, 177, 182, 203
Dispositivos Mviles, 1, 3, 1, 3
Emuladores, 3
evolucin, i, 10, 11, 12, 17, 22, 44, 45, 68,
80, 81, 85, 90, 116, 117, 118, 119, 120,
121, 139, 177, 182, 183, 204
expediente, 9, 11, 12, 16, 18, 37, 38, 39,
40, 41, 42, 43, 44, 60, 75, 85, 87, 105,
PDA, i, 1, 2, 6, 263