Documentos de Académico
Documentos de Profesional
Documentos de Cultura
09 - Libro Complet0 PDF
09 - Libro Complet0 PDF
UN SISTEMA
DESDE CERO
UN PROYECTO COMPLETO -
SISTEMA DE GESTION DE TURNOS MEDICOS
INTRODUCCION
CAPITULO I: CONCEPTOS
Organigramas 009
Objetivos 009
Utilidad del Organigrama 010
Principios Básicos del Organigrama 010
Distintos Sistemas de Representación de Organigramas 011
Sistemas Triangulares 012
Sistemas Circulares 016
Cursogramas 017
Conceptos
SISTEMA DE INFORMACION
1
El equipo computacional: el hardware necesario para que el sistema de información pueda operar.
2
El recurso humano que interactúa con el Sistema de Información está formado por las personas que utilizan el
sistema.
Página 1
PARA ESQUEMATIZAR LO EXPRESADO RECIENTEMENTE PODEMOS
EXPONER LO SIGUIENTE:
Almacen
amiento
EJEMPLO:
A continuación se muestran las diferentes actividades que puede realizar un
Sistema de Información de Control de Clientes:
Entradas:
• Datos generales del cliente: nombre, dirección, tipo de cliente, etc.
• Políticas de créditos: límite de crédito, plazo de pago, etc.
• Facturas (interfase automático).
• Pagos, depuraciones, etc.
Proceso:
• Cálculo de antigüedad de saldos.
• Cálculo de intereses moratorios.
• Cálculo del saldo de un cliente.
Almacenamiento:
• Movimientos del mes (pagos, depuraciones).
• Catálogo de clientes.
• Facturas.
Salidas:
• Reporte de pagos.
• Estados de cuenta.
• Pólizas contables (interfase automática)
• Consultas de saldos en pantalla de una terminal.
Página 2
TIPOS DE SISTEMAS DE INFORMACION
SISTEMAS OPERACIONALES
Los sistemas de planeación estratégica son utilizados por los gerentes en jefe
para evaluar y analizar la misión de la organización. En lugar de dar consejos
acerca de alguna decisión de negocios aislada, estos sistemas ofrecen
consejos más amplios y generales acerca de la naturaleza del mercado, las
preferencias de los consumidores, el comportamiento de la competencia, etc.
Página 3
Los sistemas de planeación estratégica no son programas de computadora en
sí; son complejas combinaciones de actividades y procedimientos, muchas de
las cuales las llevan a cabo humanos utilizando información obtenida de
fuentes externas (estudios de mercado, etc.) y datos internos de los sistemas
operacionales de la organización y los sistemas de apoyo a decisiones.
Sistemas
de
Planeación
Estratégica
Sistemas de Apoyo
a la toma de
Decisiones
Sistemas
Operacionales
Página 4
ORGANIZACIÓN DE UN PROYECTO DE DESARROLLO DE UN SISTEMA
Para poder llevar a cabo el conjunto de tareas que componen la totalidad del
proyecto de desarrollo de sistemas, se debe contar con una organización
adecuada a tal necesidad.
Comité de
Administración y
Control de
Sistemas
Líder
del
Proyecto
Analista
de Programadores Usuarios
Sistemas
b) Líder de Proyectos
Sus funciones radican en conducir el equipo de trabajo que realiza las tareas
Página 5
c) El analista de Sistemas
d) Usuarios
Página 6
Usuarios Operacionales
Usuarios Supervisores
Los usuarios ejecutivos se preocupan más por los detalles estratégicos y las
ganancias/perdidas a largo plazo y se interesan en el panorama global del
sistema.
Los usuarios ejecutivos por lo general pueden trabajar con modelos abstractos
de un sistema; de hecho, no estarán interesados en los “modelos físicos” del
sistema y se preguntaran por que se toma usted la molestia de mostrárselos.
e) Los Programadores
Página 7
Capítulo 2
Técnicas de
Obtención de Datos
TECNICAS DE INVESTIGACION
LA ENTREVISTA
Las entrevistas se utilizan para recabar información en forma verbal, a través
de preguntas que propone el analista. Quienes responden pueden ser gerentes
o empleados, los cuales son usuarios actuales del sistema existente, usuarios
potenciales del sistema propuesto o aquellos que proporcionarán datos o serán
afectados por la aplicación propuesta. El analista puede entrevistar al personal
en forma individual o en grupos algunos analistas prefieren este método a las
otras técnicas que se estudiarán más adelante. Sin embargo, las entrevistas no
siempre son la mejor fuente de datos de aplicación. Dentro de una
organización, la entrevista es la técnica más significativa y productiva de que
dispone el analista para recabar datos. En otras palabras, la entrevista es un
intercambio de información que se efectúa cara a cara. Es un canal de
comunicación entre el analista y la organización; sirve para obtener información
acerca de las necesidades y la manera de satisfacerlas, así como consejo y
comprensión por parte del usuario para toda idea o método nuevos. Por otra
parte, la entrevista ofrece al analista una excelente oportunidad para establecer
una corriente de simpatía con el personal usuario, lo cual es fundamental en
transcurso del estudio.
LA ENCUESTA
Una "encuesta" recoge información de una "muestra." Una "muestra" es
usualmente sólo una porción de la población bajo estudio. No sólo las
encuestas tienen una gran variedad de propósitos, sino que también pueden
conducirse de muchas maneras, incluyendo por teléfono, por correo o en
persona.
EL CUESTIONARIO
Para los analistas los cuestionarios pueden ser la única forma posible de
relacionarse con un gran número de personas para conocer varios aspectos del
sistema. Cuando se llevan a cabo largos estudios en varios departamentos, se
pueden distribuir los cuestionarios a todas las personas apropiadas para
recabar hechos en relación al sistema. Al igual que la entrevistas, deben
diseñarse cuidadosamente para una máxima efectividad.
LA OBSERVACIÓN
Esta técnica consiste en observar a las personas cuando efectúan su trabajo.
Como técnica de investigación, la observación tiene amplia aceptación
científica. Permite al analista determinar qué se está haciendo, cómo se está
haciendo, quien lo hace, cuando se lleva a cabo, cuanto tiempo toma, dónde se
hace y por que se hace."¡Ver es creer! Observar las operaciones le proporciona
al analista hechos que no podría obtener de otra forma.
Página 8
Capítulo 3
CIRCUITOS
ADMINISTRATIVOS
DE LA
EMPRESA
ORGANIGRAMAS
Página 9
UTILIDAD DEL ORGANIGRAMA
a) Unidad de mando
b) Relaciones de dependencias claras y definidas
c) Definición precisa de los niveles jerárquicos
d) Definición de las principales funciones ejecutivas y asesoras
e) División del trabajo
f) Subordinación y dependencia
g) Existencia de responsabilidad y delegación de autoridad
Página 10
DISTINTOS SISTEMAS DE REPRESENTACION DE ORGANIGRAMAS
SISTEMAS
TRIANGULARES
DIAGRAMACION PIRAMIDAL
VERTICAL VERTICAL
LINEAL
SISTEMA AFNOR
ANTIGUO
TIPOS DE
REPRESENTACION DIAGRAMACION PIRAMIDAL
HORIZONTAL HORIZONTAL
SISTEMA AFNOR
ACTUAL
ORLOGRAMA
SISTEMA
CIRCULAR
SISTEMAS
CIRCULARES
SISTEMA SEMI-
CIRCULAR
Página 11
SISTEMAS TRIANGULARES
PIRAMIDAL VERTICAL
NIVEL 1
Página 12
a.2) Lineal
Página 13
b.2) Sistema AFNOR Actual (Sistema Francés Actual)
b.3) Orlograma
Este sistema fue ideado por JACQUES LORSTEIN, y tiene gran similitud con el
actual sistema francés y no tiene mayor ventaja sobre éste. Su denominación
surge de la combinación de 4 silabas: OR, que son las dos primeras letras de
organización; LO, por las dos primeras letras del apellido del autor, y GRAMA
como sufijo, por escritura o dibujo.
ALCANCES
Página 14
Líneas de dependencia: son las líneas que relacionan jerárquicamente los
entegramas. Vale decir que son aquellas líneas que unen los entegramas de
mayor jerarquía con los de igual o menor jerarquía, dependientes de aquellos.
Cantidad de
AREA Personal
Responsable
SISTEMAS CIRCULARES
Estos sistemas no están tan difundidos como los triangulares, por varias
razones:
Página 15
SISTEMA CIRCULAR
JEF
E
CON DPTO
TA .
GE B.
NTE IAL FIN RE
E RC AN NT
E R E CI E
G OM ER
C GERENTE O
GE GENERAL -
PR RE AD IVO
OD NT
E N TE A T
UC D E R
TO E ER IST
S G IN
M
GERENTE
F IN
D .
TE
.
E.
GENERAL
G
GT E.
A
E
PRO . GT M.
D CO
Página 16
CURSOGRAMAS
TABLA DE SIMBOLOGIAS
Página 17
Archivo transitorio Representa el almacenamiento
sistemático en forma temporaria de
elementos portadores de información.
Cabe aclarar que se considera como
elemento portador de información a todo
vehículo que se emplea en un
procedimiento administrativo, tales
como formularios, el microfilm de los
documentos comerciales, las cintas
perforadas, los discos magnéticos, etc.
Su característica fundamental es la
consulta sistemática.
Archivo definitivo Representa el almacenamiento
permanente de elementos portadores de
información.
Como eventualmente puede ser
consultado, debe ser ordenado
sistemáticamente, pues de lo contrario
perdería utilidad como archivo y sería
una mera guarda de documentos.
Su característica de permanencia, que
lo identifica, no significa que la
documentación del mismo debe ser
guardada indefinidamente, sino que se
retiene por lapsos prolongados ante una
eventual necesidad de consulta o
inspección, o en cumplimiento de
disposiciones legales.
Operación y control Es la unión de los primeros. Ej. La
simultaneo persona que hace la factura es la misma
que la verifica.
Destrucción Este símbolo representa la eliminación
de la información, se destruya o no el
soporte que lo sostiene.
El elemento que soporta los datos
puede volver a usarse, si ello es posible,
con un nuevo uso o destino, tal como
ocurre con las cintas o discos
magnéticos que se vuelven a procesar,
puesto que sirven para múltiples usos.
Por ejemplo un diskette del que se
destruye la información, pero no el
diskette.
Página 18
SIMBOLOS REPRESENTATIVOS DE CURSOS DE ACCION
Página 19
SIMBOLO DE SOPORTE DE INFORMACION
SIMBOLO DE DESLOCE
Página 20
Capítulo 4
HERRAMIENTAS PARA
LA GESTION DE
PROYECTOS
DIAGRAMA DE GANTT
Para llevar a cabo esta técnica se comienza por hacer un listado de cada una
de las tareas, identificando a cada una de ellas con una letra, haciendo una
descripción y colocando su duración.
Cada tarea o actividad se representa por una línea proporcional al tiempo que
demanda la misma. Por ejemplo, si se desea estar de regreso de vacaciones el
día 20 de febrero y en el viaje de vuelta se emplean 2 días, éste tendrá que
comenzar el 18 de febrero. Tal circunstancia se indicará con una línea que
abarca 2 días.
Se debe considerar también que existen tareas que pueden llevarse a cabo en
forma simultánea. Éstas se representan a la misma altura.
Página 21
Desventajas del diagrama de GANTT
Supóngase que una familia decida planear sus vacaciones con suficiente
anticipación, sobre todo teniendo en cuenta que se dispone por razones de
trabajo, de sólo 20 días.
Página 22
Leyendas:
• Una vez finalizada la investigación acerca del estado de los caminos voy a
comenzar a averiguar acerca de la documentación que necesito para el viaje
• El auto voy a comenzar a prepararlo recién una vez que conozca el hotel
donde voy a hospedarme
1 2 3 4 5 6 7 8 9 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3 3 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2
A
B
C
D
E
F
G
H
I
J
K
L
M
Página 23
PERT (EVALUACION DE PROYECTOSY REVISION TECNICA)
A B C
1 2 3 4
Características
Página 24
A continuación se detallan los Tipos de relaciones existentes:
a) Relación lineal
A B
1 2 3
1
A
B D
2 4 5
C
3
B
A C
1 2 4
D
Página 25
Entre los sucesos se pueden crear convergencias, o divergencias, o ambas.
Una vez construido el grafo completo del programa se numeran cada uno de
los sucesos.
Para ello, si el grafo está bien dibujado por niveles, se irán numerando sus
nodos desde 1 en adelante, de izquierda a derecha, y en un mismo nivel de
arriba a abajo, de modo que si para una actividad el suceso inicial es el i y el
final es el j, se cumple siempre que i < j:
Actividad
i j
Actividades Ficticias
A C E
1 2 3 4
D
3
B F1
A C E
1 2 5 6
F2
4
Página 26
La elaboración del grafo PERT de un programa implica la construcción del
cuadro de prelaciones formado por dos columnas:
Siempre supondremos que habrá un único suceso inicio y otro suceso fin de
proyecto, que se averigua de las siguientes formas:
a) Conocido el cuadro de prelaciones, del suceso inicio del proyecto partirán las
actividades que no tengan anteriores.
• A y B comienzan a la vez
• D, E y F empiezan tras haber finalizado A
• C empieza al terminar B
• G empieza al acabar C y F
Para construir el grafo PERT, lo más sencillo suele ser construir el cuadro de
relaciones formado por 2 columnas:
ACTIVIDAD ANTERIORES
A -----------------
B ------------------
C B
D A
E A
F A
G C,F
Página 27
Dibujando el PERT en pasos sucesivos iríamos obteniendo las fases
siguientes:
Página 28
D
E
A
F
B
E
A
F
B
2
=
G
Página 29
Finalmente, puesto que D, E y G no aparecen en la columna "anteriores", son
las actividades que terminan en el suceso final del programa:
D
A E
B F
2
=
G
C
Actividades Ficticias
Las actividades ficticias son actividades no reales que surgen como necesidad
de representar ciertas situaciones en un grafo. No consumen ni tiempo ni
recursos. Las representamos con línea de puntos.
Se utiliza cuando hay actividades en paralelo.
Página 30
En nuestro caso, detrás de la D añadimos un nuevo suceso con su actividad
ficticia, resultando finalmente el grafo de la siguiente figura.
D
F1
A E
F
B
G
D=1
2 4 F1
6 =
A= E= 0
3
6
F
1
=
=2
4
B=
4 G
C=2
3 5
Página 31
Formulas para cálculos de tiempo early (temprano) y tiempo last (tardío)
Tiempo Early: es el menor tiempo que se puede emplear para llegar a ese
suceso. El suceso inicio del proyecto tendrá tiempo early nulo, para el resto es
el resultante de:
Tiempo Last: Es el mayor tiempo que se puede emplear hasta llegar a ese
suceso para que la duración del proyecto no se retrase.
El suceso final del proyecto tendrá tiempo last igual a su tiempo early. Para los
restantes nodos se calculará mediante:
Tiempo Last
Tiempo Early
Número de suceso
Holgura de una actividad: es igual al tiempo last del suceso final menos el
tiempo early inicial menos el tiempo de la actividad
HA(i,j) = t'(j) - t(i) - t(i,j)
Indica el tiempo que puede retrasarse una actividad sin retrasar el proyecto
Camino crítico: Va del suceso inicial al suceso final y viene determinado por
aquellas actividades que son CLAVE para que el proyecto total no se retrase.
Página 32
Calculo de los tiempos early y last
D=1
6 6 6+1
7 12
0+6
2 4 F1
6 =
A= E= 0
7+
3 0
6+
3
6-6
12 12
0 0
F
6
=
1 +2
4
10
B=
8-4
4 =2
6+
0+4 G
4
4 8 C=2 4+2
10 10
3 5
1. Marcar los nodos cuyo tiempo early sea igual a su tiempo last
2. Investigar posibles caminos que puedan unir los nodos anteriores,
marcando aquellas actividades cuya holgura sea nula.
D=1
6 6 6+1
7 12
0+6
2 4 F1
6 =
A= E= 0
7+
3 0
6+
3
6-6
12 12
0 0
F
6
=
1 2
4
+
10
B=
8-4
4 =2
6+
0+4 G
4
4 8 C=2 4+2
10 10
3 5
Página 33
Capítulo 5
Las Herramientas
De Modelado
HERRAMIENTAS DE MODELADO
DIAGRAMA DE CONTEXTO
a-
1 nombre
Nombre
Elemento Nombre
Externo Sistema
ENTIDAD FLUJO DE
EXTERNA SISTEMA DATOS
Página 34
ENTIDAD EXTERNA
Identificación
Letra minúscula que
Identifica a la EE
aa
Cliente
Cliente Descripción
Nombre de la EE
PROCESO
Página 35
FLUJO DE DATOS
• Es información en
movimiento, que va de un
punto a otro
• Tiene un origen y un
destino
• Dos flujos de datos con el
mismo nombre llevan la
misma información
ctivador
Flujo de Datos
ENTIDAD EXTERNA
Las entidades externas son una persona o un grupo, o departamento que esté
dentro de la misma compañía u organización, pero fuera del control del sistema
que se está modelando y con las cuales el sistema se comunica.
1. Son externos al sistema que se está modelando. Los flujos datos que
conectan al terminador con el sistema representan la interfaz entre él y el
mundo externo
2. La entidad externa está fuera del dominio del cambio, es decir, el analista
no tiene posibilidades de cambiar los contenidos de un terminador o la
manera en la que trabaja.
3. Las relaciones que existan entre los terminadores no se muestran en el DC.
Pudiera existir de hecho, diversas relaciones, pero, por definición no son
parte del sistema que se está estudiando.
Página 36
PROCESO
FLUJOS DE DATOS
• Jamás puede haber flujos de datos que vinculen a elementos externos entre
sí
TABLA DE EVENTOS
Para modelar los eventos de mi sistema voy a usar una “tabla de eventos” cuyo
diseño es el siguiente
Página 37
ELEMENTOS DE LA TABLA DE EVENTOS
• Tipo de evento
No existe una entidad externa que dispare ese proceso temporal y “si no tengo
un ente que me solicita algo no tengo un flujo de entrada”.
• Entidad
• Nombre
• Flujo de Entrada
• Flujo de Salida
• Función Principal
Voy a identificar un proceso que a partir de esa entrada genera una salida. Es
una acción que tiene que realizar mi sistema para responder al ente en base a
la entrada.
Página 38
DIAGRAMA DE FLUJO DE DATOS:
CONVENCION DE SIMBOLOS
a-
1
Nombre D1 Nombre
Nombre
Elemento Demora
Proceso
Externo
ENTIDAD EXTERNA
Identificación
Letra minúscula que
Identifica a la EE
aa
Cliente
Cliente Descripción
Nombre de la EE
Página 39
PROCESO
Ingresar
Solicitud
FLUJO DE DATOS
Flujo Activador
Flujo de Datos
Página 40
DEMORA
D1 TARIFAS
Nombre de la demora
Es el nombre identificativo
de lo que representa esta
estructura
Número de la demora.
Lleva la letra ‘D’ seguida
del número de la demora
PROCESO
Los elementos propios del sistema son funciones, pero se los llamará
procesos. Los sinónimos comunes son burbuja, función o transformación.
Página 41
FLUJOS DE DATOS
EJEMPLO
AZUCAR
PASTEL
HORNEAR
PASTEL
LECHE
Los datos que se mueven a lo largo de dicho flujo viajarán ya sea a otro
proceso (como entrada) o a un almacén o a un terminador.
Página 42
DEMORA o ALMACEN
☺ Si a una demora llega un sólo flujo de datos y sale uno sólo; ambos flujos
de datos deben ser el mismo.
Página 43
INTEGRACION DE DIAGRAMA DE CONTEXTO Y DIAGRAMA DE FLUJO
DE DATOS
c) Con el mismo criterio se hace evidente que puede haber otros usuarios para
los cuales este nivel de detalle ya no resulta suficiente; para ellos se deberán
producir otros niveles de DFD, de mayor grado de detalle todavía, hasta llegar
a una situación satisfactoria. (Se pasa del diagrama de sistema a otro diagrama
más minucioso)
Página 44
GUIA PARA LA CONSTRUCCION DE UN DFD
Armados con los cuatro componentes que forman un DFD estamos listos para
comenzar a entrevistar a los usuarios y a construir modelos de DFD de
sistemas.
La técnica sugiere que debe evitarse esto, pero, ¿cómo puede evitarse el tipo
de DFD confuso cuando en la realidad cuento con una gran cantidad de
procesos?
El primer nivel de DFD consta sólo de una burbuja que representa el sistema
completo. Es lo que hemos dado en llamar DIAGRAMA DE CONTEXTO.
Página 45
Los números también sirven como una manera adecuada de relacionar una
burbuja con el siguiente nivel del DFD que la describe más a fondo.
DIAGRAMA DE CONTEXTO
1 2
2.1 3 4
2.2
2.3 NIVEL 1
2.4
NIVEL 2
Es importante tener en cuenta que las mismas sólo hacen referencia a un tema
de nomenclatura para poder distinguir la misma frente a la lectura de diferentes
autores.
☺ Los elementos propios del sistema son funciones, pero se los llamará
procesos.
Página 46
DIAGRAMA ENTIDAD-RELACION (D.E.R)
•ENTIDADES
•RELACIONES
•CARDINALIDAD
•MODALIDAD
•ATRIBUTOS
Página 47
Se puede definir como ENTIDAD a cualquier objeto, real o abstracto, que
existe en un contexto determinado o puede llegar a existir y del cual deseamos
guardar información.
Cliente Artículo
R8
Cliente Artículo
Página 48
Es importante reconocer que cada instancia de la relación representa una
asociación entre cero o más ocurrencias de un objeto y cero o más ocurrencias
del otro.
compra
CLIENTE ARTICULO
Todo esto se muestra mediante el uso de una relación junto con la cardinalidad
y modalidad en la relación
• Relación Uno a Uno: Cuando una instancia de una entidad sólo Uno a Uno
puede estar relacionada con una única instancia de otra entidad
viceversa.
• Relación Uno a Muchos: Cuando una instancia de una entidad Uno a Muchos
(entidad 2) sólo puede estar relacionada con una única instancia de
la otra entidad (entidad 1) y una instancia de la entidad 1 puede
tener más de una instancia relacionada en la entidad 2.
Página 49
EJEMPLOS COMPLETOS
Cardinalidad
Tiene
Uno a uno Buque Capitán
Es asignado
Tiene
Uno a Muchos Cliente Factura
Pertenece
Modalidad
Obligatoria
Opcional
Página 50
EJEMPLOS COMPLETOS
Modalidad
Cantidad mínima de instancias de una entidad que se relaciona
con otra entidad.
Indica si una instancia debe participar en la relación
provee
Opcional Proveedor Artículo Opcional
Es provisto por
Modalidad
•Cantidad mínima de instancias de una entidad que se relaciona
•con otra entidad.
•Indica si una instancia debe participar en la relación
provee
Opcional Proveedor Artículo Opcional
Es provisto por
Página 51
EJEMPLIFICACION Y LECTURA
DEPTO PROFESOR
HSC Claudio
TEC Alejandra
Relación Obligatoria
Christian
MODALIDAD Relación Opcional
Agustina
r1
CURSO ALUMNO
Adriana
Primer Año – A Claudio
Primer Año – B Alejandra
Segundo Año - A Christian
Agustina
Página 52
MODELO CONCEPTUAL DE DATOS
ATRIBUTOS
Ejemplos
Cliente Artículo
☺ SUPER-TIPO/ SUB-TIPO
☺ EXCLUYENTES
Página 53
MODELO CONCEPTUAL DE DATOS
PARTICION RELACION DE MUCHOS A MUCHOS
Muchos a Muchos
r1
Materia Alumno
Resultado
r1
Materia Alumno
r1 R2
EXAMEN
PROFESOR CURSO
PROFESOR CURSO
Christian
Agustina
• Un Profesor puede estar asignado en varios Cursos
• Un Curso puede tener muchos Profesores asignados
Página 54
MODELO CONCEPTUAL DE DATOS
PARTICION RELACION DE MUCHOS A MUCHOS
Página 55
MODELO CONCEPTUAL DE DATOS
SUPER-TIPO / SUB-TIPO
Cliente
R1 R2
Cliente Cliente
Mayorista Minorista
RELACIONES EXCLUYENTES
Cliente
R1 R2
Cliente Cliente
Mayorista Minorista
Página 56
DICCIONARIO DE DATOS (D.D)
• ENTIDAD
• RELACION
• ATRIBUTOS
ENTIDAD
Nombre (ENT)
Atributos
nombre
Rol: Identificador Simple
Parte del identificador
Descriptor
Relaciones
RELACION
ATRIBUTO
Nombre (ATR)
Tipo (Caracter, Numérico....)
Longitud
Valor por Defecto
Página 57
BALANCEO DE MODELOS
D.E.R.
D.F.D.
Página 58
CÓMO BALANCEAR AMBAS HERRAMIENTAS
• Cada demora del DFD debe corresponderse con al menos una entidad en
el DER. Si existe una demora en el DFD que no aparece en el DER, algo
anda mal.
• Los nombres de las entidades del DER y los nombres de las demoras en
el DFD deben coincidir. La convención que seguimos fue utilizar la forma
plural (ejemplo: CLIENTES) en el DFD y la forma singular en el DER.
RESTRICCIONES
• Toda DEMORA (del DFD) tiene por lo menos una ENTIDAD (del DER)
adentro
EJEMPLO
Tiene
Factura Item Factura
Pertenece
(cabecera)
D1 FACTURAS
FORMA DE REPRESENTACIÓN
Página 59
NORMALIZACION
DEFINICION
VENTAJAS
Página 60
NOCIONES NECESARIAS PARA LUEGO PODER COMPRENDER EL
PROCESO DE NORMALIZACION
Ej.
Cod. Cliente
Nombre Cliente
Dirección Cliente
Dependencia Funcional
Clave Candidata
Página 61
Clave Principal
Cod. Cliente
Tipo de Documento Clave Candidata
Nro de Documento
Razón Social
Atributo No Clave
Cod. cliente
Tipo de Documento
Nro de Documento
Razón Social
GRADOS DE NORMALIZACION
REGLA DESCRIPCION
Primera Forma Normal Una Estructura está en primera forma
normal (1FN) si y sólo si no tiene
atributos repetitivos.
Segunda Forma Normal Una estructura está en Segunda
Forma Normal (2FN) si y sólo sí se
precisa la totalidad de la clave
principal para determinar a cada uno
de los atributos que no pertenecen a
ella.
Página 62
REGLA DESCRIPCION
Tercera Forma Normal • Una Entidad está en Tercera
Forma Normal (3FN) si y sólo si no
existen dependencias funcionales
entre sus atributos no claves.
Una tabla está normalizada en esta forma si todas las columnas que no son
clave son funcionalmente dependientes por completo de la clave primaria y no
hay dependencias transitivas. Una dependencia transitiva es aquella en la cual
existen columnas que no son clave que dependen de otras columnas que
tampoco son clave.
Página 63
Boyce y Codd
EJEMPLO
Para explicar con un ejemplo en que consiste cada una de las reglas, vamos a
considerar los datos de la siguiente estructura.
ALUMNOS
DNI-Alumno
Codigo-Curso
Apellido Alumno
Nombre Alumno
Dirección Alumno
Codigo-Provincia
Provincia
Telefono-alumno *(1,3)
Nota
Tutor
Asignatura
Según las reglas del Primer Nivel de Normalización debemos eliminar los
atributos / grupos repetitivos
Página 64
Obviamente necesitamos crear un sistema funcional que pueda crecer y
adaptarse fácilmente a los nuevos requisitos y por lo tanto comenzamos
aplicando Primera Forma Normal
ALUMNO AL-TELEFONO
DNI-Alumno DNI.Alumno
Codigo-Curso Telefono-alumno
Apellido Alumno
Nombre Alumno
Dirección Alumno
Codigo-Provincia
Provincia
Nota
Tutor
Asignatura
Página 65
El DNI-Alumno y Codigo-Curso forman la clave principal para esta tabla y sólo
la Nota tiene dependencia funcional completa. El nombre y el apellido
dependen solamente del DNI-Alumno.
ALUMNO
DNI-Alumno Nombre-Alumno Apellido-Alumno
12121212A Pedro Fernández
13131313A Ana García
26262626A Sara Crespo
AL-NOTA
DNI-Alumno Codigo-Curso Nota
12121212A G1 9
12121212A G2 8
13131313A G1 6
13131313A G2 7
26262626A G1 6
26262626A G2 9
Página 66
3ra. FORMA NORMAL
Ocurre ahora que si cumple con la Segunda Forma Normal pero existe algún
atributo que depende funcionalmente de atributos que no son clave, no
estamos cumpliendo con las reglas de la 3ra FORMA NORMAL.
El arreglo sería:
Codigo-Provincia Provincia
34 Buenos Aires
35 García
34 Buenos Aires
Página 67
BCNF
La Forma Normal BCNF ocurre si una tabla está en tercera forma normal y
además todo determinante es una clave candidata.
• {Tutor, DNI-Alumno}
• {Asignatura, DNI-Alumno}
La solución sería:
TUTORIAS
DNI-Alumno Tutor
12121212A Adriana
12121212A Alejandra
13131313A Alejandra
26262626A Adriana
TUTOR-ASIGNATURAS
Tutor Asignatura
Alejandra Programación I
Adriana Programación II
Página 68
BCNF
TUTORIAS
DNI-Alumno
Tutor
Asignatura
ESTRUCTURA ORIGINAL
ALUMNOS
DNI-Alumno
Codigo-Curso
Apellido Alumno
Nombre Alumno
Dirección Alumno
Codigo-Provincia
Provincia
Telefono-alumno *(1,3)
Nota
Tutor
Asignatura
ALUMNO AL-TELEFONO
DNI-Alumno DNI.Alumno
Codigo-Curso Telefono-alumno
Apellido Alumno
Nombre Alumno
Dirección Alumno
Codigo-Provincia
Provincia
Nota
Tutor
Asignatura
Página 69
2da. FORMA NORMAL
BCNF
TUTORIAS
DNI-Alumno
Tutor
Asignatura
Página 70
ESPECIFICACION DE PROCESOS
LENGUAJE ESTRUCTURADO
• FIJAR IMPUESTO A 13
• SUMAR 3 A X
• MULTIPLICAR PRECIO UNITARIO POR CANITDAD
• DIVIDIR GANANCIAS ACTUALES ENTRE PERDIDAS ACTUALES
• CONSEGUIR • PONER
• ENCONTRAR • SUMAR
• RESTAR • MULTIPLICAR
• DIVIDIR • CALCULAR
• BORRAR • ENCONTRAR
• VALIDAR • MOVER
• REEMPLAZAR • FIJAR
• ORDENAR
Página 71
Se llega a la conclusión de que entre 40 o 50 verbos son suficientes para
describir cualquier política dentro de una especificación de proceso.
Los objetos deben consistir solo en datos que se han definido en el diccionario
o ser términos locales. Los términos locales son aquellos que se definen
explícitamente en una especificación de proceso individual; solo conocidos;
relevantes y con significado dentro de dicha especificación de proceso.
HACER CASO
CASO edad-del-cliente < 13
FIJAR cuota a cuota_niños
CASO edad-del-cliente > 12 y edad-del-cliente < 20
FIJAR cuota a cuota-adolescente
CASO edad-del-cliente > 19 y edad-del-cliente < 65
FIJAR cuota a cuota-adultos
OTRO
FIJAR cuota a cuota-ancianos
FIN CASO
Página 72
> Iteración
1)
2)
Repetir
------------
------------
Hasta_que (Condición)
Total_diario = 0
FIN MIENTRAS
MOSTRAR Total_diario
Página 73
LENGUAJE ESTRUCTURADO VS DER
> Asignación
PEPE
--------
--------
FIN PEPE
Página 74
> Asociación
Existen 2 situaciones
Ej. RELACIONAR <Localidad> y <Cliente> con <cod loc = 10 and cod-clie = 1>
LOCALIDAD CLIENTE
Mientras exista R1
SI cod-loc = 10
ELIMINAR <Localidad> CON <Cliente>
FIN-SI
Fin-Mientras
-----------------------------------------------------------------------------
Página 75
TABLAS DE DECISIÒN
• Condición
• Acción
TABLA BINARIA
1 2 3 4
EDAD > 21 S S N N
PESO > 60 S N S N
MEDICAMENTO 1 X
MEDICAMENTO 2 X X X
Página 76
Si existen N variables con valores binarios (verdadero – falso), entonces
existirán 2n reglas distintas; así que si existen tres condiciones, habrá 8 reglas
que surgen de hacer 23. Al tratar el Verdadero como una S(Sí) y el Falso como
una N(No); como binario; es fácil generar una secuencia de SSSSNNNN para
la primer variable, SSNNSSNN para la segunda variable y finalmente una
secuencia de SNSNSNSN para la última variable obteniendo como resultado
las 8 combinaciones necesarias.
En este caso, dado que para generar la secuencia se trata de valores binarios,
a la segunda variable denominada sexos en lugar de darle valores S(i) – N(o) le
damos valores M(asculino) – F(emenino) para que sean mas representativos.
1 2 3 4 5 6 7 8
EDAD > 21 S S S S N N N N
SEXO M M F F M M F F
PESO > 100 S N S N S N S N
MEDICAMENTO 1 X X X
MEDICAMENTO 2 X X
MEDICAMENTO 3 X X X
NINGUN MEDICAMENTO X X
TABLA MULTIVALUADA
1 2 3 4 5 6
EDAD < < = = > >
21 21 21 21 21 21
PESO > 60 S N S N S N
MEDICAMENTO 1 X X
MEDICAMENTO 2 X X X X
Página 77
DIAGRAMA DE FLUJO
Comienzo y Fin
Proceso general
Toma de decisiones
Almacenamiento magnético
Página 78
REGLAS BASICAS
Inicio
Entrada de
Datos
Proceso
Salida de
Datos
Fin
Página 79
Capítulo 6
El Ciclo de Vida
Del Software
“Modelo En Cascada”
EL CICLO DE VIDA DEL SOFTWARE
Este proceso se lleva a cabo debido al hecho de que es muy costoso rectificar
los errores que se detectan tarde dentro de la fase de implementación. El ciclo
de vida permite que los errores se detecten lo antes posible y por lo tanto,
permite a los desarrolladores concentrarse en la calidad del software, en los
plazos de implementación y en los costos asociados.
RECONOCIMIENTO
DEL PROBLEMA
PLANEAMIENTO
ANALISIS DEL
SISTEMA
DISEÑO DEL
SISTEMA
CODIFICACION
PRUEBAS
IMPLEMENTACION
MANTENIMIENTO
RETIRO
Pagina 80
Este modelo admite la posibilidad de hacer iteraciones, es decir, durante las
modificaciones que se hacen en el mantenimiento se puede ver por ejemplo la
necesidad de cambiar algo en el diseño, lo cual significa que se harán los
cambios necesarios en la codificación y se tendrán que realizar de nuevo las
pruebas, es decir, si se tiene que volver a una de las etapas anteriores al
mantenimiento hay que recorrer de nuevo el resto de las etapas.
Debe documentarse mediante un informe que cuente con los siguientes ítems:
o Objetivo de la organización: que persigue como empresa, a donde
quiere llegar
o Reseña histórica: una breve revisión de cómo evolucionó la organización
desde sus inicios hasta la actualidad
o Tamaño de la organización: cantidad de personal, de sucursales,
cantidad de transacciones con lo que se puede determinar la magnitud
de la organización y sus transacciones
o Objetivo del proyecto: para qué nos llamaron
o Estructura de la Organización: desde el punto de vista de jerarquías,
cadena de mando, cantidad de personas (ORGANIGRAMA)
o Conclusión: determinación del área de la organización que se encuentra
involucrada con nuestro proyecto
Pagina 81
2. PLANEAMIENTO
Esta etapa tiene como objetivo realizar la planificación de todas las actividades
que se llevarán a cabo para el análisis del sistema, la estimación de sus
tiempos de desarrollo y los costos asociados a las mismas.
o Estimación de tiempos y costos para llevar a cabo las dos etapas siguientes
de análisis y diagnóstico
o Alternativas de Pago para las distintas etapas
o Se acompañará de una sección de anexo en el cual se incluirá el Diagrama
de GANNT
Pagina 82
3. ANÁLISIS DEL SISTEMA:
Pagina 83
Se documenta mediante un informe que contiene
Se crea un modelo que establezca los límites del sistema así como el entorno
con el que el sistema interactuará.
En resumen
Pagina 84
Una vez expuesta la etapa de análisis resulta muy interesante mostrar gráficamente el
Problema del Análisis mal hecho.
Luego de analizar la imagen vemos la importancia de esta etapa ya que esta basada
justamente en que el cliente no recibe el producto deseado y además si se comete
un error en la fase de análisis no lo descubrimos hasta la entrega, con el consiguiente
gasto inútil de recursos.
Pagina 85
4. DISEÑO DEL SISTEMA:
4.2. Diseño detallado: Es la última etapa del diseño y materia prima para el
programador. Construir una jerarquía apropiada de módulos de programas para
lo que es posible definir algoritmos utilizando lenguaje estructurado o
diagramas de flujo.
Se diseña el esquema lógico de bases de datos (se transforman los modelos
de datos de entidad-relación en un diseño de base de datos), se especifica la
interfaz hombre-máquina (diseño de pantallas, formatos de salida) y se define
el plan de puesta en marcha del sistema.
Pagina 86
5. DESARROLLO O CONSTRUCCIÓN DEL SISTEMA O CODIFICACIÓN:
6. PRUEBAS:
En esta actividad se inicia la definición del plan de pruebas, el cual sirve como
guía para la realización de las pruebas y permite verificar que el sistema de
información cumple con las necesidades establecidas por el usuario, con las
debidas garantías de calidad.
Pagina 87
7. IMPLEMENTACIÓN:
Instalación en paralelo
Instalación total
8. MANTENIMIENTO:
9. RETIRO:
Jubilación del software ya sea por cierre de la empresa o reemplazo del mismo
por otro.
Pagina 88
Capítulo 7
Un Proyecto Completo
Sistema de Gestión de
Turnos Médicos
ETAPA DE RECONOCIMIENTO DEL PROBLEMA
4) ¿Tiene sucursales?
No.
7) ¿Por qué la gestión de turnos esta vinculada con los salarios médicos a
abonar?
No, cada uno de ellos pone sus horarios atención siendo 12 hs semanales la
cantidad mínima de trabajo
Página 89
9) ¿Quién le parece que sería la próxima persona con la que debería hablar?
11) ¿Qué sectores del centro considera involucrados con el pago de salarios?
OBJETIVO DE LA ORGANIZACIÓN
TAMAÑO DE LA ORGANIZACIÓN
El edificio cuenta con cuatro pisos. En la planta baja, accediendo por la entrada
principal se encuentra un amplio hall de entrada, cómodo y confortable. A la
izquierda del ingreso, y luego de traspasar el hall de entrada, se encuentra la
Mesa de Entradas destinada a la recepción de los turnos para ser atendidos
por los distintos profesionales y para diversos estudios como radiología
convencional, ecografías, tomografía computada, resonancia nuclear
magnética, mamografía etcétera. Este sector también entrega los resultados de
estudios efectuados con anterioridad. A la derecha se encuentra el sector de
cajas.
Página 90
Todos estos sectores poseen una distribución funcional sumamente operativa,
que permite que su personal altamente capacitado para la atención de
pacientes, otorgue una respuesta cálida, eficaz y eficiente, evitando así
demoras innecesarias.
En el cuarto piso se encuentran los demás sectores de la organización:
Personal, Compras, Pago a proveedores, Dirección médica, Contaduría y
Tesorería.
Partiendo del resultado de la entrevista con el director del centro médico nos
hemos centrado en que debemos ocuparnos de los temas de asignación de
turnos y sueldos de profesionales.
CONCLUSIÓN
El estudio del sistema actual está orientado a las áreas de Atención al Cliente,
Caja, Personal, Contaduría y Tesorería que son los sectores involucrados en
las tareas de asignación de turnos a los pacientes, cobro de bonos y pago a
profesionales.
Página 91
ANEXO DEL INFORME ORGANIGRAMA DE LA EMPRESA
Director 1
Carlos Sánchez
Atención al
3 Administración 5 Personal 5 Compras 5 Dirección 2 Contaduría 5 Tesorería 5
Cliente
Jefe: José Gomez
Médica
Jefe: Néstor García Jefe Personal Jefe Compras: Jefe: Hernán Jefe: Pedro Jefe: Mario
Julio López Alicia Torcuato Solis Hernández García
Obstetricia 3
Pediatría 6
Jefe: Adrián Calvo
Jefe: Omar Arnedo
Otorrinolaringo- 4
Cardiología 4 logia
Jefe: Esteban Carrizo
Jefe: Andrés Tetis
Odontología 6
Traumatología 5
Jefe: Alberto Saenz
Jefe: Juan de la Vega
Página 92
ETAPA DE PLANIFICACION
Tiempo: 28 días
Costo: $5.500
o Jefe de Equipo
Responsable de la planificación, coordinación e información de resultados al
usuario de la etapa de análisis
o Analista de Sistemas
Recopilación y unificación de los datos provistos por el usuario
Alternativas de Pago
Tarjetas De Crédito
Página 93
Entidad Bancaria: Banco XXXX sólo para cuentas bancarias, no se
Titular de Cuenta: XXXXXXX hacen débitos de tarjetas de crédito
Tipo de cuenta: Cuenta Corriente en con este medio de pago. El tiempo de
pesos verificación de este medio de pago es
Número de cuenta: 999-9999 de 5 días hábiles.
CBU: 9999-99999
CUIT: 99-99999999-9
ANEXO:
DIAGRAMA DE GANNT
TAREA 1 2 3 4 5 6 7 8 9 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2
/DIAS 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8
A
B
C
D
E
Página 94
ETAPA DE ANALISIS
Menos de 2 años
De 2 a 5 años
De 6 a 10 años
De 11 a 20 años
Más de 20 años
Dirección Médica
Atención al Cliente
Administración
Otro
-------------------
Procesador
Disco Rígido
Memoria
Teclado SI NO
Mouse SI NO
Tarjeta de Red SI NO
Conexión a Internet SI NO
Windows
Linux
Otro
Este cuestionario se ha repartido en todas las áreas para se completado por todo el
personal.
Página 95
ENTREVISTA AL JEFE DE ATENCIÓN AL CLIENTE
2) ¿Trabajan juntas?
No. Hacen 2 turnos diferentes (mañana y tarde). Se trata de sólo asignar turnos,
necesitan cubrir el horario completo, no estar juntos.
7) ¿Conocen los médicos los pacientes que tienen que atender en el día?
No lo saben, simplemente van llamando por horario y si esta el paciente pasa y sino
pasa el siguiente.
Página 96
8) ¿Cuál es la demanda actual del sector?
Unificar todo teniendo toda la información en un único cuaderno, pero que se pueda
leer y entender porque yo soy prolija anotando pero no se como es mi compañera.
7) ¿Conocen los médicos los pacientes que tienen que atender en el día?
El profesional llama por horario al siguiente paciente y verifica día, hora de atención y
sus datos en el papel.
Página 97
CUESTIONARIO PERSONA 1 SECTOR CAJA
_____________________ _
_____________________ _
_____________________ _
_____________________ _
Este cuestionario se repartió a la persona del turno tarde del sector caja para no
interrumpir su trabajo diario y se obtuvo el siguiente resultado.
Documentación recibida
Documentación emitida
Página 98
ENTREVISTA PERSONA 2 SECTOR CAJA
Cobro diversos bonos a los pacientes ya sea para asistir a una consulta o para
hacerse algún estudio. Deben traer el papel con el turno asignado en Atención al
Paciente.
5) Las personas que sacaron turno por teléfono ¿Cómo se manejan al no tener
el papel asignado?
Un bono original
Página 99
ESTUDIO DEL SISTEMA ACTUAL
INFORME DE ANALISIS
Causas
Página 100
involucrando esto inconsistencias en los pagos a profesionales ya que éstos cobran
según los pacientes atendidos.
El origen de la “no integración” de la información esta basado en manejo de
tecnologías diferentes para asentar los datos, diferente capacitación en el personal y
falta de comunicación entre el personal.
Con las respuestas obtenidas se ha determinado que el hardware “tipo” existente es:
FICHA TECNICA
PROCESADOR
Modelo DualCore
Velocidad 2.3 Ghz
Marca AMD Athlon 64 / INTEL
MEMORIA
RAM 2 GB
TIPO DDR2
DISCO RIGIDO
Capacidad 160 GB
UNIDAD OPTICA
Unidad Óptica DVD+/- RW
CARACTERISTICAS GENERALES
Teclado SI
Mouse SI
Parlantes SI
Tarjetas de Red NO
Audio SI
Tarjeta Gráfica Compatible NO
Página 101
DEFINICION DEL NUEVO SISTEMA
Se llevará a cabo el análisis y diseño del sistema, como así también la determinación
de los requisitos de software y hardware pertinentes.
Página 102
REQUISITOS FUNCIONALES
ADMINISTRACION DE PACIENTES
ADMINISTRACION DE MEDICOS
ALTA DE ESTUDIOS
RF13
BORRAR
HORARIO
Página 103
ALTA DE AGENDA DE TURNOS
RF17
BORRAR
AGENDA
PLANILLA DIARIA
ADMINISTRACION DE USUARIOS
Página 104
CIRCUITO ADMINISTRATIVO PROPUESTO PARA EL NUEVO SISTEMA
CURSOGRAMA
Al finalizar el día
9 – Caja: registra y entrega a contaduría el dinero cobrado y el duplicado de los
bonos
10 – Contaduría: Recibe los duplicados de los bonos que permanecían en caja
y los archiva
11 - Médico: Entrega a Contaduría los Comprobantes de Turnos Firmados
12 – Contaduría: Recibe los Comprobantes de turnos firmados que tenían los
médicos, realiza la verificación de los mismos contra los bonos firmados y los
archiva.
12 – Contaduría: Entrega a cada médico su “Comprobante de Cobro”
13 – Contaduría: Entrega la plata y los bonos de pago duplicado a tesorería
14 – Tesorería: Controla y archiva
Al finalizar el mes
15 – Contaduría: Confecciona los recibos de acuerdo a los comprobantes de
cobro recibidos (duplicados)
16 – Contaduría emite un listado de los pagos a realizar y los envía a tesorería
17 – Tesorería controla y verificar los bonos contra el listado y emite los pagos
18 – El médico solicita su recibo a contaduría
19 – Contaduría controla y verifica el recibo contra el comprobante de pago
20 – Contaduría entrega el recibo duplicado al médico para que lo firme
21 – El médico firma el recibo duplicado y devuelve a contaduría
22 – Contaduría archiva el recibo duplicado (R2), firma el original y entrega el
original al médico
23 – El médico va a tesorería con el recibo firmado para cobrar
24 – Tesorería controla y verifica el pago contra el recibo, entrega formulario de
cobro para firmas junto con el cheque y devuelve el recibo
Página 105
Médico Paciente Atención al Caja Contaduría Tesorería
Cliente
Solicita Turno
Selecciona
Turno
Paga
CT1
2
Comprobante
Turno
CT1
CT1 CT1, B1 2
Bono
B1 B2
Firmar
B2 + B2 +
Registra DINERO DINERO
CT1 Firmado
B2
CT1 Firmado
CT1
B2
CT1
CC1 2
Comprob
1 Cobro
CC1
CC2
Página 106
Médico Contaduría Tesorería
B2
CC1 CC2
RECIBO
2
EMITE
LISTADO
LISTADO
SOLICITA RECIBO +
CC1
R2
R2 FIRMADO R2
Firmado
R1 FIRMADO
R1 FIRMADO
CHEQUE + R1 FIRMADO +
FORMULARIO DE COBRO
FC
R1 FIRMADO
Página 107
POSIBLES SOLUCIONES
Se propone un software diseñado para satisfacer las necesidades del Centro Médico
en donde sea posible almacenar información demográfica de Pacientes, información
de Médicos, Horarios de atención médica y Gestión de Turnos.
El Sistema permite registrar los pacientes, a cada profesional con sus días de
atención, horarios y turnos especiales y ofrece la generación automática de la agenda
de turnos de acuerdo a los datos ingresados.
A partir de cargar los turnos el sistema le permitirá obtener, en forma automática, las
liquidaciones de honorarios de los profesionales que trabajan en el Centro Médico.
• Gestión de Profesionales
o Jefe de Asignación de turnos (1 computadora): Encargado de recolectar
información de horarios de atención de los médicos en forma mensual
o Almacena los Horarios de atención de cada médico.
o Jefe de Asignación de turnos (1 computadora): Se dan de alta datos de
los médicos y turnos médicos disponibles a asignar en forma mensual
• Gestión de Pacientes
o Puesto Recepción: (1 computadora): Se dan de alta datos del paciente
Página 108
• Caja 1 (computadora): el paciente abonará su bono en el momento de
atenderse y la información será pasada a los consultorios correspondientes
• Caja 1 (computadora): se imprimen 2 copias del pago del bono donde 1 será
para el paciente y la otra una asistente la llevará al consultorio correspondiente
para que el paciente sea llamado
REQUERIMIENTOS
ANALISTA DE SISTEMAS
PROGRAMADOR
Desarrollo de los programas del sistema, puesta marcha y evaluación del sistema
Página 109
RECURSOS INFORMATICOS PROPUESTOS
Se propone contar con una red de área local (LAN). Se trata de una red
privada para el centro médico.
Con esta red existirá la posibilidad de conectar computadoras personales, con
objeto de compartir recursos e intercambiar información.
Está restringida en tamaño, lo cual significa que el tiempo de transmisión, en el
peor de los casos, se conoce, lo que permite cierto tipo de diseños
(deterministas) que de otro modo podrían resultar ineficientes. Además,
simplifica la administración de la red.
Topología en Estrella.
• Router
• Medio de Comunicación
• Terminales
Página 110
ESQUEMA BASICO DE LA ARQUITECTURA DE LA RED
PEDIDO
ATENCION
TURNOS
MEDICA
Página 111
ESTIMACION DE TIEMPO
TAREA Días
A
Análisis del Sistema
• Descripción de procesos y procedimientos (Diagrama de 90
Flujo de Datos (DFD))
B
Diseño Global
• Diagrama de Flujo de Datos del Sistema Propuesto 120
• Diagrama Entidad Relación del Sistema Propuesto
• Diccionario de Datos del Sistema Propuesto
C
Diseño Detallado
• Esquema Lógico de Base de Datos 90
• Normalización
• Módulos
D
Desarrollo o Construcción del sistema 60
• Código Fuente y Código Objeto
• Creación de Base de Datos
E
Pruebas 30
F
Implementación del Sistema 90
DIAGRAMA DE GANNT
TAREA 30 60 90 120 150 180 210 240 270 300 330 360 390 420 450 480
/DIAS
A
B
C
D
E
F
Página 112
ESTIMACION DE COSTOS
TOTAL 185000
Router 1 800
Terminales 10 30000
TOTAL 32300
Página 113
2) ALTERNATIVA 2: SOFTWARE DESARROLLADO POR CLINIC’S MANAGEMENT
HISTORIAS CLINICAS
PACIENTES
Página 114
PROFESIONALES
AGENDA
STOCK DE ELEMENTOS
Página 115
ESTIMACION DE TIEMPO
TAREA Días
A
• RELEVAMIENTOS DE LA EMPRESA 30
B
• RELEVAMIENTO DE EQUIPAMIENTO 30
C
• PRESENTACION DE LA PROPUESTA 30
D
• INSTALACION DE EQUIPAMIENTO 120
E
• INSTALACION DE SOFTWARE 60
F
• CAPACITACION PERSONAL 120
DIAGRAMA DE GANNT
TAREA 30 60 90 120 150 180 210 240 270 300 330 360 390
/DIAS
A
B
C
D
E
F
Página 116
ESTIMACION DE COSTOS
TOTAL 170200
Router 1 950
Terminales 10 35000
TOTAL 37950
COSTO: $ 208150
Página 117
BENEFICIOS Y DESVENTAJAS DE CADA SOLUCIÓN
PROPUESTA 1
Beneficios
Desventajas
PROPUESTA 2
Beneficios
Desventajas
Página 118
CUADRO COMPARATIVO DE AMBAS PROPUESTAS
PROPUESTA 1 PROPUESTA 2
SELECCIÓN DE LA SOLUCION
Luego de realizarse la reunión entre el líder del proyecto y el en función del análisis
realizado y para cada una de las alternativas existentes se determina que el enfoque
más apropiado para llevar a buen fin la solución ofrecida es la propuesta 1.
Se define esta propuesta como conveniente debido a que el estudio relación costo -
beneficio dio como resultado una adecuación superior a las necesidades de la
empresa y mayor flexibilidad tanto como para servir de base al desarrollo de nuevas
versiones como para la ampliación de las mismas a posibles nuevas necesidades de
información.
Página 119
MODELO FUNCIONAL DEL NUEVO SISTEMA
DIAGRAMA DE CONTEXTO
PACIENTE MEDICO
Horario de Atención
O
RI
RESULTADO
ASIGNACION TURNO
RA
HO
PACIENTE_DATOS
AT
ES
PE RN
PU
TU
DI O
S
DO
RE
JEFE DE
ATENCION
CLIENTE 0 AVISO HORARIOS
HABILITADOS
SISTEMA
AVISO ALTA PROFESIONALES
AGENDA GESTION _DATOS
DE PEDIDO AUTORIZACION
PAGO
O
TU
DI TURNOS RE
ES AU SUL
PE TO TA
RI DO
CO DID ZA
O
BR O CI
G
ON
PA
O
AD
AL O
IZ
RE AG
DIRECTOR
P
PAGO MEDICO
EFECTUADO
PACIENTE
Página 120
TABLA DE EVENTOS
Tipo
Entidad Nombre del evento Estímulo Respuesta Función
evento
Externo Médico El médico entrega sus * Horario de * Respuesta Recolectar
horarios de atención Atencion Horario Horarios de
Atencion
Externo Jefe de El jefe de atención a * Aviso Alta * Aviso Habilitar
Atención clientes da de alta la Agenda Horarios Agenda de
al agenda de turnos Habilitados Turnos
Cliente
Externo Paciente El paciente solicita un * Pedido de * Resultado Otorgar
turno turno Asignación turnos
Turno
Externo Paciente El paciente paga su * Pago * Pago Cobrar
consulta Realizado Paciente
Tipo
Entidad Nombre del evento Estímulo Respuesta Función
evento
Externo Medico El médico solicita * Pedido * Resultado Autorizar
autorización para cobrar Autorización Autorización Pago
Pago
Externo Medico El médico solicita cobrar * Pedido * Pago Pagar
Cobro Efectuado Médico
Página 121
ETAPA DE DISEÑO
• Diseño Global
• Diseño Detallado
Diseño global
• Tabla de Eventos
• Diagrama de fuljo de datos (en sus componentes principales)
• Diagrama de flujo de datos (subdividido en componentes mas
pequeños)
• Diagrama Entidad-Relación (D.E.R)
• Diagrama Lógico de Datos
Diseño Detallado
• Diagramas de Flujo
• Tablas de Decisión
• Interfaz Hombre-Máquina (Diseño de pantallas)
Página 122
DISEÑO GLOBAL
JEFE
RESULTADO
ASIGNACION TURNO
MEDICO ATENCION
Horario de Atención
PACIENTE
O
RA
RI CLIENTE
HO
T A
ES
PE RN
PU
TU
DI O
S
RE
DO
REALIZADO
DE
AVISO HORARIOS
HABILITADOS
PAGO
AVISO ALTA
1 AGENDA
PACIENTE_DATOS
PACIENTE_DATOS
PAGO ASIGNAR
TURNO
TURNOS TURNO
HO
HO RA
RI
PACIENTE
IO RA
UD OS
EST PROFESIONALES_DATOS
RI
O
S
TURNOS PACIENTE_DATOS
ESTUDIO
PROFESIONALES_
2
PE
DID
O AU
PAGAR RE TO
R
AU SULT PAGO IZACI
DATOS
MEDICOS TO AD ON
PROFESIONALES RIZ O
AC
_DATOS ION
PE
D
CO IDO
BR
O
PAGO
DIRECTOR EFECTUADO MEDICO
PROFESIONALES
_DATOS
Página 123
DIAGRAMA DE FLUJO DE DATOS (DFD) – NIVEL 2 – PROCESO DE ASIGNAR TURNOS
AVISO HORARIOS
HABILITADOS JEFE DE
MEDICO H ATENCION
AT OR
EN AR AL CLIENTE
CI I O
P D R O DE
N
R A HO ESP
O T RA UE
F O RI ST
E S
O A 1.1
1.2
S RECOLECTAR
I HABILITAR AVISO ALTA
HORARIOS DE AGENDA
O AGENDA DE
PROFESIONALES
ATENCION
N TURNOS
HO
RA
A
RI
L
_DATOS
O
E
RI
RA
S ESTUDIO TURNO
HO
D2 PROF_DATOS D3 ESTUDIOS D4 HORARIOS D5 TURNOS
TURNO
TURNO
ESTUDIO
RIO
O RA
DI HO O
TU RN
TU
ES PAGO REALIZADO
1.4
1.3
DIRECTOR OTORGAR
COBRAR
PAGO
PACIENTE
TURNOS PA
CIE
NT
E _D
ATO
NO
S
R
TU
PACIENTE PACIENTE
IO O
AC D
_DATOS _DATOS
N
N TA
IG UL
AS ES
D1 PAC_DATOS
R
Página 124
DIAGRAMA DE FLUJO DE DATOS (DFD) – NIVEL 2 – PROCESO DE PAGAR MEDICOS
MEDICO
RE
AU SU
TO LT
RI AD
ZA O
CI
ON
2.1
TU
RN
AUTORIZAR O
P
PEDIDO AUTORIZACION
PAGO PA END
PAGO GO IEN
AU PA TE
TO G O
RI
ZA
PR
DO
D5 TURNOS
O
F_D
PA
AU
AT
PA RIZ
GO
TO
GO AD
OS
EF
EC
TU
O
AD
D2 PROF_DATOS
O
PRO 2.2
F_DA
TOS
PROF_DATOS
PAGAR
MEDICO
DO
T UA
EC
EF
GO
PA
Página 125
DIAGRAMA ENTIDAD-RELACION (DER)
PACIENTE R1 TURNO
R2
MEDICO R3 HORARIO
R4
ESTUDIO
R1 R2 R3 id R4
nrohistoriaclinica fecha apellido_med especialidad-h estudio
apellido_pac medico-turno nombre_med lunes precio
nombre_pac especialidad-turno direccion_med lunesinicio observaciones-e
dirección_pac paciente-t localidad_med lunesfin memo
localidad_pac estado codpos_med martes
teléfono_pac observaciones-t telefono_med martesinicio
mail_pac nrobono celular martesfin
fechanac abreviatura fax miércoles
sexo estudio-turno mail miercolesinicio
documento precio observaciones-m miercolesfin
nrodocumento importeprofesional especialidad-m jueves
estadocivil pagoautorizado juevesinicio
fechaalta pagado juevesfin
observaciones R1 viernes
medicocabecera viernesinicio
obrasocial viernesfin
nroafiliado sabado
peso sabadoinicio
gruposanguineo sabadofin
talla domingo
presion domingoinicio
lugardetrabajo domingofin
direcciontrabajo observaciones-h
localidadtrabajo R2
telefonotrabajo R3
profesion R4
Página 126
ESQUEMA LOGICO DE DATOS
MEDICO
nromedico (PK)
Apellido_med
Nombre_med
Direccion_med
Localidad_med ESTUDIO
Codpos_med abreviatura (PK)
Telefono_med estudio
celular precio-e
fax Observaciones-e
mail memo
Observaciones-m
especialidad-m
Página 127
DICCIONARIO DE DATOS
Abreviatura (atributo)
Tipo: texto
Longitud: 10
Apellido_Med (atributo)
Tipo: texto
Longitud: 50
Apellido_Pac (atributo)
Tipo: texto
Longitud: 50
Celular (atributo)
Tipo: texto
Longitud: 50
Codpos_Med (atributo)
Tipo: texto
Longitud: 10
Direccion_Med (atributo)
Tipo: texto
Longitud: 50
Dirección_Pac (atributo)
Tipo: texto
Longitud: 50
Direcciontrabajo (atributo)
Tipo: texto
Longitud: 50
Documento (atributo)
Tipo: texto
Longitud: 10
Domingo (atributo)
Tipo: Si/No
Longitud: -
Domingofin (atributo)
Tipo: fecha/hora
Longitud: -
Domingoinicio (atributo)
Tipo: fecha/hora
Longitud: -
Especialidad_h (atributo)
Tipo: texto
Longitud: 50
Página 128
Especialidad_m (atributo)
Tipo: texto
Longitud: 50
Especialidad_turno (atributo)
Tipo: texto
Longitud: 50
Estado (atributo)
Tipo: texto
Longitud: 30
Estadocivil (atributo)
Tipo: texto
Longitud: 25
Estudio (atributo)
Tipo: texto
Longitud: 50
Estudio-h (atributo)
Tipo: texto
Longitud: 50
Estudio-turno (atributo)
Tipo: texto
Longitud: 255
ESTUDIO (ENTIDAD)
R4
estudio
precio
observaciones
memo
Fax (atributo)
Tipo: texto
Longitud: 50
Fecha (atributo)
Tipo: fecha/hora
Longitud: -
Fechaalta (atributo)
Tipo: fecha/hora
Longitud: -
Fechanac (atributo)
Tipo: Fecha/Hora
Longitud: -
Gruposanguineo (atributo)
Tipo: texto
Longitud: 30
Página 129
HORARIO (ENTIDAD)
id
R2
R3
R4
medico
especialidad
estudio
lunes
lunesinicio
lunesfin
martes
martesinicio
martesfin
miércoles
miercolesinicio
miercolesfin
jueves
juevesinicio
juevesfin
viernes
viernesinicio
viernesfin
sabado
sabadoinicio
sabadofin
domingo
domingoinicio
domingofin
observaciones
id (atributo)
Tipo: Autonumérico
Longitud: entero largo
Importeprofesional (atributo)
Tipo: Número
Longitud: doble
Jueves (atributo)
Tipo: Si/No
Longitud: -
Juevesfin (atributo)
Tipo: fecha/hora
Longitud: -
Juevesinicio (atributo)
Tipo: fecha/hora
Longitud: -
Página 130
Localidad-med (atributo)
Tipo: texto
Longitud: 50
Localidad-pac (atributo)
Tipo: texto
Longitud: 50
Localidadtrabajo (atributo)
Tipo: texto
Longitud: 50
Lugardetrabajo (atributo)
Tipo: texto
Longitud: 50
Lunes (atributo)
Tipo: Si/No
Longitud: -
Lunesfin (atributo)
Tipo: fecha/hora
Longitud: -
Lunesinicio (atributo)
Tipo: fecha/hora
Longitud: -
Mail (atributo)
Tipo: texto
Longitud: 50
Mail (atributo)
Tipo: texto
Longitud: 50
Martes (atributo)
Tipo: Si/No
Longitud: -
Martesfin (atributo)
Tipo: fecha/hora
Longitud: -
Martesinicio (atributo)
Tipo: fecha/hora
Longitud
Medico-h (atributo)
Tipo: texto
Longitud: 50
Medico-turno (atributo)
Tipo: texto
Longitud: 50
Página 131
MEDICO (ENTIDAD)
R3
apellido
nombre
direccion
localidad
codpos
telefono
celular
fax
mail
observaciones
especialidad
Medicocabecera (atributo)
Tipo: texto
Longitud: 50
Memo (atributo)
Tipo: memo
Longitud: -
Miércoles (atributo)
Tipo: Si/No
Longitud: -
Miercolesfin (atributo)
Tipo: fecha/hora
Longitud: -
Miercolesinicio (atributo)
Tipo: fecha/hora
Longitud: -
Nombre-pac (atributo)
Tipo: texto
Longitud: 50
Nombre-med (atributo)
Tipo: texto
Longitud: 50
Nroafiliado (atributo)
Tipo: texto
Longitud: 30
Nrobono (atributo)
Tipo: Número
Longitud: entero largo
Nrodocumento (atributo)
Tipo: texto
Longitud: 12
Página 132
Nrohistoriaclinica (atributo)
Tipo: texto
Longitud: 12
Obrasocial (atributo)
Tipo: texto
Longitud: 50
Observaciones (atributo)
Tipo: memo
Longitud: -
Observaciones-e (atributo)
Tipo: texto
Longitud: 255
Observaciones-h (atributo)
Tipo: texto
Longitud: 50
Observaciones-m (atributo)
Tipo: texto
Longitud: 255
Observaciones-t (atributo)
Tipo: texto
Longitud: 255
Paciente-t (atributo)
Tipo: texto
Longitud: 8
Página 133
PACIENTE (ENTIDAD)
R1
nrohistoriaclinica
apellido
nombre
dirección
localidad
teléfono
mail
fechanac
sexo
documento
nrodocumento
estadocivil
fechaalta
observaciones
medicocabecera
obrasocial
nroafiliado
peso
gruposanguineo
talla
presion
lugardetrabajo
direcciontrabajo
localidadtrabajo
telefonotrabajo
profesion
Pagado (atributo)
Tipo: Si/No
Longitud: -
Pagoautorizado (atributo)
Tipo: Si/No
Longitud: -
Peso (atributo)
Tipo: número
Longitud: entero
Precio-e (atributo)
Tipo: Número
Longitud: doble
Precio-t (atributo)
Tipo: número
Longitud: doble
Presion (atributo)
Tipo: texto
Longitud: 50
Página 134
Profesion (atributo)
Tipo: texto
Longitud: 50
R1 (relación 1)
Paciente Turno
tiene Pertenece
N 1
opcional obligatorio
R2 (relación 2)
Turno Horario
tiene pertenece
1 N
obligatorio obligatorio
R3 (relación 3)
Medico Horario
tiene pertenece
N 1
obligatorio obligatorio
R4 (relación 4)
Estudio Horario
tiene pertenece
N 1
obligatorio obligatorio
Sabado (atributo)
Tipo: Si/No
Longitud: -
Sabadofin (atributo)
Tipo: fecha/hora
Longitud: -
Sabadoinicio (atributo)
Tipo: fecha/hora
Longitud: -
Sexo (atributo)
Tipo: texto
Longitud: 1
Talla (atributo)
Tipo: número
Longitud: doble
Telefono-med (atributo)
Tipo: texto
Longitud: 50
Página 135
Telefono-pac (atributo)
Tipo: texto
Longitud: 50
Telefonotrabajo (atributo)
Tipo: texto
Longitud: 50
TURNO (ENTIDAD)
R2
fecha
medico
especialidad
paciente
estado
observaciones
nrobono
abreviatura
estudio
precio
importeprofesional
R1
Viernes (atributo)
Tipo: Si/No
Longitud: -
Viernesfin (atributo)
Tipo: fecha/hora
Longitud: -
Viernesinicio (atributo)
Tipo: fecha/hora
Longitud: -
Página 136
DISEÑO DETALLADO
Inicio
1
1-Alta
2- Baja
3- Modificación
4- Salir
Opcion
No
Opcion
Fin
<>4
Si
No No
Opcion Opcion Buscar clave
=1 =2
Si Si No
Clave
Buscar clave está?
Buscar clave
Modificación
Inexistente Si
Si No
Clave Clave Clave “Baja
está? existente está? Inexistente
Si
No
Modificar registro
Grabar registro
Página 137
PROCESO PARA HABILITAR AGENDA DE TURNOS
INGRESAR fechadesde
INGRESAR fechahasta
INGRESAR tiempodevisita
Si ENCONTRO entonces
MOSTRAR “Ese periodo ya fue Cargado”
SALIR
Fin si
vnromedico = tablahorario("nromedico")
vmedico = tablahorario ("medico")
vespecialidad = tablahorario ("especialidad")
Página 138
vhorahastasabado = tablahorario ("sabadofin")
Fin Si
vfechadesde = fechadesde
vfechahasta = fechahasata
DIASEMANA 2
Si vlunes = True entonces
cargaraltas vhoradesdelunes, vhorahastalunes
End If
DIASEMANA 3
Si vmartes = entonces Then
HACER cargadeturnos horario de atención vhoradesdemartes,
vhorahastamartes
Fin Si
DIASEMANA 4
Si vmiercoles = True entonces
HACER cargadeturnos horario de atención vhoradesdemiercoles,
vhorahastamiercoles
Fin Si
DIASEMANA 5
Si vjueves = True entonces
HACER cargadeturnos horario de atención vhoradesdejueves,
vhorahastajueves
Fin Si
DIASEMANA 6
Si vviernes = True entonces
HACER cargadeturnos horario de atención vhoradesdeviernes,
vhorahastaviernes
Fin Si
Página 139
DIASEMANA 7
Si vsabado = True entonces
HACER cargadeturnos horario de atención vhoradesdesabado,
vhorahastasabado
Fin Si
SUMAR 1 A vfechaingresada
Fin Si
---------- ---------
vhoraingresada = xhoradesde
FinMientras
INGRESAR MEDICO
INGRESAR FECHA
SELECCIONAR HORARIODEATENCION
SI no hay ningun paciente asignado ENTONCES
INGRESAR Paciente
INGRESAR NroBono
INGRESAR Importe
REEMPLAZAR datos ingresados en la tabla TURNOS
Fin_Si
Página 140
PROCESO PARA PAGAR A MEDICOS
INGRESAR MEDICO
INGRESAR FECHADESDE
INGRESAR FECHAHASTA
FIN_HACER_MIENTRAS
FIN_HACER_MIENTRAS
1 2 3 4 5 6 7 8
3 4 5 6
Página 141
BASE DE DATOS: DISEÑO FISICO
ESTUDIOS
HORARIOS
Página 142
MEDICOS
TURNOS
Página 143
PACIENTES
Página 144
“DISEÑO DE PANTALLAS”
ACCESO Y CLAVE
ABM PACIENTES
a) Datos Personales
b) Datos Médicos
Página 145
Página 146
PACIENTES
Características destacadas
* Búsqueda dinámica x apellido del paciente (primeras letras del apellido paterno)
Página 147
ABM MEDICOS
A) PESTAÑA ABM
B) PESTAÑA BUSQUEDA
Página 148
MEDICOS
Características destacadas
* Quedara asociada la especialidad del medico con el fin de poder luego asignar
turnos por especialidad
ABM ESTUDIOS
ESTUDIOS
Características destacadas
Página 149
HORARIOS MEDICOS
Características destacadas
Página 150
ALTA DE TURNOS MEDICOS - PROCESO AUTOMATICO DE ALTA DE TURNOS !!
Características destacadas
* Este proceso va dando de alta las fechas indicadas para habilitar los turnos en los
horarios indicados para el profesional con su especialidad
Página 151
TURNOS PACIENTES
Página 152
TURNOS PACIENTES – RESERVA DE TURNOS A
PACIENTES
Características destacadas
PLANILLA DIARIA
Página 153
PLANILLA DIARIA
Características destacadas
* La planilla permitirá consultar por fecha, médico, especialidad y/o nro. de bono el
importe pagado por el paciente y el importe que le corresponde al profesional por
cada una de sus consultas y/o estudios realizados
BACKUP
BACKUP
Características destacadas
Página 154
PERMISOS DE USUARIOS - ABM USUARIOS
PERMISOS DE USUARIOS
Características destacadas
* Si el sistema va a ser utilizado por varias personas, cada una debe tener un
usuario y debe identificarse con su nombre y contraseña para que el sistema sepa
quién está sentado delante.
* Debe existir como mínimo un administrador con control total sobre el sistema,
mientras que los otros están más limitados. Los derechos sobre el sistema que
puede tener cada usuario se controlan mediante la carga de su nombre, apellido,
usuario y password con la que va a acceder y permisos a cada uno de los módulos
que se desee.
Página 155
ETAPA DE CODIFICACION
“CODIFICACION”
ABM DE MEDICOS
Vamos a explicar los pasos a seguir para crear un ABM (Alta, Baja, Modificaciones) y
vamos a ejemplificarlo con los datos de los médicos.
Para poder escribir el código de un ABM vamos a necesitar establecer una conexión
entre la base de datos definida en access y el entorno de desarrollo de visual.
Estos pasos tienen cierta complejidad y reutilización de código, por lo que para la
conexión y conversión de datos se utilizan procedimientos definidos en módulos
Preparando todo !!
Página 156
a) Modulo Datos.bas
Xcadenaconeccion = "provider=" & Xdbconeccion & ";Data Source=" & Xdbpath & ";"
If Not IsNull(Xclave) Then
Xcadenaconeccion = Xcadenaconeccion & Xclave
End If
Xcadenaconeccion = Xcadenaconeccion & ";persist security info=false"
XConeccion.ConnectionString = Xcadenaconeccion
XConeccion.Open
Exit Sub
cnError:
End Sub
Página 157
‘Este procedimiento es el que almacena en un archivo .txt la información
correspondiente a errores que hayan ocurrido
End Sub
If XConeccion.State = 1 Then
XConeccion.Close
Set XConeccion = Nothing
End If
End Sub
With XConeccion
.BeginTrans
.Execute xsql
If Err.Number <> 0 Then
MsgBox ("estoy en el error")
.RollbackTrans
Else
.CommitTrans
End If
End With
End Sub
Página 158
‘Este procedimiento es el que nos va a permitir concretar el paso de abrir un recordset
que responda al resultado de una instrucción SQL escrita previamente
End Sub
End Sub
Página 159
'***************************************************************************
' Ejemplo para verificar si un archivo existe _
'***************************************************************************
'Función que abre el archivo y verifica si existe
Public Function Verificar(ElArchivo As String) As Boolean
Close #1
End Function
'***************************************************************************
' Ejemplo para verificar si una tabla se encuentra en la base de datos _
Nota: Agregar la Referencia a -->> Microsoft Activex Data Objects
'***************************************************************************
Function Tabla_Existe(ByVal Path_BD As String, _
ByVal La_Tabla As String) As Boolean
For i = 0 To UBound(datos)
'Compara el valor,( la tabla )
If Trim(UCase(datos(i))) = Trim(UCase(La_Tabla)) Then
Tabla_Existe = True ' La tabla existe
Exit For
End If
Next
Página 160
'cierra el recordset y la base de datos
On Error Resume Next
RS.Close
Set RS = Nothing
cnn.Close
Set cnn = Nothing
Exit Function
'error
Err_Sub:
MsgBox Err.Description, vbCritical
On Error Resume Next
RS.Close
Set RS = Nothing
cnn.Close
Set cnn = Nothing
End Function
Una vez definidos los módulos a utilizar con sus procedimientos estamos en
condiciones de comenzar a escribir el código del ABM en el formulario
Option Explicit
Dim sqlmedicos As ADODB.Recordset
End Sub
Página 161
PESTAÑA DE ABM
* EVENTO CLICK DE CADA UNO DE LOS BOTONES
If ValidacionDatosFormulario() Then
cargavariables
sql = "INSERT INTO medicos (nromedico, apellido, nombre, direccion, "
sql = sql + "localidad, codpos, telefono, celular, "
sql = sql + "fax, mail, especialidad, "
sql = sql + "observaciones) "
sql = sql + "VALUES ('" + txtnromedico + "'"
sql = sql + ", '" + vapellido + "'"
sql = sql + ", '" + vnombre + "'"
sql = sql + ", '" + vdireccion + "'"
sql = sql + ", '" + vlocalidad + "'"
sql = sql + ", '" + vcodpos + "'"
sql = sql + ", '" + vtelefono + "'"
sql = sql + ", '" + vcelular + "'"
sql = sql + ", '" + vfax + "'"
sql = sql + ", '" + vmail + "'"
sql = sql + ", '" + vespecialidad + "'"
sql = sql + ", '" + vobservaciones + "'"
sql = sql + ")"
datos.realizarSQL sql, modclinica.coneccion
limpiar
btAgregar.Enabled = False
btModificar.Enabled = False
btLimpiar.Enabled = False
txtnromedico.SetFocus
End If
End Sub
If ValidacionDatosFormulario() Then
cargavariables
sql = "UPDATE medicos SET medicos.nromedico = " + vnromedico
sql = sql + ", medicos.apellido = '" + vapellido + "' "
sql = sql + ", medicos.nombre = '" + vnombre + "' "
sql = sql + ", medicos.direccion = '" + vdireccion + "' "
sql = sql + ", medicos.localidad = '" + vlocalidad + "' "
sql = sql + ", medicos.codpos = '" + vcodpos + "' "
sql = sql + ", medicos.telefono = '" + vtelefono + "' "
sql = sql + ", medicos.celular = '" + vcelular + "' "
sql = sql + ", medicos.fax = '" + vfax + "' "
sql = sql + ", medicos.mail = '" + vmail + "' "
sql = sql + ", medicos.especialidad = '" + vespecialidad + "' "
sql = sql + ", medicos.observaciones = '" + vobservaciones + "' "
sql = sql + " WHERE nromedico = " + txtnromedico
datos.realizarSQL sql, modclinica.coneccion
limpiar
btAgregar.Enabled = False
btModificar.Enabled = False
btBorrar.Enabled = False
btLimpiar.Enabled = False
txtnromedico.SetFocus
End If
End Sub
Página 162
Private Sub btBorrar_Click()
btAgregar.Enabled = False
btModificar.Enabled = False
txtnromedico.SetFocus
Exit Sub
Solucion1:
MsgBox "error:" & Err & Chr$(13) & Err.Description, vbExclamation, "Existe un
problema"
End Sub
* PROCEDIMIENTOS Y FUNCIONES
vnromedico = Trim(txtnromedico)
vapellido = Trim(txtapellido)
vnombre = Trim(txtnombre)
vdireccion = Trim(txtdireccion)
vlocalidad = Trim(txtlocalidad)
vcodpos = Trim(txtcodpos)
vtelefono = Trim(txtelefono)
vcelular = Trim(txtcelular)
vfax = Trim(txtfax)
vmail = Trim(txtmail)
vespecialidad = Trim(txtespecialidad)
vobservaciones = Trim(txtobservaciones)
End Sub
Página 163
‘Este procedimiento muestra los datos existentes en un registro a los textbox
txtnromedico = XTabla.Fields("nromedico")
If IsNull(XTabla.Fields("apellido")) Then
txtapellido = ""
Else
txtapellido = XTabla.Fields("apellido")
End If
If IsNull(XTabla.Fields("nombre")) Then
txtnombre = ""
Else
txtnombre = XTabla.Fields("nombre")
End If
If IsNull(XTabla.Fields("Direccion")) Then
txtdireccion = ""
Else
txtdireccion = XTabla.Fields("Direccion")
End If
If IsNull(XTabla.Fields("localidad")) Then
txtlocalidad = ""
Else
txtlocalidad = XTabla.Fields("Localidad")
End If
If IsNull(XTabla.Fields("codpos")) Then
txtcodpos = ""
Else
txtcodpos = Trim(XTabla.Fields("codpos"))
End If
If IsNull(XTabla.Fields("telefono")) Then
txtelefono = ""
Else
txtelefono = XTabla.Fields("telefono")
End If
If IsNull(XTabla.Fields("celular")) Then
txtcelular = ""
Else
txtcelular = XTabla.Fields("celular")
End If
If IsNull(XTabla.Fields("FAX")) Then
txtfax = ""
Else
txtfax = XTabla.Fields("FAX")
End If
Página 164
If IsNull(XTabla.Fields("Mail")) Then
txtmail = ""
Else
txtmail = XTabla.Fields("Mail")
End If
If IsNull(XTabla.Fields("especialidad")) Then
txtespecialidad = ""
Else
txtespecialidad = XTabla.Fields("especialidad")
End If
If IsNull(XTabla.Fields("observaciones")) Then
txtobservaciones = ""
Else
txtobservaciones = XTabla.Fields("observaciones")
End If
End Sub
‘Este procedimiento limpia toda la pantalla dejando los textbox en blanco … no elimina
registros
End Sub
Limpiar
btAgregar.Enabled = False
btModificar.Enabled = False
btBorrar.Enabled = False
btLimpiar.Enabled = False
txtnromedico.SetFocus
End Sub
Página 165
‘ Esta función verifica si la carga de cada uno de los datos es correcta y devuelve valor
verdadero o falso de acuerdo a si los datos son o no correctos
ValidacionDatosFormulario = True
End Function
Página 166
* EVENTO LOSTFOCUS DE TXTNROMEDICO (TEXTBOX DONDE SE INGRESA EL
NUMERO DE MEDICO
Dinámica: Al ingresar el número de médico, mediante una instrucción sql verifica en primer
lugar si es numérico (isnumeric) y si el médico existe o no existe.
Para llevar a cabo este último paso; luego de ejecutar una instrucción sql utiliza la condición
“sqlmedicos.EOF And sqlmedicos.BOF”. (EOF: END OF FILE Fin de Archivo / BOF: BEGIN
OF FILE: Comienzo de Archivo).
Si el resultado de esta condición es verdadero significa que no hay ingresado ningún médico
con el número consultado (ya que coincide el comienzo y el fin de archivo, ambos son
verdaderos, al mismo tiempo hay un comienzo y un fin sin ningún registro en el medio) y por lo
tanto habilita el “ALTA” del mismo y si el resultado es falso significa que el número de médico
consultado ha sido ingresado y por lo tanto muestra sus datos y habilita la posibilidad de
“MODIFICAR” o “ELIMINAR”.
If IsNull(sqlmedicos.Fields("maximo")) Then
txtnromedico = 1
Else
txtnromedico = sqlmedicos.Fields("maximo") + 1
End If
btAgregar.Enabled = True
btModificar.Enabled = False
btBorrar.Enabled = False
btLimpiar.Enabled = True
datos.CerrarTabla sqlmedicos
End If
End Sub
Página 167
* EVENTO KEYPRESS DE CADA UNO DE LOS TEXTBOX
End Sub
If KeyAscii = 13 Then
txtnombre.SetFocus
End If
End Sub
If KeyAscii = 13 Then
txtdireccion.SetFocus
End If
End Sub
If KeyAscii = 13 Then
txtlocalidad.SetFocus
End If
End Sub
If KeyAscii = 13 Then
txtcodpos.SetFocus
End If
End Sub
If KeyAscii = 13 Then
txtcelular.SetFocus
End If
End Sub
Página 168
Private Sub txtcelular_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
txtfax.SetFocus
End If
End Sub
If KeyAscii = 13 Then
txtmail.SetFocus
End If
End Sub
If KeyAscii = 13 Then
txtespecialidad.SetFocus
End If
End Sub
If KeyAscii = 13 Then
txtobservaciones.SetFocus
End If
End Sub
If KeyAscii = 13 Then
If btAgregar.Enabled = True Then
btAgregar.SetFocus
ElseIf btModificar.Enabled = True Then
btModificar.SetFocus
Else
txtnromedico.SetFocus
End If
End If
End Sub
Página 169
EVENTO CLICK DE LAS PESTAÑAS
If sstabmedicos.Tab = 0 Then
frcabecera.Enabled = True
frbotonera.Visible = True
ElseIf sstabmedicos.Tab = 1 Then
frcabecera.Enabled = False
frbotonera.Visible = False
cargarbusqueda
End If
End Sub
PESTAÑA DE BUSQUEDA
cargarbusqueda
End Sub
txBuscar.Text = ""
cargarbusqueda
End Sub
txBuscar.Text = ""
cargarbusqueda
End Sub
cargarbusqueda
End Sub
Página 170
Private Sub msflexmedicos_Click()
msflexmedicos.col = 1
txtnromedico = msflexmedicos.Text
sstabmedicos.Tab = 0
btAgregar.Enabled = False
btModificar.Enabled = True
btBorrar.Enabled = True
btLimpiar.Enabled = True
End Sub
End If
If oprazonsocial.Value Then
If Trim(txBuscar) = "" Then
sql = sql + " WHERE true"
Else
sql = sql + " WHERE [apellido] LIKE '" + Trim(txBuscar.Text) + "%'"
End If
End If
If opnrocliente Then
sql = sql + " ORDER BY nromedico"
End If
If oprazonsocial Then
sql = sql + " ORDER BY apellido"
End If
Página 171
If opnrocliente And Trim(txBuscar) <> "" And Not IsNumeric(txBuscar) Then
MsgBox ("Error")
Exit Sub
Else
datos.AbrirRecordsetSQL sqlmedicos, sql, modclinica.coneccion
msflexmedicos.Clear
TituloGrilla
Cargas.CargarGrilla msflexmedicos, sqlmedicos
datos.CerrarTabla sqlmedicos
End If
End Sub
msflexmedicos.Row = 0
For cont = 1 To 4
msflexmedicos.col = cont
Select Case cont
Case 2: msflexmedicos.Text = "Razon Social"
Case 3: msflexmedicos.Text = "Direccion"
Case 4: msflexmedicos.Text = "Telefono"
End Select
Next
End Sub
Unload Me
End Sub
datos.CerrarConeccion modclinica.coneccion
End Sub
Página 172
ABM DE HORARIOS MEDICOS
EL Código que se escribe para esta pantalla logra almacenar en la tabla de horarios
los días y horas de atención de los médicos.
Ejemplo:
Para facilitar el manejo de los tipos de datos y conversiones utilizamos un módulo con
la definición de varios procedimientos de conversión
Página 173
En el menú proyecto elegimos agregar modulo y creamos el siguiente módulo
a) Modulo Conver.bas
' Conver.Bas
' Modulo de Conversiones de tipo
'
' Convencion:
' Siempre que se quiera representar el tipo de datos en un archivo
' de parametros colocaremos el siguiente código
' T Texto
' F Fecha
' M Moneda (Currency)
' D Doble
' I Entero
' L Largo
Página 174
' TexACur(txt) --> Cur
' Convierte un texto en un Tipo Currency. Si el texto es "" Coloca 0
Página 175
Public Function Redondear(Valor As Double, Optional KDec As Integer = 2,
Optional Forma As String = "B") As Double
'
Página 176
' IntATex(Ent) --> txt
' Convierte un Integer en un texto. Si el entero es 0 Coloca ""
Página 177
'devuelve el nro de la ultima posicion del caracter que le paso comenzando
'desde la derecha
RInstr1 = 0
For i = Len(s1) To 1 Step -1
sTmp = Mid$(s1, i, Len(s2))
If sTmp = s2 Then
RInstr1 = i
Exit For
End If
Next
End Function
Dim tt As Integer
Dim final As String
Dim lNumber As Long
End Function
Página 178
CODIGO
Option Explicit
Dim sqlhorarios As ADODB.Recordset
'abrir conexion
modclinica.datosconeccion
datos.AbrirConeccion modclinica.coneccion, modclinica.dbconeccion,
modclinica.dbpath, modclinica.dbpass
End Sub
Página 179
* EVENTO CLICK DE CADA UNO DE LOS BOTONES
cargavariables
Página 180
If (txtmartesinicio.Text) <> "" Then
sql = sql + "," + vmartes
sql = sql + ", format(#" + Conver.FechaATex(vmartesinicio) + " " +
Mid(Format(vmartesinicio, "HH:MM:SS"), 1, 2) + ":" + Mid(Format(vmartesinicio,
"HH:MM:SS"), 4, 2) + ":" + Mid(Format(vmartesinicio, "HH:MM:SS"), 7, 2) + "#,
'mm/dd/yyyy hh:mm:ss')"
End If
Página 181
If (txtsabadoinicio.Text) <> "" Then
sql = sql + "," + vsabado
sql = sql + ", format(#" + Conver.FechaATex(vsabadoinicio) + " " +
Mid(Format(vsabadoinicio, "HH:MM:SS"), 1, 2) + ":" + Mid(Format(vsabadoinicio,
"HH:MM:SS"), 4, 2) + ":" + Mid(Format(vsabadoinicio, "HH:MM:SS"), 7, 2) + "#,
'mm/dd/yyyy hh:mm:ss')"
sql = sql + ", format(#" + Conver.FechaATex(vsabadofin) + " " +
Mid(Format(vsabadofin, "HH:MM:SS"), 1, 2) + ":" + Mid(Format(vsabadofin,
"HH:MM:SS"), 4, 2) + ":" + Mid(Format(vsabadofin, "HH:MM:SS"), 7, 2) + "#,
'mm/dd/yyyy hh:mm:ss')"
End If
sql = sql + ", '" + vobservaciones + "'"
sql = sql + ")"
limpiar
cmdagregar.Enabled = False
cmdmodificar.Enabled = False
cmdcancelar.Enabled = False
txtnromedico.SetFocus
End If
End Sub
cargavariables
Página 182
sql = sql + ", horarios.martesfin = format(#" + Conver.FechaATex(vmartesfin) + " "
+ Mid(Format(vmartesfin, "HH:MM:SS"), 1, 2) + ":" + Mid(Format(vmartesfin,
"HH:MM:SS"), 4, 2) + ":" + Mid(Format(vmartesfin, "HH:MM:SS"), 7, 2) + "#,
'mm/dd/yyyy hh:mm:ss')"
Else
sql = sql + ", horarios.martesinicio = null"
sql = sql + ", horarios.martesfin = null"
End If
Página 183
sql = sql + ", horarios.sabado = " + vsabado
If Trim(txtsabadoinicio.Text) <> "" Then
sql = sql + ", horarios.sabadoinicio = format(#" +
Conver.FechaATex(vsabadoinicio) + " " + Mid(Format(vsabadoinicio, "HH:MM:SS"), 1,
2) + ":" + Mid(Format(vsabadoinicio, "HH:MM:SS"), 4, 2) + ":" +
Mid(Format(vsabadoinicio, "HH:MM:SS"), 7, 2) + "#, 'mm/dd/yyyy hh:mm:ss')"
sql = sql + ", horarios.sabadofin = format(#" + Conver.FechaATex(vsabadofin) + "
" + Mid(Format(vsabadofin, "HH:MM:SS"), 1, 2) + ":" + Mid(Format(vsabadofin,
"HH:MM:SS"), 4, 2) + ":" + Mid(Format(vsabadofin, "HH:MM:SS"), 7, 2) + "#,
'mm/dd/yyyy hh:mm:ss')"
Else
sql = sql + ", horarios.sabadoinicio = null"
sql = sql + ", horarios.sabadofin = null"
End If
End If
End Sub
Solucion1:
MsgBox "error:" & Err & Chr$(13) & Err.Description, vbExclamation, "Existe un
problema"
End Sub
Página 184
Private Sub cmdcancelar_Click()
limpiar
cmdagregar.Enabled = False
cmdmodificar.Enabled = False
cmdborrar.Enabled = False
cmdcancelar.Enabled = False
txtnromedico.SetFocus
End Sub
* PROCEDIMIENTOS Y FUNCIONES
vnromedico = Trim(txtnromedico)
vmedico = Trim(txtmedico)
vespecialidad = Trim(txtespecialidad)
If chklunes.Value = 1 Then
vlunes = "True"
Else
vlunes = "False"
End If
vlunesinicio = TexAFecha(Trim(txtlunesinicio))
vlunesfin = TexAFecha(Trim(txtlunesfin))
If chkmartes.Value = 1 Then
vmartes = "True"
Else
vmartes = "False"
End If
vmartesinicio = TexAFecha(Trim(txtmartesinicio))
vmartesfin = TexAFecha(Trim(txtmartesfin))
Página 185
If chkmiercoles.Value = 1 Then
vmiercoles = "True"
Else
vmiercoles = "False"
End If
vmiercolesinicio = TexAFecha(Trim(txtmiercolesinicio))
vmiercolesfin = TexAFecha(Trim(txtmiercolesfin))
If chkjueves.Value = 1 Then
vjueves = "True"
Else
vjueves = "False"
End If
vjuevesinicio = TexAFecha(Trim(txtjuevesinicio))
vjuevesfin = TexAFecha(Trim(txtjuevesfin))
If chkviernes.Value = 1 Then
vviernes = "True"
Else
vviernes = "False"
End If
vviernesinicio = TexAFecha(Trim(txtviernesinicio))
vviernesfin = TexAFecha(Trim(txtviernesfin))
If chksabado.Value = 1 Then
vsabado = "True"
Else
vsabado = "False"
End If
vsabadoinicio = TexAFecha(Trim(txtsabadoinicio))
vsabadofin = TexAFecha(Trim(txtsabadofin))
vobservaciones = Trim(txtobservaciones)
End Sub
Página 186
‘Este procedimiento muestra los datos existentes en un registro a los textbox
txtid = XTabla.Fields("id")
If IsNull(XTabla.Fields("nromedico")) Then
txtnromedico = ""
Else
txtnromedico = XTabla.Fields("nromedico")
End If
If IsNull(XTabla.Fields("medico")) Then
txtmedico = ""
Else
txtmedico = XTabla.Fields("medico")
End If
If IsNull(XTabla.Fields("especialidad")) Then
txtespecialidad = ""
Else
txtespecialidad = XTabla.Fields("especialidad")
End If
If IsNull(XTabla.Fields("lunesinicio")) Then
txtlunesinicio = ""
Else
txtlunesinicio = Trim(XTabla.Fields("lunesinicio"))
End If
If IsNull(XTabla.Fields("lunesfin")) Then
txtlunesfin = ""
Else
txtlunesfin = Trim(XTabla.Fields("lunesfin"))
End If
If IsNull(XTabla.Fields("martesinicio")) Then
txtmartesinicio = ""
Else
txtmartesinicio = Trim(XTabla.Fields("martesinicio"))
End If
Página 187
If IsNull(XTabla.Fields("martesfin")) Then
txtmartesfin = ""
Else
txtmartesfin = Trim(XTabla.Fields("martesfin"))
End If
If IsNull(XTabla.Fields("miercolesinicio")) Then
txtmiercolesinicio = ""
Else
txtmiercolesinicio = Trim(XTabla.Fields("miercolesinicio"))
End If
If IsNull(XTabla.Fields("miercolesfin")) Then
txtmiercolesfin = ""
Else
txtmiercolesfin = Trim(XTabla.Fields("miercolesfin"))
End If
If IsNull(XTabla.Fields("juevesinicio")) Then
txtjuevesinicio = ""
Else
txtjuevesinicio = Trim(XTabla.Fields("juevesinicio"))
End If
If IsNull(XTabla.Fields("juevesfin")) Then
txtjuevesfin = ""
Else
txtjuevesfin = Trim(XTabla.Fields("juevesfin"))
End If
If IsNull(XTabla.Fields("viernesinicio")) Then
txtviernesinicio = ""
Else
txtviernesinicio = Trim(XTabla.Fields("viernesinicio"))
End If
Página 188
If IsNull(XTabla.Fields("viernesfin")) Then
txtviernesfin = ""
Else
txtviernesfin = Trim(XTabla.Fields("viernesfin"))
End If
If IsNull(XTabla.Fields("sabadoinicio")) Then
txtsabadoinicio = ""
Else
txtsabadoinicio = Trim(XTabla.Fields("sabadoinicio"))
End If
If IsNull(XTabla.Fields("sabadofin")) Then
txtsabadofin = ""
Else
txtsabadofin = Trim(XTabla.Fields("sabadofin"))
End If
If IsNull(XTabla.Fields("observaciones")) Then
txtobservaciones = ""
Else
txtobservaciones = XTabla.Fields("observaciones")
End If
End Sub
‘Este procedimiento limpia toda la pantalla dejando los textbox en blanco y las casillas
desmarcadas… no elimina registros
txtid = ""
txtnromedico = ""
txtmedico = ""
txtespecialidad = ""
chklunes.Value = 0
txtlunesinicio = ""
txtlunesfin = ""
chkmartes.Value = 0
txtmartesinicio = ""
txtmartesfin = ""
chkmiercoles.Value = 0
txtmiercolesinicio = ""
txtmiercolesfin = ""
Página 189
chkjueves.Value = 0
txtjuevesinicio = ""
txtjuevesfin = ""
chkviernes.Value = 0
txtviernesinicio = ""
txtviernesfin = ""
chksabado.Value = 0
txtsabadoinicio = ""
txtsabadofin = ""
txtobservaciones = ""
MSFlexhorarios.Clear
TituloGrilla
txtbuscar = ""
End Sub
‘ Esta función verifica si la carga de cada uno de los datos es correcta y devuelve valor
verdadero o falso de acuerdo a si los datos son o no correctos
If chklunes.Value = 0 Then
If Not (Trim(txtlunesinicio.Text) = "" And Trim(txtlunesfin.Text) = "") Then
resp = MsgBox("Si ingresa un horario lunes debe marcar el dia ", vbCritical, "
Horarios ")
txtlunesinicio.SetFocus
Exit Function
End If
End If
Página 190
If chkmartes.Value = 0 Then
If Not (Trim(txtmartesinicio.Text) = "" And Trim(txtmartesfin.Text) = "") Then
resp = MsgBox("Si ingresa un horario martes debe marcar el dia ", vbCritical, "
Horarios ")
txtmartesinicio.SetFocus
Exit Function
End If
End If
If chkmiercoles.Value = 0 Then
If Not (Trim(txtmiercolesinicio.Text) = "" And Trim(txtmiercolesfin.Text) = "") Then
resp = MsgBox("Si ingresa un horario miercoles debe marcar el dia ", vbCritical, "
Horarios ")
txtmiercolesinicio.SetFocus
Exit Function
End If
End If
If chkjueves.Value = 0 Then
If Not (Trim(txtjuevesinicio.Text) = "" And Trim(txtjuevesfin.Text) = "") Then
resp = MsgBox("Si ingresa un horario jueves debe marcar el dia ", vbCritical, "
Horarios ")
txtjuevesinicio.SetFocus
Exit Function
End If
End If
Página 191
If chkviernes.Value = 0 Then
If Not (Trim(txtviernesinicio.Text) = "" And Trim(txtviernesfin.Text) = "") Then
resp = MsgBox("Si ingresa un horario viernes debe marcar el dia ", vbCritical, "
Horarios ")
txtviernesinicio.SetFocus
Exit Function
End If
End If
If chksabado.Value = 0 Then
If Not (Trim(txtsabadoinicio.Text) = "" And Trim(txtsabadofin.Text) = "") Then
resp = MsgBox("Si ingresa un horario sabado debe marcar el dia ", vbCritical, "
Horarios ")
txtsabadoinicio.SetFocus
Exit Function
End If
End If
End If
Página 192
If Trim(txtjuevesinicio) <> "" Then
If Not (validarfecha(txtjuevesinicio)) Then Exit Function
If Not (validarfecha(txtjuevesfin)) Then Exit Function
End If
ValidacionDatosFormulario = True
End Function
‘ Esta función verifica si es correcto el formato de las fechas ingresadas y de las horas.
Respecto a las horas utiliza la función mid para tomar la ubicación de los dos puntos
“:” que se deben ingresar para separar horas y minutos, ademas de la función len para
verificar que la longitud total de la hora sea la correcta.
validarfecha = False
Página 193
If Len(Trim(xfecha)) <> 8 Then
If Len(Trim(xfecha)) <> 13 Then
resp = MsgBox("Debe Ingresar una hora valida", vbCritical, " Horario ")
xfecha.SetFocus
Exit Function
End If
End If
validarfecha = True
End Function
‘ Este procedimiento busca si los horarios del médico solicitado han sido ingresados o
no y de acuerdo a esto habilita el alta o muestra los datos para su posible modificación
o eliminación
Página 194
* EVENTO LOSTFOCUS DE TXTNROMEDICO (TEXTBOX DONDE SE INGRESA EL
NUMERO DE MEDICO
End Sub
If KeyAscii = 13 Then
txtespecialidad.SetFocus
End If
End Sub
Página 195
Private Sub txtmiercolesinicio_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
txtmiercolesfin.SetFocus
End If
End Sub
Página 196
Private Sub txtobservaciones_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
If cmdagregar.Enabled = True Then
cmdagregar.SetFocus
ElseIf cmdmodificar.Enabled = True Then
cmdmodificar.SetFocus
Else
txtnromedico.SetFocus
End If
End If
End Sub
If sstabhorarios.Tab = 0 Then
frmbotonera.Visible = True
ElseIf sstabhorarios.Tab = 1 Then
frmbotonera.Visible = False
cargarbusqueda
End If
End Sub
PESTAÑA DE BUSQUEDA
'Ficha de busqueda
Página 197
Private Sub MSFlexhorarios_Click()
MSFlexhorarios.col = 1
txtid = MSFlexhorarios.Text
sstabhorarios.Tab = 0
cmdagregar.Enabled = False
cmdmodificar.Enabled = True
cmdborrar.Enabled = True
cmdcancelar.Enabled = True
End Sub
* PROCEDIMIENTOS
If opnromedico.Value Then
If Trim(txtbuscar) = "" Then
sql = sql + " WHERE TRUE"
Else
sql = sql + " WHERE [nromedico] = " + Trim(txtbuscar.Text)
End If
End If
If opmedico.Value Then
If Trim(txtbuscar) = "" Then
sql = sql + " WHERE true"
Else
sql = sql + " WHERE [medico] LIKE '" + Trim(txtbuscar.Text) + "%'"
End If
End If
Página 198
If opnromedico Then
sql = sql + " ORDER BY nromedico"
End If
If opmedico Then
sql = sql + " ORDER BY medico"
End If
End Sub
MSFlexhorarios.ColWidth(0) = 0
MSFlexhorarios.ColWidth(1) = 0 'id
MSFlexhorarios.ColWidth(2) = 900 'nromedico
MSFlexhorarios.ColWidth(3) = 2000 'medico
MSFlexhorarios.Row = 0
Página 199
For cont = 1 To 15
MSFlexhorarios.col = cont
Select Case cont
Case 2: MSFlexhorarios.Text = "nromedico"
Case 3: MSFlexhorarios.Text = "medico"
Case 4: MSFlexhorarios.Text = "lunes"
Case 5: MSFlexhorarios.Text = ""
Case 6: MSFlexhorarios.Text = "martes"
Case 7: MSFlexhorarios.Text = ""
Case 8: MSFlexhorarios.Text = "miercoles"
Case 9: MSFlexhorarios.Text = ""
Case 10: MSFlexhorarios.Text = "jueves"
Case 11: MSFlexhorarios.Text = ""
Case 12: MSFlexhorarios.Text = "viernes"
Case 13: MSFlexhorarios.Text = ""
Case 14: MSFlexhorarios.Text = "sabado"
Case 15: MSFlexhorarios.Text = ""
End Select
Next
End Sub
Página 200
ALTA DE TURNOS MEDICOS - PROCESO AUTOMATICO DE ALTA DE TURNOS !!
Una vez ingresados los horarios de atención de cada médico debemos completar la
tabla de turnos. Para esto se debe crear un registro por cada una de las visitas en
cada dia y horario de atención.
Por ejemplo: si el profesional atiende el dia 22/07 de 10 a 11 y la visita de cada
paciente es de 15 minutos deberian ingresarse los siguientes registros en la tabla de
turnos:
Esto básicamente habilita la agenda donde vamos a ir ingresando los datos de los
pacientes a los que les vamos a dar turno en cada horario.
La cantidad de registros a dar de alta es extremadamente extensa si por ejemplo
queremos habilitar la agenda aunque sea para 1 solo mes y por esto es imprescindible
crear esta pantalla que permita un proceso automático para la creación de la agenda
de turnos.
Página 201
id fecha nromedico medico especialidad
19450 03/08/2010 10:15:00 a.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19451 05/08/2010 02:00:00 p.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19452 05/08/2010 02:15:00 p.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19453 05/08/2010 02:30:00 p.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19454 05/08/2010 02:45:00 p.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19455 05/08/2010 03:00:00 p.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19456 09/08/2010 11:00:00 a.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19457 09/08/2010 11:15:00 a.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19458 09/08/2010 11:30:00 a.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19459 09/08/2010 11:45:00 a.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19460 10/08/2010 09:30:00 a.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19461 10/08/2010 09:45:00 a.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19462 10/08/2010 10:00:00 a.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19463 10/08/2010 10:15:00 a.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19464 12/08/2010 02:00:00 p.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19465 12/08/2010 02:15:00 p.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19466 12/08/2010 02:30:00 p.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19467 12/08/2010 02:45:00 p.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19468 12/08/2010 03:00:00 p.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19469 16/08/2010 11:00:00 a.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19470 16/08/2010 11:15:00 a.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19471 16/08/2010 11:30:00 a.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19472 16/08/2010 11:45:00 a.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19473 17/08/2010 09:30:00 a.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19474 17/08/2010 09:45:00 a.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19475 17/08/2010 10:00:00 a.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19476 17/08/2010 10:15:00 a.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19477 19/08/2010 02:00:00 p.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19478 19/08/2010 02:15:00 p.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19479 19/08/2010 02:30:00 p.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19480 19/08/2010 02:45:00 p.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19481 19/08/2010 03:00:00 p.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19482 23/08/2010 11:00:00 a.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19483 23/08/2010 11:15:00 a.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19484 23/08/2010 11:30:00 a.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19485 23/08/2010 11:45:00 a.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19486 24/08/2010 09:30:00 a.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19487 24/08/2010 09:45:00 a.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19488 24/08/2010 10:00:00 a.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19489 24/08/2010 10:15:00 a.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19490 26/08/2010 02:00:00 p.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19491 26/08/2010 02:15:00 p.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19492 26/08/2010 02:30:00 p.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19493 26/08/2010 02:45:00 p.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19494 26/08/2010 03:00:00 p.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19495 30/08/2010 11:00:00 a.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19496 30/08/2010 11:15:00 a.m. 2 SFORZINI LUIS TRAUMATOLOGIA
Página 202
id fecha nromedico medico especialidad
19497 30/08/2010 11:30:00 a.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19498 30/08/2010 11:45:00 a.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19499 31/08/2010 09:30:00 a.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19500 31/08/2010 09:45:00 a.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19501 31/08/2010 10:00:00 a.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19502 31/08/2010 10:15:00 a.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19503 02/09/2010 02:00:00 p.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19504 02/09/2010 02:15:00 p.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19505 02/09/2010 02:30:00 p.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19506 02/09/2010 02:45:00 p.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19507 02/09/2010 03:00:00 p.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19508 06/09/2010 11:00:00 a.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19509 06/09/2010 11:15:00 a.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19510 06/09/2010 11:30:00 a.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19511 06/09/2010 11:45:00 a.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19512 07/09/2010 09:30:00 a.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19513 07/09/2010 09:45:00 a.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19514 07/09/2010 10:00:00 a.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19515 07/09/2010 10:15:00 a.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19516 09/09/2010 02:00:00 p.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19517 09/09/2010 02:15:00 p.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19518 09/09/2010 02:30:00 p.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19519 09/09/2010 02:45:00 p.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19520 09/09/2010 03:00:00 p.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19521 13/09/2010 11:00:00 a.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19522 13/09/2010 11:15:00 a.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19523 13/09/2010 11:30:00 a.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19524 13/09/2010 11:45:00 a.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19525 14/09/2010 09:30:00 a.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19526 14/09/2010 09:45:00 a.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19527 14/09/2010 10:00:00 a.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19528 14/09/2010 10:15:00 a.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19529 16/09/2010 02:00:00 p.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19530 16/09/2010 02:15:00 p.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19531 16/09/2010 02:30:00 p.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19532 16/09/2010 02:45:00 p.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19533 16/09/2010 03:00:00 p.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19534 20/09/2010 11:00:00 a.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19535 20/09/2010 11:15:00 a.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19536 20/09/2010 11:30:00 a.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19537 20/09/2010 11:45:00 a.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19538 21/09/2010 09:30:00 a.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19539 21/09/2010 09:45:00 a.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19540 21/09/2010 10:00:00 a.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19541 21/09/2010 10:15:00 a.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19542 23/09/2010 02:00:00 p.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19543 23/09/2010 02:15:00 p.m. 2 SFORZINI LUIS TRAUMATOLOGIA
Página 203
id fecha nromedico medico especialidad
19544 23/09/2010 02:30:00 p.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19545 23/09/2010 02:45:00 p.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19546 23/09/2010 03:00:00 p.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19547 27/09/2010 11:00:00 a.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19548 27/09/2010 11:15:00 a.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19549 27/09/2010 11:30:00 a.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19550 27/09/2010 11:45:00 a.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19551 28/09/2010 09:30:00 a.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19552 28/09/2010 09:45:00 a.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19553 28/09/2010 10:00:00 a.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19554 28/09/2010 10:15:00 a.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19555 30/09/2010 02:00:00 p.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19556 30/09/2010 02:15:00 p.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19557 30/09/2010 02:30:00 p.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19558 30/09/2010 02:45:00 p.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19559 30/09/2010 03:00:00 p.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19560 04/10/2010 11:00:00 a.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19561 04/10/2010 11:15:00 a.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19562 04/10/2010 11:30:00 a.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19563 04/10/2010 11:45:00 a.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19564 05/10/2010 09:30:00 a.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19565 05/10/2010 09:45:00 a.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19566 05/10/2010 10:00:00 a.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19567 05/10/2010 10:15:00 a.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19568 07/10/2010 02:00:00 p.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19569 07/10/2010 02:15:00 p.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19570 07/10/2010 02:30:00 p.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19571 07/10/2010 02:45:00 p.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19572 07/10/2010 03:00:00 p.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19573 11/10/2010 11:00:00 a.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19574 11/10/2010 11:15:00 a.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19575 11/10/2010 11:30:00 a.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19576 11/10/2010 11:45:00 a.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19577 12/10/2010 09:30:00 a.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19578 12/10/2010 09:45:00 a.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19579 12/10/2010 10:00:00 a.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19580 12/10/2010 10:15:00 a.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19581 14/10/2010 02:00:00 p.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19582 14/10/2010 02:15:00 p.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19583 14/10/2010 02:30:00 p.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19584 14/10/2010 02:45:00 p.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19585 14/10/2010 03:00:00 p.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19586 18/10/2010 11:00:00 a.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19587 18/10/2010 11:15:00 a.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19588 18/10/2010 11:30:00 a.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19589 18/10/2010 11:45:00 a.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19590 19/10/2010 09:30:00 a.m. 2 SFORZINI LUIS TRAUMATOLOGIA
Página 204
id fecha nromedico medico especialidad
19591 19/10/2010 09:45:00 a.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19592 19/10/2010 10:00:00 a.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19593 19/10/2010 10:15:00 a.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19594 21/10/2010 02:00:00 p.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19595 21/10/2010 02:15:00 p.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19596 21/10/2010 02:30:00 p.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19597 21/10/2010 02:45:00 p.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19598 21/10/2010 03:00:00 p.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19599 25/10/2010 11:00:00 a.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19600 25/10/2010 11:15:00 a.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19601 25/10/2010 11:30:00 a.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19602 25/10/2010 11:45:00 a.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19603 26/10/2010 09:30:00 a.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19604 26/10/2010 09:45:00 a.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19605 26/10/2010 10:00:00 a.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19606 26/10/2010 10:15:00 a.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19607 28/10/2010 02:00:00 p.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19608 28/10/2010 02:15:00 p.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19609 28/10/2010 02:30:00 p.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19610 28/10/2010 02:45:00 p.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19611 28/10/2010 03:00:00 p.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19612 01/11/2010 11:00:00 a.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19613 01/11/2010 11:15:00 a.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19614 01/11/2010 11:30:00 a.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19615 01/11/2010 11:45:00 a.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19616 02/11/2010 09:30:00 a.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19617 02/11/2010 09:45:00 a.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19618 02/11/2010 10:00:00 a.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19619 02/11/2010 10:15:00 a.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19620 04/11/2010 02:00:00 p.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19621 04/11/2010 02:15:00 p.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19622 04/11/2010 02:30:00 p.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19623 04/11/2010 02:45:00 p.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19624 04/11/2010 03:00:00 p.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19625 08/11/2010 11:00:00 a.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19626 08/11/2010 11:15:00 a.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19627 08/11/2010 11:30:00 a.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19628 08/11/2010 11:45:00 a.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19629 09/11/2010 09:30:00 a.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19630 09/11/2010 09:45:00 a.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19631 09/11/2010 10:00:00 a.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19632 09/11/2010 10:15:00 a.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19633 11/11/2010 02:00:00 p.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19634 11/11/2010 02:15:00 p.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19635 11/11/2010 02:30:00 p.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19636 11/11/2010 02:45:00 p.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19637 11/11/2010 03:00:00 p.m. 2 SFORZINI LUIS TRAUMATOLOGIA
Página 205
id fecha nromedico medico especialidad
19638 15/11/2010 11:00:00 a.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19639 15/11/2010 11:15:00 a.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19640 15/11/2010 11:30:00 a.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19641 15/11/2010 11:45:00 a.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19642 16/11/2010 09:30:00 a.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19643 16/11/2010 09:45:00 a.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19644 16/11/2010 10:00:00 a.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19645 16/11/2010 10:15:00 a.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19646 18/11/2010 02:00:00 p.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19647 18/11/2010 02:15:00 p.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19648 18/11/2010 02:30:00 p.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19649 18/11/2010 02:45:00 p.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19650 18/11/2010 03:00:00 p.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19651 22/11/2010 11:00:00 a.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19652 22/11/2010 11:15:00 a.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19653 22/11/2010 11:30:00 a.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19654 22/11/2010 11:45:00 a.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19655 23/11/2010 09:30:00 a.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19656 23/11/2010 09:45:00 a.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19657 23/11/2010 10:00:00 a.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19658 23/11/2010 10:15:00 a.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19659 25/11/2010 02:00:00 p.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19660 25/11/2010 02:15:00 p.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19661 25/11/2010 02:30:00 p.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19662 25/11/2010 02:45:00 p.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19663 25/11/2010 03:00:00 p.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19664 29/11/2010 11:00:00 a.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19665 29/11/2010 11:15:00 a.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19666 29/11/2010 11:30:00 a.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19667 29/11/2010 11:45:00 a.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19668 30/11/2010 09:30:00 a.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19669 30/11/2010 09:45:00 a.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19670 30/11/2010 10:00:00 a.m. 2 SFORZINI LUIS TRAUMATOLOGIA
19671 30/11/2010 10:15:00 a.m. 2 SFORZINI LUIS TRAUMATOLOGIA
Luego de esta observación suponemos que entendemos con claridad la necesidad del
proceso automatico de esta carga y pasamos a mostrar el código.
Página 206
‘DECLARACION DE VARIABLES GENERAL/DECLARACIONES
Option Explicit
Dim mensaje
Dim sql As String
Dim vbtneliminar As Boolean
Página 207
Private Sub Form_Load()
modclinica.datosconeccion
datos.AbrirConeccion modclinica.coneccion, modclinica.dbconeccion,
modclinica.dbpath, modclinica.dbpass
vbtneliminar = False
End Sub
vbtneliminar = False
If ValidacionDatosFormulario() Then
vnromedico = sqlhorarios.Fields("nromedico")
vmedico = sqlhorarios.Fields("medico")
vespecialidad = sqlhorarios.Fields("especialidad")
Página 208
If sqlhorarios.Fields("miercoles") = True Then
vmiercoles = sqlhorarios.Fields("miercoles")
vhoradesdemiercoles = sqlhorarios.Fields("miercolesinicio")
vhorahastamiercoles = sqlhorarios.Fields("miercolesfin")
End If
datos.CerrarTabla sqlhorarios
vfechaingresada = vfechadesde
Página 209
Case 2
If vlunes = True Then
cargaraltas vhoradesdelunes, vhorahastalunes
End If
Case 3
If vmartes = True Then
cargaraltas vhoradesdemartes, vhorahastamartes
End If
Case 4
If vmiercoles = True Then
cargaraltas vhoradesdemiercoles, vhorahastamiercoles
End If
Case 5
If vjueves = True Then
cargaraltas vhoradesdejueves, vhorahastajueves
End If
Case 6
If vviernes = True Then
cargaraltas vhoradesdeviernes, vhorahastaviernes
End If
Case 7
If vsabado = True Then
cargaraltas vhoradesdesabado, vhorahastasabado
End If
End Select
vfechaingresada = vfechaingresada + 1
Wend
limpiarvariables
MsgBox "Alta Procesada Correctamente"
limpiar
End If
End Sub
Página 210
‘Este es el boton que contiene el código que permite revertir el proceso de carga
automatica anterior. En caso de existir un error en la habilitación de dias y horarios a
dar turnos puedo eliminarlos utilizando este botón
vbtneliminar = True
If ValidacionDatosFormulario() Then
Else
mensaje = MsgBox("Ya hay cargados turnos en ese periodo para ese medico",
vbCritical, "IMPOSIBLE ELIMINAR")
End If
datos.CerrarTabla sqlturnos
End If
End Sub
frmselmedicos.Show vbModal
txtnromedico = frmselmedicos.xnromedico
txtmedico = frmselmedicos.xmedico
txtespecialidad = frmselmedicos.xespecialidad
End Sub
Página 211
* DESCARGA DEL FORMULARIO
* PROCEDIMIENTOS
vhoraingresada = xhoradesde
Wend
End Sub
Página 212
Sub buscarmedico()
If IsNumeric(txtnromedico) Then
Else
mensaje = MsgBox("Debe Ingresar un dato numerico en el numero de medico",
vbCritical, "Medico")
txtnromedico = ""
txtmedico = ""
txtnromedico.SetFocus
End If
End If
End Sub
If KeyAscii = 13 Then
txtespecialidad.SetFocus
End If
End Sub
Página 213
Private Sub txtespecialidad_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
txtfechadesde.SetFocus
End If
End Sub
If KeyAscii = 13 Then
txtfechahasta.SetFocus
End If
End Sub
If KeyAscii = 13 Then
txtrango.SetFocus
End If
End Sub
If KeyAscii = 13 Then
cmdcargar.SetFocus
End If
End Sub
‘Este procedimiento limpia el valor de todas las variables para poder realizar un nuevo
proceso
vnromedico = 0
vmedico = ""
vespecialidad = ""
vlunes = 0
vhoradesdelunes = 0
vhorahastalunes = 0
vmartes = 0
vhoradesdemartes = 0
vhorahastamartes = 0
vmiercoles = 0
vhoradesdemiercoles = 0
vhorahastamiercoles = 0
vjueves = 0
vhoradesdejueves = 0
Página 214
vhorahastajueves = 0
vviernes = 0
vhoradesdeviernes = 0
vhorahastaviernes = 0
vsabado = 0
vhoradesdesabado = 0
vhorahastasabado = 0
vdomingo = 0
vhoradesdedomingo = 0
vhorahastadomingo = 0
End Sub
Dim k As Integer
ValidacionDatosFormulario = False
Página 215
If Trim(txtfechahasta) <> "" Then
If Not IsDate(Trim(txtfechahasta)) Then
k = MsgBox("Debe Ingresar una fecha valida", vbCritical, " Fecha Hasta ")
txtfechahasta.SetFocus
Exit Function
End If
End If
End If
ValidacionDatosFormulario = True
End Function
txtnromedico = ""
txtmedico = ""
txtespecialidad = ""
txtfechadesde = ""
txtfechahasta = ""
txtrango = ""
End Sub
Página 216
TURNOS PACIENTES
PANTALLA AGENDA
‘DECLARACION DE VARIABLES
Option Explicit
modclinica.datosconeccion
datos.AbrirConeccion modclinica.coneccion, modclinica.dbconeccion,
modclinica.dbpath, modclinica.dbpass
imgagenda.Width = frmagenda.Width
imgagenda.Height = frmagenda.Height
imgagenda.Picture = LoadPicture(App.Path + "\imagenes\agenda.jpg")
cldmes1.object = date
lblfecha.Caption = cldmes1.object
lbldiasemana.Caption = WeekdayName(Weekday(lblfecha.Caption))
modclinica.estilogrilla msflexman
modclinica.estilogrilla msflextarde
vfecha = date
vmedico = txtmedico.Text
modclinica.completardia msflexman, msflextarde, vfecha, vmedico
End Sub
Página 217
‘Este botón pasa dia por dia al dia siguiente
cldmes1.object = cldmes1.object + 1
lblfecha.Caption = cldmes1.object
lbldiasemana.Caption = WeekdayName(Weekday(lblfecha.Caption))
vfecha = lblfecha.Caption
vmedico = txtmedico.Text
modclinica.completardia msflexman, msflextarde, vfecha, vmedico
End Sub
lblfecha.Caption = cldmes1.object
lbldiasemana.Caption = WeekdayName(Weekday(lblfecha.Caption))
vfecha = lblfecha.Caption
vmedico = txtmedico.Text
modclinica.completardia msflexman, msflextarde, vfecha, vmedico
cldmes1.Visible = False
End Sub
frmselmedicos.Show vbModal
txtnromedico = frmselmedicos.xnromedico
txtmedico = frmselmedicos.xmedico
txtespecialidad = frmselmedicos.xespecialidad
lblfecha.Caption = cldmes1.object
lbldiasemana.Caption = WeekdayName(Weekday(lblfecha.Caption))
vfecha = lblfecha.Caption
vmedico = txtmedico.Text
modclinica.completardia msflexman, msflextarde, vfecha, vmedico
modclinica.buscarhorariosmedicos txtnromedico, txthorario
End Sub
Página 218
‘Este botón permite seleccionar 1 especialidad
frmselespecialidad.Show vbModal
txtnromedico = frmselmedicos.xnromedico
txtmedico = frmselmedicos.xmedico
txtespecialidad = frmselespecialidad.xespecialidad
lblfecha.Caption = cldmes1.object
lbldiasemana.Caption = WeekdayName(Weekday(lblfecha.Caption))
txtnromedico = ""
txtmedico = ""
txthorario = ""
vfecha = lblfecha.Caption
vmedico = txtmedico.Text
vespecialidad = txtespecialidad.Text
End Sub
Printer.EndDoc
End Sub
vectortitulos(1) = "Hora"
vectortitulos(2) = "Paciente"
End Sub
Página 219
* EVENTO CLICK DE LA GRILLA
* PROCEDIMIENTOS
Xgrilla.col = 1
completardatos
datos.CerrarTabla tabladia
Else
End If
End Sub
‘Este proceso completa los datos de la tabla de turnos en un nuevo formulario que me
permite cargar el paciente y otros datos del turno a suministrar
Página 220
If Not IsNull(tabladia.Fields("nropaciente")) Then
frmturnos.txtnropaciente = tabladia.Fields("nropaciente")
End If
frmturnos.Show vbModal
End Sub
Página 221
TURNOS PACIENTES
PANTALLA DATOS DEL TURNO A DAR
En esta pantalla solo debemos completar datos en registros existentes en la tabla de turnos y por esto no se trata del código de un AMB
completo. El proceso principal esta dado en la modificación de un registro que lo hacemos con un UPDATE de las instrucciones SQL.
Vamos a ejemplificarlo con alguno de los registros que se mostraron en el proceso automático de alta de turnos.
Aquí estarían los primeros registros:
y luego de completar esta pantalla utilizando el codigo del update podría por ejemplo completarse de la siguiente manera:
Página 222
Como se puede observar solo se han completado datos como el nombre del paciente,
el estado de la transacción, observaciones, número de bono, codificación del estudio
(abreviatura), el estudio, el precio y el importe que corresponde al profesional en un
registro existente en la misma tabla de turnos.
CODIGO
‘DECLARACION DE VARIABLES
Option Explicit
Dim sql As String
Dim respuesta
cmbestado.AddItem "Pendiente", 0
cmbestado.AddItem "Atendido", 1
cmbestado.AddItem "Ausente", 2
cmbestado.ListIndex = 0
End Sub
Página 223
* EVENTO CLICK DE LOS BOTONES
‘Este botón es el que permite hacer el update para completar los datos
correspondiente al turno que se esta asignando
If ValidacionDatosFormulario() Then
cargavariables
vfecha = txtfecha
vmedico = txtmedico
modclinica.completardia frmagenda.msflexman, frmagenda.msflextarde, vfecha,
vmedico
limpiar
Unload Me
End If
End Sub
Página 224
‘Este botón es el que permite cancelar un turno dado. Debido a que para dar el turno
solo se han completado datos de un registro existente no debemos eliminar el registro.
Solo debemos seleccionar el registro correspondiente, blanquear los datos
correspondientes al turno que ha sido dado y hacer el update para actualizar ese
registro con los datos blanqueados.
txtnropaciente = ""
txtpaciente = ""
cmbestado.ListIndex = 0
txtobservaciones.Text = ""
cargavariables
vnropaciente = ""
vpaciente = ""
vestado = ""
vnrobono = 0
vabreviatura = ""
vestudio = ""
vprecio = 0
vobservaciones = ""
Else
respuesta = MsgBox("El turno no fue Cancelado", vbExclamation, "TURNO NO
CANCELADO ")
End If
End If
vfecha = txtfecha
vmedico = txtmedico
modclinica.completardia frmagenda.msflexman, frmagenda.msflextarde, vfecha,
vmedico
limpiar
Unload Me
Exit Sub
Solucion1:
MsgBox "error:" & Err & Chr$(13) & Err.Description, vbExclamation, "Existe un
problema"
End Sub
Página 225
‘Este botón permite seleccionar un paciente
Private Sub cmdselpacientes_Click()
frmselpacientes.Show vbModal
txtnropaciente = frmselpacientes.xnropaciente
txtpaciente = frmselpacientes.xapellido & " " & frmselpacientes.xnombre
txtnrobono.SetFocus
End Sub
frmselestudios.Show vbModal
txtabreviaturaest = frmselestudios.xabreviatura
txtestudio = frmselestudios.xestudio
txtimporte = frmselestudios.ximporte
cmbestado.SetFocus
End Sub
vfecha = txtfecha
vmedico = txtmedico
modclinica.completardia frmagenda.msflexman, frmagenda.msflextarde, vfecha,
vmedico
Unload Me
End Sub
If KeyAscii = 13 Then
txtnrobono.SetFocus
End If
End Sub
If KeyAscii = 13 Then
cmdselestudio.SetFocus
End If
End Sub
Página 226
Private Sub cmdselestudio_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
cmbestado.SetFocus
End If
End Sub
* PROCEDIMIENTOSY FUNCIONES
‘Este procedimiento carga los datos escritos en cada uno de los textbox a variables
vid = TexALng(Trim(txtid))
vnropaciente = Trim(txtnropaciente)
vpaciente = Trim(txtpaciente)
vestado = Trim(cmbestado)
vnrobono = TexALng(Trim(txtnrobono))
vabreviatura = Trim(txtabreviaturaest)
vestudio = Trim(txtestudio)
vprecio = TexADou(Trim(txtimporte))
vobservaciones = Trim(txtobservaciones)
End Sub
‘Este procedimiento limpia toda la pantalla dejando los textbox en blanco y las casillas
desmarcadas… no elimina registros
Sub limpiar()
txtid = ""
txtnropaciente = ""
txtpaciente = ""
txtfecha = ""
txthora = ""
cmbestado.ListIndex = 0
txtnromedico = ""
txtmedico = ""
txtnrobono = ""
txtabreviaturaest = ""
txtestudio = ""
txtimporte = ""
txtobservaciones = ""
End Sub
Página 227
‘Este procedimiento busca el paciente y pone los datos del mismo en el textbox, en
caso de no existir el paciente limpia los textbox que contengan estos datos
Sub buscarpaciente()
If IsNumeric(txtnropaciente) Then
Else
respuesta = MsgBox("Debe Ingresar un dato numerico en el numero de paciente",
vbCritical, "Paciente")
txtnropaciente = ""
txtpaciente = ""
txtnropaciente.SetFocus
End If
End If
End Sub
Página 228
‘ Esta función verifica si la carga de cada uno de los datos es correcta y devuelve valor
verdadero o falso de acuerdo a si los datos son o no correctos
'validacion hora
ValidacionDatosFormulario = True
End Function
Página 229
PANTALLA PLANILLA DIARIA
modclinica.datosconeccion
datos.AbrirConeccion modclinica.coneccion, modclinica.dbconeccion,
modclinica.dbpath, modclinica.dbpass
MacGridStr1.COLUMNAS = 8
MacGridStr1.RENGLONES = 10
MacGridStr1.Inicializar
txtdesde = date
vbotonbuscar = False
TituloGrilla
End Sub
frmselmedicos.Show vbModal
txtnromedico = frmselmedicos.xnromedico
txtmedico = frmselmedicos.xmedico
txtespecialidad = frmselmedicos.xespecialidad
End Sub
frmselespecialidad.Show vbModal
txtespecialidad = frmselespecialidad.xespecialidad
End Sub
Página 230
‘Este botón permite buscar información según los criterios ingresados y determinar
cuál fue la plata ingresada y lo que se le debe abonar a cada profesional
End If
End Sub
‘Este boton actualiza los datos en la tabla de turnos en el caso de que se hayan
modificado datos en la grilla ya que la misma es editable
If ValidacionDatosGrilla(MacGridStr1) Then
actualizar
MacGridStr1.Sumar MacGridStr1, 5
txtingresos = MacGridStr1.SUMA
MacGridStr1.Sumar MacGridStr1, 7
txtegresos = MacGridStr1.SUMA
cmdactualizar.Enabled = False
End If
End Sub
‘Este botón limpia toda la pantalla dejando los textbox en blanco … no elimina
registros
txtnromedico = ""
txtmedico = ""
txtespecialidad = ""
End Sub
Página 231
‘Este botón imprime la planilla mostrada en pantalla
MacGridStr1.imprimir
Printer.CurrentX = 5
Printer.Print "TOTAL INGRESOS: " + txtingresos.Text
Printer.CurrentX = 5
Printer.Print "TOTAL EGRESOS: " + txtegresos.Text
Printer.EndDoc
End Sub
End Sub
If KeyAscii = 13 Then
txthasta.SetFocus
End If
End Sub
If KeyAscii = 13 Then
cmdbuscar.SetFocus
End If
End Sub
Página 232
Private Sub op_medico_KeyPress(KeyAscii As Integer)
If KeyAscii = 13 Then
cmdbuscar.SetFocus
End If
End Sub
* PROCEDIMIENTOS Y FUNCIONES
MacGridStr1.limpiar
TituloGrilla
bwhere = False
sql = "SELECT id, format(fecha,'dd/mm/yyyy'), estudio, nrobono, precio, medico,
format(importeprofesional, ' ##,##0.##') FROM turnos "
sql = sql + "WHERE paciente <> ''"
bwhere = True
End If
Página 233
If Trim(txtdesde <> "") Then
If bwhere = True Then
sql = sql + " and "
Else
sql = sql + " Where "
bwhere = True
End If
sql = sql + "fecha >= format(#" + txtdesde + " 00:00:00#, 'mm/dd/yyyy hh:mm:ss')"
If Trim(txthasta = "") Then
sql = sql + " AND fecha <= format(#" + txtdesde + " 23:59:59#, 'mm/dd/yyyy
hh:mm:ss')"
End If
End If
If op_nrobono Then
sql = sql + " ORDER BY nrobono"
End If
If op_medico Then
sql = sql + " ORDER BY medico"
End If
If op_fecha Then
sql = sql + " ORDER BY fecha"
End If
datos.CerrarTabla tablaturnos
End Sub
Página 234
‘ Este procedimiento actualiza los importes de la planilla en el caso que se hayan
modificado ya que la grilla es editable
MacGridStr1.CantidadFilas
MacGridStr1.COLUMNA = 1
MacGridStr1.RENGLON = vcont
vid = MacGridStr1.obtenerItem
MacGridStr1.COLUMNA = 7
vimporteprofesional = TexADou(Trim(MacGridStr1.obtenerItem))
End If
Next
End Sub
‘Este procedimiento muestra los títulos de cada una de las columnas de la grilla
MacGridStr1.RENGLON = 0
MacGridStr1.ANCHO = 0
MacGridStr1.anchoColumna
MacGridStr1.titulo = " "
MacGridStr1.tituloColumna
MacGridStr1.COLUMNA = 1
MacGridStr1.RENGLON = 0
MacGridStr1.ANCHO = 0
MacGridStr1.anchoColumna
MacGridStr1.titulo = " ID "
MacGridStr1.tituloColumna
MacGridStr1.COLUMNA = 2
MacGridStr1.RENGLON = 0
MacGridStr1.ANCHO = 1000
MacGridStr1.anchoColumna
MacGridStr1.titulo = "Fecha"
MacGridStr1.tituloColumna
Página 235
MacGridStr1.COLUMNA = 3
MacGridStr1.RENGLON = 0
MacGridStr1.ANCHO = 4500
MacGridStr1.anchoColumna
MacGridStr1.titulo = "Estudio"
MacGridStr1.tituloColumna
MacGridStr1.COLUMNA = 4
MacGridStr1.RENGLON = 0
MacGridStr1.ANCHO = 1000
MacGridStr1.anchoColumna
MacGridStr1.titulo = "Nro Bono"
MacGridStr1.tituloColumna
MacGridStr1.COLUMNA = 5
MacGridStr1.RENGLON = 0
MacGridStr1.ANCHO = 1500
MacGridStr1.anchoColumna
MacGridStr1.titulo = "Precio"
MacGridStr1.tituloColumna
MacGridStr1.COLUMNA = 6
MacGridStr1.RENGLON = 0
MacGridStr1.ANCHO = 1500
MacGridStr1.anchoColumna
MacGridStr1.titulo = "Medico"
MacGridStr1.tituloColumna
MacGridStr1.COLUMNA = 7
MacGridStr1.RENGLON = 0
MacGridStr1.ANCHO = 1500
MacGridStr1.anchoColumna
MacGridStr1.titulo = "Importe Profesional"
MacGridStr1.tituloColumna
End Sub
‘Esta función verifica si la carga de cada uno de los datos es correcta y devuelve valor
verdadero o falso de acuerdo a si los datos son o no correctos
Dim k As Integer
ValidacionDatosFormulario = False
If Trim(xdesde) <> "" And Not IsDate(Trim(xdesde)) Then
k = MsgBox("Debe Ingresar un formato de fecha en fecha desde", vbCritical,
"Fecha")
xdesde.SetFocus
Exit Function
End If
ValidacionDatosFormulario = True
End Function
Página 236
‘Esta función verifica cada uno de los datos modificado en la grilla es correcta y
devuelve valor verdadero o falso de acuerdo a si los datos son o no correctos
Dim k As Integer
Dim vcont As Integer
ValidacionDatosGrilla = False
msFlexGrid.CantidadFilas
msFlexGrid.COLUMNA = 7 'xcol
msFlexGrid.RENGLON = vcont
If Trim(msFlexGrid.obtenerItem) <> "" And Not IsNumeric(msFlexGrid.obtenerItem)
Then
k = MsgBox("Debe Ingresar todos datos numericos en el importe del profesional",
vbCritical, "Importe Profesional")
Exit Function
End If
Next
ValidacionDatosGrilla = True
End Function
Página 237
ETAPA DE PRUEBA
PRUEBAS UNITARIAS
PU – 001
Objetivo Probar acceso erróneo a la máquina del
sistema
Entrada Correr archivo ejecutable del sistema
Salida Error de Comunicación
Condiciones No hay restricciones para esta prueba
Procedimiento 1- Hacer clic en el acceso directo al
sistema
2- Mensaje de error “Archivo Inexistente”
Prerrequisitos Dar de baja la maquina donde se
encuentra la aplicación y la base de datos
PU – 002
Objetivo Probar acceso exitoso a la máquina del
sistema
Entrada Correr archivo ejecutable del sistema
Salida Error de Comunicación
Condiciones No hay restricciones para esta prueba
Procedimiento 1- Hacer clic en el acceso directo al
sistema
2- Mensaje de error “Archivo Inexistente”
Prerrequisitos Levantar la máquina donde se encuentra
la aplicación y la base de datos
PU – 003
Objetivo Probar acceso erróneo a la base de datos
Entrada tperez 123
Salida Ingreso al sistema
Condiciones No se permite el acceso a la base de
datos de otros programas mientras se
realizan las pruebas
Procedimiento 1- Ingresar usuario y contraseña
2- Hacer clic en Aceptar
3- Mensaje Error “No hay conexión a la
base de datos”
Prerrequisitos Levantar la máquina donde se encuentra
la aplicación y la base de datos
Página 238
PU – 004
Objetivo Probar acceso exitoso a la base de datos
Entrada tperez 123
Salida Ingreso al sistema
Condiciones No se permite el acceso a la base de
datos de otros programas mientras se
realizan las pruebas
Procedimiento 1- Ingresar usuario y contraseña
2- Hacer clic en Aceptar
3- Se deberá observar en la pantalla el
menú del sistema con todas las opciones
del sistema para las que tenga
autorización por parte del administrador.
Prerrequisitos Levantar la máquina donde se encuentra
la aplicación y la base de datos
PU – 005
Objetivo Probar una autenticación errónea
Entrada user1 xxx
Salida Usuario o Clave inválido
Condiciones No hay restricciones para esta prueba
Procedimiento 1- Ingresar usuario y contraseña
2- Hacer clic en Aceptar
3- Se deberá observar en la pantalla el
menú del sistema
Prerrequisitos Levantar el servidor de aplicaciones
PU – 006
Objetivo Probar una autenticación exitosa
Entrada user1 123
Salida Acceso al Sistema
Condiciones No hay restricciones para esta prueba
Procedimiento 1- Ingresar usuario y contraseña
2- Hacer clic en Aceptar
3- Se deberá observar en la pantalla el
menú del sistema
Prerrequisitos Levantar el servidor de aplicaciones
Página 239
CP-07 Insertar Paciente Ingresar un nuevo paciente
CP-08 Insertar Paciente Intentar ingresar un paciente
existente
CP-09 Validar Datos Ingresar Paciente con datos
erróneos
CP-10 Validar Datos Ingresar Paciente sin alguno de
los datos obligarios
CP-11 Modificar Paciente Modificar Correctamente un
Paciente
CP-12 Modificar Paciente Intentar modificar un paciente
Inexistente
CP-13 Eliminar Paciente Eliminar Correctamente un
paciente
CP-14 Eliminar Paciente Intentar eliminar un paciente
inexistente
CP-15 Eliminar Paciente Intentar eliminar un paciente
con turnos cargados
CP-16 Insertar Médico Ingresar un nuevo médico
CP-17 Insertar Médico Intentar ingresar un médico
CP-18 Validar Datos Ingresar Médico con datos
erróneos
CP-19 Validar Datos Ingresar Médico sin alguno de
los datos obligarios
CP-20 Modificar Médico Modificar Correctamente un
Médico
CP-21 Modificar Médico Intentar modificar un Médico
Inexistente
CP-22 Eliminar Médico Eliminar Correctamente un
Médico
CP-23 Eliminar Médico Intentar eliminar un Médico
inexistente
CP-24 Eliminar Médico Intentar eliminar un Médico con
turnos cargados
CP-25 Insertar Estudios Ingresar un nuevo Estudio
CP-26 Insertar Estudios Intentar ingresar un Estudio
existente
CP-27 Validar Estudios Ingresar un Estudio con datos
erróneos
CP-28 Validar Estudios Ingresar un Estudio sin alguno
de los datos obligarios
CP-29 Modificar Estudios Modificar Correctamente un
Estudio
CP-30 Modificar Estudios Intentar modificar un Estudio
Inexistente
CP-31 Eliminar Estudios Eliminar Correctamente un
Estudio
CP-32 Eliminar Estudios Intentar eliminar un Estudio
inexistente
CP-33 Eliminar Estudios Intentar eliminar un Estudio con
turnos cargados
CP-34 Insertar Horario Médico Ingresar un nuevo Horario
Médico
CP-35 Insertar Horario Médico Intentar ingresar un Horario
Página 240
Médico existente
CP-36 Validar Horario Médico Ingresar un Horario Médico con
datos erróneos
CP-37 Validar Horario Médico Ingresar un Horario Médico sin
alguno de los datos obligarios
CP-38 Modificar Horario Médico Modificar Correctamente un
Horario Médico
CP-39 Modificar Horario Médico Intentar modificar un Horario
Médico Inexistente
CP-40 Eliminar Horario Médico Eliminar Correctamente un
Horario Médico
CP-41 Eliminar Horario Médico Intentar eliminar un Horario
Médico inexistente
CP-42 Eliminar Horario Médico Intentar eliminar un Horario
Médico habilitado en la agenda
CP-43 Ingresar Alta de un Período Ingresar un nuevo período para
un médico
CP-44 Ingresar Alta de un Período Intentar ingresar un período
existente
CP-45 Ingresar Alta de un Período Intentar ingresar un nuevo
período con datos erróneos
CP-46 Eliminar un período Eliminar un período existente
CP-47 Eliminar un período Intentar eliminar un período que
tenga turnos asignados
CP-48 Eliminar un período Intentar eliminar un período que
no exista
CP-49 Asignar un turno Asignar un nuevo turno
CP-50 Asignar un turno Intentar asignar un turno en un
horario que no se atiende
CP-51 Asignar un turno Intentar asignar un turno con
datos erróneos
CP-52 Cancelar un turno Cancelar un turno
CP-53 Cancelar un turno Intentar cancelar un turno no
asignado
CP-54 Imprimir turnos Imprimir los turnos del dia para
un médico
CP-55 Obtener Resultados Planilla Consultar Planilla para una
Diaria fecha
CP-56 Obtener Resultados Planilla Consultar Planilla para un
Diaria médico
CP-57 Obtener Resultados Planilla Consultar Planilla para una
Diaria fecha y un médico específico
CP-58 Obtener Resultados Planilla Consultar con parámetros
Diaria erróneos
CP-59 Obtener Resultados Planilla Consultar con parámetros para
Diaria los cuales se conoce que no
hay información ingresada
Página 241
PRUEBA DE INTEGRACION
PI – 001
Objetivo Dar de alta un paciente
Entrada Apellido: García
Nombre: Juan Alberto
Dirección: Santa Fe 2378 3 “A”
Localidad: CABA
Teléfono: 4.826.9887
Email: jagarcia@hotmail.com
Fecha nacimiento: 23/08/1930
Edad: 80
Sexo: masculino
Documento: DNI: 2876565
Estado Civil: Viudo
Profesión: Jubilado
Fecha Alta: 4/07/2011
Salida Paciente ingresado y actualizado en la
grilla
Se actualiza la tabla de Pacientes
Condiciones No hay restricciones
Procedimiento 1 – Ingresar desde el menú principal al
menú “Pacientes”
2- Ingresar apellido, nombre, dirección,
localidad, teléfono, email, fecha de
nacimiento, edad, sexo, documento,
estado civil, profesión, fecha de alta y
observaciones del paciente
3- Hacer clic en Agregar
4- Se deberá observar en la grilla
Prerrequisitos 1 – Levantar el servidor de aplicaciones
2 – Ingresar al sistema con usuario tperez
y clave 123
PI – 002
Objetivo Dar de alta un médico
Entrada Nro médico: 1233
Apellido: Belloso
Nombre: Gonzalo
Dirección: San Luis 3054 3 “B”
Localidad: CABA
Código postal: 1425
Teléfono: 4.962-7788
Celular: 15 -5-277-8766
Fax: -
Email: gonbelloso@gmail.com
Especialidad: Cardiólogo
Salida Médico ingresado y actualizado en la
grilla
Se actualiza la tabla de Médicos
Condiciones No hay restricciones
Procedimiento 1 – Ingresar desde el menú principal al
menú “Médicos”
2- Ingresar nro de médico, apellido,
Página 242
nombre, dirección, localidad, código
postal, teléfono, celular, fax, email,
especialidad y observaciones del médico
3- Hacer clic en Agregar
4- Se deberá observar en la grilla
Prerrequisitos 1 – Levantar el servidor de aplicaciones
2 – Ingresar al sistema con usuario tperez
y clave 123
PI – 003
Objetivo Dar de alta un estudio
Entrada Abreviatura: LAB
Estudio: Laboratorio
Precio: 100
Observaciones:
Salida Estudio ingresado y actualizado en la
grilla
Se actualiza la tabla de Estudios
Condiciones No hay restricciones
Procedimiento 1 – Ingresar desde el menú principal al
menú “Estudios”
2- Ingresar abreviatura, estudio, precio y
observaciones
3- Hacer clic en Agregar
4- Se deberá observar en la grilla
Prerrequisitos 1 – Levantar el servidor de aplicaciones
2 – Ingresar al sistema con usuario tperez
y clave 123
PI – 004
Objetivo Dar de alta un horario médico
Entrada Médico: Belloso Gonzalo
Día: Lunes
Hora Desde: 09:00
Hora Hasta: 13:00
Observaciones:
Salida Dar de alta un horario médico ingresado y
actualizado en la grilla
Se actualiza la tabla de Horarios
Condiciones No hay restricciones
Procedimiento 1 – Ingresar desde el menú principal al
menú “Horarios Médicos”
2- Ingresar médico, dias de atención,
horarios y observaciones
3- Hacer clic en Agregar
4- Se deberá observar en la grilla
Prerrequisitos 1 – Levantar el servidor de aplicaciones
2 – Ingresar al sistema con usuario tperez
y clave 123
Página 243
PI – 005
Objetivo Dar de alta período en la agenda para el
médico
Entrada Apellido: Belloso Gonzalo
Fecha Desde: 01/09/2011
Fecha Hasta: 30/09/2011
Tiempo visita: 00:30:00
Salida Mensaje de “Agenda Habilitada
Exitosamente”
Alta de registros en la tabla de turnos
Condiciones No hay restricciones
Procedimiento 1 – Ingresar desde el menú principal al
menú “Alta Turnos Médicos”
2- Ingresar Médico, Fecha Desde, Fecha
Hasta, Tiempo Visita
3- Hacer clic en Cargar Fechas
Prerrequisitos 1 – Levantar el servidor de aplicaciones
2 – Ingresar al sistema con usuario tperez
y clave 123
PI – 006
Objetivo Asignar un turno
Entrada Médico: Belloso Gonzalo
Paciente: García Juan Alberto
Seleccionar Fecha: 19/09/2011
Horario: 10:00
Salida Se actualiza la tabla de Turnos
Visualizacion del paciente en la agenda
Condiciones No hay restricciones
Procedimiento 1 – Ingresar desde el menú principal al
menú “Turnos Pacientes”
2- Seleccionar Médico
3- Seleccionar Fecha
4- Seleccionar Horario
3- Hacer clic en el horario
4- Seleccionar paciente
5- Completar datos del turno (bono /
importe)
6 – Hacer click en cargar turnos
Prerrequisitos 1 – Levantar el servidor de aplicaciones
2 – Ingresar al sistema con usuario tperez
y clave 123
Página 244
PI – 007
Objetivo Consultar Planilla Diaria
Entrada Fecha: 19/09/2011
Médico: Belloso Gonzalo
Salida Turnos Asignados para el médico Belloso
Gonzalo para el 19/09/2011 visualizados
en la grilla
Condiciones No hay restricciones
Procedimiento 1 – Ingresar desde el menú principal al
menú “Planilla Diaria”
2- Ingresar Médico, Fecha Desde
3- Hacer clic en Buscar
Prerrequisitos 1 – Levantar el servidor de aplicaciones
2 – Ingresar al sistema con usuario tperez
y clave 123
Página 245
ETAPA DE IMPLEMENTACION
Página 246