You are on page 1of 242

UNIVERSIDAD DE ORIENTE

NCLEO DE SUCRE
ESCUELA DE CIENCIAS
DEPARTAMENTO DE MATEMTICAS
PROGRAMA DE LA LICENCIATURA EN INFORMTICA

DESARROLLO DE UN SISTEMA DE INFORMACIN AUTOMATIZADO


PARA EL CONTROL DE LOS PROCESOS DE NMINA, FACTURACIN Y
HONORARIOS MDICOS DEL HOSPITAL CLNICO SAN VICENTE DE PAL,
CUMAN EDO. SUCRE - VENEZUELA
(Modalidad: Pasanta)

SOULBERTO LORENZO TORRES

TRABAJO DE GRADO PRESENTADO COMO REQUISITO PARCIAL PARA


OPTAR AL TTULO DE LICENCIADO EN INFORMTICA

CUMAN, 2008

UNIVERSIDAD DE ORIENTE
NCLEO DE SUCRE
ESCUELA DE CIENCIAS
DEPARTAMENTO DE MATEMTICAS
PROGRAMA DE LA LICENCIATURA EN INFORMTICA

DESARROLLO DE UN SISTEMA DE INFORMACIN AUTOMATIZADO


PARA EL CONTROL DE LOS PROCESOS DE NMINA, FACTURACIN Y
HONORARIOS MDICOS DEL HOSPITAL CLNICO SAN VICENTE DE PAL,
CUMAN EDO. SUCRE - VENEZUELA
(Modalidad: Pasanta)

SOULBERTO LORENZO TORRES

TRABAJO DE GRADO PRESENTADO COMO REQUISITO PARCIAL PARA


OPTAR AL TTULO DE LICENCIADO EN INFORMTICA

CUMAN, 2008

DESARROLLO DE UN SISTEMA DE INFORMACIN AUTOMATIZADO


PARA EL CONTROL DE LOS PROCESOS DE NMINA, FACTURACIN Y
HONORARIOS MDICOS DEL HOSPITAL CLNICO SAN VICENTE DE PAL,
CUMAN EDO. SUCRE - VENEZUELA

APROBADO POR:

_____________________________
Prof. Alejandra Galantn
Asesora Acadmica

_____________________________
Lcda. Maritza de Sols
Asesor Externo

_____________________________
(Jurado)

_____________________________
(Jurado)

NDICE

Pg.
DEDICATORIA ................................................................................................................. i
AGRADECIMIENTO ....................................................................................................... ii
LISTA DE FIGURAS .......................................................................................................iii
RESUMEN........................................................................................................................ iv
INTRODUCCIN ............................................................................................................. 1
CAPTULO I: PRESENTACIN ..................................................................................... 4
PLANTEAMIENTO DEL PROBLEMA ...................................................................... 4
ALCANCE Y LIMITACIONES.................................................................................... 5
Alcance....................................................................................................................... 6
Limitaciones ............................................................................................................... 7
CAPTULO II: MARCO REFERENCIAL ....................................................................... 8
MARCO TERICO ....................................................................................................... 8
Antecedentes de la investigacin ............................................................................... 8
Antecedentes de la organizacin ................................................................................ 8
rea de estudio........................................................................................................... 9
rea de la investigacin ............................................................................................. 9
MARCO METODOLGICO ...................................................................................... 19
Metodologa de la investigacin .............................................................................. 19
Instrumentos de recoleccin..................................................................................... 20
Metodologa aplicada ............................................................................................... 21
CAPTULO III: DESARROLLO .................................................................................... 25
CAPTURA DE REQUERIMIENTOS ......................................................................... 25
PLANEACIN Y ESTIMACIN DEL ESFUERZO ................................................. 26
DISEO ....................................................................................................................... 27
CONSTRUCCIN....................................................................................................... 31
Subsistema Nmina.................................................................................................. 43
Subsistema Facturacin............................................................................................ 46
Subsistema Ingresos ................................................................................................. 47
Subsistema Presupuestos para Hospitalizacin ........................................................ 49
Subsistema Facturacin para Hospitalizacin .......................................................... 51
Subsistema Honorarios Mdicos .............................................................................. 52
IMPLANTACIN ....................................................................................................... 53
CONCLUSIONES ........................................................................................................... 55
RECOMENDACIONES .................................................................................................. 57
BIBLIOGRAFA ............................................................................................................. 58
APNDICES

ANEXOS

DEDICATORIA

A mis Padres, Mara Rosa Torres Rivero y Jess Alberto Lorenzo Gonzlez,
quienes se han esforzado toda su vida por darme todo lo mejor.

Espero que dios les d muchos aos de vida para que junto a m, su hijo, se
coman los frutos maduros que da la vida.

AGRADECIMIENTO

Mi primer agradecimiento es para Dios.

Gracias muy especiales a mi novia y, si Dios quiere, mi futura esposa


Magyubeliz Marian Galantn Hernuczon, sus padres Magdy Cristina Hernuczon
Acua y Lus Arturo Galantn Maza, quienes han sido para m un gran aliento, apoyo
y han sabido hacerme sentir como en casa.

A mi gran amigo, Julio Ramn Gutirrez que Dios tenga en su gloria, quien
cumpli el papel de ms que un amigo, un segundo padre.

A Javier Aoz, quien con su constante aliento y sabios consejos supo guiar mi
camino.

A Pablo Limache Pealoza, por mostrarme su amistad incondicional en los


momentos ms difciles de mi vida.

A mi asesora Profa. Alejandra Galantn, quien con su paciencia y elocuencia


ha guiado mis pasos para realizar esta obra.

A la Sra. Hilda Castro, por confiar en m y mostrarme una mano amiga.


Gracias a todo el personal del Hospital Clnico San Vicente de Pal, quienes han
sabido tenerme paciente y han demostrado su confianza en m.

Un lugar especial a todos los que de una manera u otra me ofrecieron su


apoyo moral para concluir esta obra.

ii

iii

LISTA DE FIGURAS

Pg.
0
Figura 1. Ejemplo de representacin grfica de una clase. .............................................. 10
Figura 2. Ejemplo de representacin grfica de herencia. ............................................... 12
Figura 3. Ejemplo de representacin grfica de un diagrama de casos de uso. ............... 14
Figura 4. Ejemplo de representacin grfica de un diagrama de clases........................... 14
Figura 5. Diagrama de flujo de trabajo del desarrollo de componentes........................... 21
Figura 6. Diagrama de casos de uso general del sistema. ................................................ 23
Figura 7. Diagrama de paquetes del sistema. ................................................................... 24
Figura 8. Diagrama de despliegue del sistema. ................................................................ 24
Figura 9. Arquitectura de componentes y servicios asociados. ....................................... 26
Figura 10. Diagrama de interaccin entre niveles de aplicacin. .................................... 28
Figura 11. Diagrama de relaciones del patrn de diseo ECC. ....................................... 29
Figura 12. Diagrama conceptual de clases. ...................................................................... 29
Figura 13. Ejemplo de tabla de la base de datos. ............................................................. 30
Figura 14. Zonas de la GUI. ............................................................................................. 33
Figura 15. Interfaz de usuario para el subsistema nmina. .............................................. 35
Figura 16. Interfaz de usuario de ingresos para el subsistema facturacin. ..................... 37
Figura 17. Interfaz de usuario de presupuestos para hospitalizacin para el subsistema
facturacin. ....................................................................................................................... 40

iv

RESUMEN

Se desarroll un sistema de informacin automatizado para el control de las


operaciones de nmina, facturacin y honorarios mdicos del Hospital Clnico San
Vicente de Pal, Institucin perteneciente a la Fundacin Vicenciana, enmarcado
dentro de la modalidad de programacin orientada a objetos. El Lenguaje de
programacin utilizado para el desarrollo del sistema es Microsoft Visual Basic
.NET incluido en el entorno de desarrollo Microsoft Visual Studio .NET 2003
Enterprise Architect. El sistema se construy aplicando las fases propuestas por la
metodologa de Programacin Extrema y utilizando el Lenguaje de Modelado
Unificado. Entre las fases desarrolladas se encuentran: captura de requerimientos,
obtenindose la informacin inicial para definir los requerimientos iniciales.
Planeacin y estimacin del esfuerzo, se planificaron las actividades del proceso de
desarrollo de los componentes y se definieron los plazos de entrega de las
liberaciones en base a los requerimientos capturados. Diseo, donde se defini en
detalle la arquitectura y se crearon los artefactos de UML necesarios para el diseo y
defini la estructura e implementacin de los componentes que lo integran.
Construccin, en la cual se disearon, codificaron, y adaptaron, por medio de ciclos
iterativos, los componentes del sistema. Cada subsistema se dividi en subfases
iterativas de exploracin, planificacin, iteraciones y produccin, que proporcionaron
componentes ejecutables de software que cumplen con los requerimientos capturados
en la fase de diseo. Se obtuvieron cinco (5) aplicaciones que corresponden a los
subsistemas Nmina, Facturacin y Honorarios Mdicos, conteniendo la segunda los
subsistemas Ingresos, Presupuestos y Facturacin para Hospitalizacin. Implantacin,
que consisti en la instalacin e inmediata puesta en marcha de las aplicaciones en
sus versiones definitivas (liberaciones) para cada subsistema en el ambiente real del
negocio.
Dicho sistema permiti agilizar los procesos diarios inmersos en los departamentos
de Egresos y Facturacin, Admisin y Presupuestos y Administracin de la
Institucin, generando reportes detallados de las operaciones y proporcionando
estadsticas que apoyan la toma de decisiones y el control de la organizacin.

INTRODUCCIN

La informacin se ha colocado como uno de los principales recursos que


poseen las empresas actualmente. Los directivos encargados de la toma de decisiones
han comenzado a comprender que no es slo un subproducto de la empresa, sino que
a la vez que alimenta a los negocios puede ser uno de los tantos factores crticos para
la determinacin del xito o fracaso de los mismos. Si se desea maximizar la utilidad
de la informacin manejada dentro de la organizacin, no basta con poseerla, sta
debe ser fiable, oportuna y precisa, manejndose de forma correcta y eficiente, es
decir, su xito y nivel de competitividad depende en gran parte de un buen uso de sus
recursos, mientras ms grande es dicha organizacin mayor es el nmero de procesos
y por ende, el volumen de datos a manipular aumenta casi exponencialmente.

Las Tecnologas de la Informacin y las Comunicaciones (TIC) formadas


principalmente por la Informtica y afines, buscan nuevas y mejores formas de
realizar los procesos que involucran grandes cantidades de datos, evitando la
redundancia, los errores y aumentando la rapidez de respuesta.

Las Tecnologas de la Informacin han sido conceptualizadas como la


integracin y convergencia de la computacin, las telecomunicaciones
y la tcnica para el procesamiento de datos, donde sus principales
componentes son: el factor humano, los contenidos de la informacin,
el equipamiento, la infraestructura, el software y los mecanismos de
intercambio de informacin, los elementos de la poltica y
regulaciones, adems de los recursos financieros. [1]

Las TICs orientadas hacia los siguientes objetivos; automatizacin de


procesos operativos, gestin de informacin, proporcionar informacin de apoyo a la

toma de decisiones y lograr el aumento de las capacidades de operatividad y


competitividad a travs de su implantacin y uso.

Una solucin propuesta por las TIC para las organizaciones son los Sistemas
de Informacin (SI) automatizados, los cuales representan conjuntos de subsistemas
que apoyan las funciones de operacin, administracin y toma de decisiones en las
empresas. Los SI se clasifican en tres tipos bsicos; los Sistemas de Procesamiento de
Transacciones (TPS), los Sistemas de Apoyo a las Decisiones (DSS) y los Sistemas
de Informacin para la Administracin (MIS).

Los TPS tienen como finalidad mejorar las transacciones bsicas de las que
depende toda organizacin. stos convierten las labores manuales en procesos
estructurados automatizados, dotando de nuevas formas de responder con velocidad y
exactitud a sus necesidades de informacin. Los TPS ms comunes en el mercado
realizan las transacciones de facturacin, control de mercanca, pago a empleados,
impresin de cheques y pago a proveedores, entre otras [1]. Estas son herramientas
esenciales para la administracin de empresas que manejan considerables cantidades
de informacin, como por ejemplo; bancos, almacenes, comercios y especialmente
clnicas y hospitales.

Generalmente, la mayora de las empresas que emplean sistemas


computarizados para procesar sus datos invierten grandes sumas de dinero para
desarrollar su sistema a la medida de sus necesidades. Estas organizaciones al adoptar
nuevas tecnologas centran su atencin en la eficiencia de sus procesos, para una
rpida operatividad de los mismos y tomar las decisiones en cortos plazos, tal es el
caso del Hospital Clnico San Vicente de Pal (HCSVP), Institucin privada
perteneciente a la Fundacin Vicenciana, y ubicada en la ciudad de Cuman, estado

Sucre, que presta servicios de consulta, emergencia, ciruga y hospitalizacin. El


HCSVP maneja labores administrativas, de admisin, control de citas, movimientos
nominales, facturacin, historiales mdicos, entre otras, que son complejas y deben
realizarse con un mnimo margen de error.

El objetivo general de este trabajo fue desarrollar un sistema de informacin


automatizado que permita el registro y control de los procesos de nmina, facturacin
y honorarios mdicos del HCSVP.

Este informe ha sido desarrollado en tres (3) captulos, organizados como se


describe a continuacin;
El primer captulo contiene la definicin del problema, el alcance y las
limitaciones del mismo.

El segundo captulo presenta las bases tericas y la metodologa utilizada en el


rea de estudio y de la investigacin, los problemas, objetivos y oportunidades
determinados en el desarrollo del trabajo. En este apartado se identifica el ambiente
del problema y las necesidades de informacin a solventar en la organizacin.

El tercer captulo contiene la descripcin de cada una de las fases de la


metodologa mencionadas en el captulo anterior, mostrando los resultados finales de
las iteraciones del proceso de desarrollo para cada subsistema.

CAPTULO I: PRESENTACIN

PLANTEAMIENTO DEL PROBLEMA


Los sistemas automatizados son herramientas bsicas que influyen en el
mejoramiento de la productividad de las empresas, y en particular, el uso de sistemas
computarizados. El uso de microcomputadores, es cada vez mayor, ya que en muchos
casos son ms fciles de obtener y mantener que los grandes sistemas centralizados,
adems de que pueden proporcionar algunas de las funciones de los grandes
computadores, y comunicarse con ellos para intercambiar informacin til a la hora
de tomar una decisin [2].

La informacin es un ingrediente vital para las operaciones y la


administracin de cualquier empresa. Para el control administrativo, es necesaria para
los directivos de los departamentos y de la institucin, permitindoles medir el
rendimiento, decidir sobre las operaciones de control, formular las nuevas reglas de
decisin que van a ser aplicadas por parte del personal de operaciones y, adems, la
asignacin de recursos. Se necesita la informacin resumida; para ello sta debe ser
procesada de tal manera que se observen las tendencias, se expliquen las variaciones
de sus funcionamientos en forma razonable y se sugieran las soluciones.

El HCSVP es una institucin privada ubicada en la ciudad de Cuman estado


Sucre, que presta servicios hospitalarios de medicina preventiva y atencin de
emergencia. El HCSVP maneja las labores administrativas, de admisin, control de
citas, movimientos nominales, facturacin, historiales mdicos entre otras, que son
complejas y deben realizarse con un mnimo margen de error. Para ello, cuenta con
un

TPS

(Transaction

Processing

System,

Sistema

de

Procesamiento

de

Transacciones) adquirido en el mercado, que inicialmente cubri las expectativas,


pero que en la actualidad no se adapta a las necesidades operativas de la institucin.

El TPS actual, en los procesos de nmina y control de empleados, presenta


registros repetidos, asignaciones o deducciones duplicadas en las nminas y errores
en la numeracin de los recibos de pago, produciendo retardos y desconfianza en los
procesos de pago del personal.

En los procesos de facturacin no existe un control que gestione la existencia


de materiales mdicos-quirrgicos y medicamentos, lo que produce discrepancias
entre los cargos por materiales mdicos facturados.

El clculo de los honorarios mdicos asigna cargos por consultas, tratamientos


e intervenciones mdicas a pacientes que no le corresponden, en consecuencia, genera
retardos por revisiones continuas e innecesarias en los clculos de honorarios, as
como retrasos en los pagos correspondientes.

Sumado a lo expuesto anteriormente, en lo concerniente al mantenimiento del


sistema, ste carece de mtodos de reconstruccin de ndices y de compactacin de la
base de datos, que permitan automatizar respaldos peridicos y mantengan el almacn
de datos del sistema en ptimas condiciones.

Es importante destacar que dicho sistema no contaba con ningn tipo de


documentacin tcnica (manual de sistema), cdigo fuente, especificaciones de
diseo u otros documentos, que soporten el mantenimiento y permitieran adaptarlo a
las necesidades actuales usando la reingeniera de software.

ALCANCE Y LIMITACIONES

Alcance
Este proyecto tuvo como alcance el desarrollo de un sistema de informacin
automatizado para el control de los procesos de nmina, facturacin y honorarios
mdicos del HCSVP, permitiendo registrar los movimientos de pago de empleados,
automatizar los movimientos peridicos por concepto de deducciones, prstamos y
asignaciones fijas en los perodos de pago correspondientes, facilitar el seguimiento
de los conceptos emitidos a cada empleado, imprimir comprobantes de pago, reportes
de estados de cuenta, listados de empleados y formatos de pago, as como generar
estadsticas relacionadas con los movimientos de pagos de la nmina. Para los
procesos de facturacin: registrar los ingresos por concepto de bienes y servicios
prestados en cada departamento de la Institucin, as como, emitir presupuestos,
integrar los movimientos de facturacin para los departamentos que emiten
facturacin obteniendo al momento los ingresos de todos los departamentos, controlar
la existencia de materiales mdico-quirrgicos y medicamentos para la facturacin,
imprimir recibos, comprobantes de pago, facturas, presupuestos y reportes detallados
de los departamentos que lo requieran, generar estadsticas de los ingresos diarios.
Para los procesos de pago de honorarios mdicos, el nuevo sistema registra los cargos
por intervenciones quirrgicas para los mdicos que laboran en la Institucin, genera
e imprime los recibos, las relaciones y reportes de los movimientos de pago de
mdicos y sus respectivas estadsticas.

Dicho sistema le permite a la Institucin agilizar los procesos administrativos


y apoyar la toma de decisiones de los ejecutivos, conllevando a una mejora en su
administracin.

Limitaciones
Las limitaciones que se presentaron en el desarrollo del sistema son; el
reemplazo de la herramienta de diseo Sybase PowerDesigner por Microsoft
Visio Professional 2003, debido a ventajas de integracin con el lenguaje de
programacin utilizado Visual Basic .NET. As como el reemplazo del lenguaje de
programacin Visual Basic 2005 por su predecesor Visual Basic .NET 2003,
debido a la incompatibilidad del primero con la conexin de datos remota con
servidores Microsoft SQL Server 7, servidor de bases de datos del HCSVP.

CAPTULO II: MARCO REFERENCIAL

MARCO TERICO

Antecedentes de la investigacin
Las organizaciones utilizan con mayor frecuencia sistemas de informacin
automatizados para satisfacer sus necesidades, debido a que stos permiten realizar
sus procesos de forma ntegra, rpida y efectiva.

Los sistemas administrativos se definen como la red de procedimientos


relacionados de acuerdo a un esquema integrado tendientes al logro de los fines de
una organizacin. Esto quiere decir que un conjunto de procedimientos relacionados
y dentro de determinadas condiciones, constituyen un sistema. As, el sistema de
control de nmina, por ejemplo, consiste en un conjunto de procedimientos de
asignaciones y deducciones, procedimientos de seguimientos de prstamos,
procedimientos de control, entre otros.

Existen infinidades de soluciones informticas para la administracin y


control de procesos contables, que de una u otra manera conllevan a una mejora en la
calidad de gestin, claro est, suponiendo que se ajusten a las necesidades reales de la
organizacin. Entre las diferentes alternativas para sistemas administrativos
computarizados en Venezuela se puede mencionar; SAINT y su diversa gama de
soluciones administrativas, KERUX que es un sistema administrativo integrado
orientado a la gestin de pequeas y medianas empresas, entre otros.

Antecedentes de la organizacin
El HCSVP es de una Asociacin Civil de carcter asistencial, atendida por
mdicos domiciliados en la ciudad de Cuman y que ejercen legalmente en esta
Entidad Federal, bajo los auspicios de la Sociedad San Vicente de Pal, con el
deseo de prestar una atencin mdica de alta calidad al menor costo posible a la
poblacin y cuyos beneficios sern revertidos en obras sociales en la Comunidad
Sucrense [3].

El HCSVP nace como una obra social inicialmente auspiciada por las Damas
Vicencianas, posteriormente, en el ao 2001, pasa a formar parte de la Fundacin
Vicenciana (anexo 2), organizacin de carcter esencialmente benfico asistencial,
cultural y social, que tiene por objeto desarrollar actividades tendientes a asistencia
material y espiritual, de personas de escasos recursos econmicos. Dicha Institucin
presta servicios mdico-asistenciales de hospitalizacin, ciruga y maternidad,
emergencia ambulatoria, laboratorio de bioanlisis, servicios de rayos X, tomografa
helicoidal, resonancia magntica computarizada, banco de sangre, consultas
especializadas, entre otros.

rea de estudio
Representa los aspectos tericos relacionados con el rea donde se desarrolla
el sistema. De acuerdo con las caractersticas del sistema el rea de estudio est
relacionada con la administracin y gestin de empresas.

rea de la investigacin
El rea de investigacin est enmarcada dentro de los sistema de informacin
para la administracin, que ponen a disposicin de los gerentes la informacin exacta
y oportuna que necesitan para la toma de decisiones a tiempo, as como efectuar con
eficacia las funciones de planificacin, control y operaciones de sus actividades
dentro de la organizacin [4,1]. A continuacin se presentan un conjunto de
definiciones fundamentales:

Sistemas de informacin: se puede definir como un conjunto de funciones o


componentes interrelacionados que forman un todo, es decir, obtiene, procesa,
almacena y distribuye informacin (datos manipulados) para apoyar la toma de
decisiones y el control en una organizacin. Igualmente apoya la coordinacin,
anlisis de problemas, visualizacin de aspectos complejos, entre otros.

Un sistema de informacin contiene informacin de sus procesos y su entorno.


Como actividades bsicas producen la informacin que se necesita: entrada,
procesamiento y salida. La retroalimentacin consiste en entradas devueltas para ser
evaluadas y perfeccionadas. Proporciona la informacin necesaria a la organizacin o
empresa, donde y cuando se necesita. Tipos: Transaccionales, de Apoyo a las
Decisiones y Estratgicos [4,1].

Datos: es una representacin simblica (numrica, alfabtica, entre otros),


atributo o caracterstica de una entidad. El dato no tiene valor semntico (sentido) en
s mismo, pero convenientemente tratado (procesado) se puede utilizar en la
realizacin de clculos o toma de decisiones [4].

10

Informacin: es un conjunto organizado de datos, que constituyen un mensaje


sobre un determinado ente o fenmeno. [4]

Base de datos: una base o banco de datos es un conjunto de datos que


pertenecen al mismo contexto almacenados sistemticamente para su posterior uso.
En este sentido, una biblioteca puede considerarse una base de datos compuesta en su
mayora por documentos y textos impresos en papel e indexados para su consulta [4].

DBMS o SGBD: los Sistemas de Gestin de Bases de Datos son un tipo de


software muy especfico, dedicado a servir de interfaz entre la base de datos, el
usuario y las aplicaciones que la utilizan. Se compone de un lenguaje de definicin de
datos, de un lenguaje de manipulacin de datos y de un lenguaje de consulta. En los
textos que tratan este tema, o temas relacionados, se mencionan los trminos SGBD y
DBMS, siendo ambos equivalentes, y acrnimos, respectivamente, de Sistema Gestor
de Bases de Datos y DataBase Management System, su expresin inglesa [4].

SQL: el Lenguaje de Consulta Estructurado (Structured Query Language) es


un lenguaje declarativo de acceso a bases de datos relacionales que permite
especificar diversos tipos de operaciones sobre las mismas. Ana caractersticas del
lgebra y el clculo relacional permitiendo lanzar consultas con el fin de recuperar
informacin de inters de una base de datos, de una forma sencilla. Es un lenguaje de
cuarta generacin (4GL) [4].

Programacin Orientada a Objetos: es una tcnica de programacin cuyo


soporte fundamental es el objeto. Un objeto es una extensin de un tipo abstracto de

11

datos, concepto ampliamente utilizado desde la dcada de los setenta. Un tipo


abstracto de datos es un tipo definido por el usuario, que encapsula un conjunto de
datos y operaciones sobre estos datos [4].

Lenguajes de Programacin Orientada a Objetos: son lenguajes de


programacin que usan la tcnica de programacin orientada a objetos para el
desarrollo de segmentos completos de cdigo [4].

Objeto: es una cosa, generalmente extrada del vocabulario del espacio del
problema o del espacio de la solucin. Todo objeto tiene un nombre (se le puede
identificar), un estado (generalmente datos asociados a l) y un comportamiento (se le
pueden hacer cosas a objetos y l puede hacer cosas a otros objetos). Un objeto de la
clase Coche puede ser un Ford Mustang [5].

Clase: es una descripcin de un conjunto de objetos similares. Por ejemplo la


clase Coche. Una clase contiene los atributos y las operaciones sobre los atributos que
hacen que una clase tenga la entidad que se desea. En la Figura 1 se representa
grficamente una clase como un rectngulo que incluye su nombre, sus atributos y
sus operaciones o mtodos [5].
Coche
-Color
-Cilindrada
-NumeroRuedas
-NumeroPuertas
+Encender()
+Detener()
+Acelerar()
+Frenar()

Figura 1. Ejemplo de representacin grfica de una clase.

12

Atributo: es una caracterstica concreta de una clase. Por ejemplo, los atributos
de

la

clase

Coche

pueden

ser

el

Color,

Cilindrada,

NumeroRuedas,

NumeroDePuertas, entre otros. [5]


Mtodo: es una operacin concreta de una determinada clase. Por ejemplo de
la clase Coches podramos tener un mtodo Encender(), Detener(), Acelerar(),
Frenar(), entre otros [5].

Instancia: es una manifestacin concreta de una clase (un objeto con valores
concretos). Tambin se le puede llamar ocurrencia. Por ejemplo una instancia de la
clase Coche puede ser; un Ford Mustang, de color Gris con 3 puertas [5].

Interfaz: es una coleccin de operaciones que especifican un servicio de una


determinada clase o componente. Una interfaz describe el comportamiento visible
externamente de ese elemento, puede mostrar el comportamiento completo o slo una
parte del mismo. Una interfaz describe un conjunto de especificaciones de
operaciones (o sea su firma) pero nunca su implementacin. Se representa con un
crculo conectado a la clase o componente que la implementa [5].

Colaboracin: define una interaccin y es una sociedad de roles y otros


elementos que colaboran para proporcionar un comportamiento cooperativo mayor
que la suma de los comportamientos de sus elementos. Las colaboraciones tienen una
dimensin tanto estructural como de comportamiento. Una misma clase puede
participar en diferentes colaboraciones. Las colaboraciones representan la
implementacin de patrones que forman un sistema. Se representan mediante una
elipse con borde discontnuo [5].

13

Herencia: es un mecanismo mediante el cual se puede crear una nueva clase


partiendo de una existente, se dice entonces que la nueva clase hereda las
caractersticas de la clase existente aunque se le puede aadir ms capacidades
(aadiendo datos o capacidades) o modificar las que tiene. Se puede decir que Coche
es una especializacin de la clase VehculoAutomotor, o que VehculoAutomotor es
una generalizacin de las clases Coche y Moto [5].

La Figura 2 representa la

grficamente la herencia.

Abstraccin: la abstraccin (del latn abstrahere, "separar") es, en filosofa,


una operacin mental por la que una determinada propiedad de un objeto se aisla
conceptualmente, a efectos de reflexionar sobre ella sin tomar en consideracin otros
rasgos de aquel que momentneamente se desea ignorar [4].
VehiculoAutomotor
-Cilindrada
+Encender()
+Detener()
+Acelerar()
+Frenar()

Coche

Moto

-Color
-Cilindrada
-NumeroRuedas
-NumeroPuertas
+Encender()
+Detener()
+Acelerar()
+Frenar()

-Cilindrada
-Color
-NumeroRuedas
+Encender()
+Detener()
+Acelerar()
+Frenar()

Figura 2. Ejemplo de representacin grfica de herencia.

Abstraccin de datos: aplicada a la programacin orientada a objetos, la


abstraccin consiste en agrupar una propiedad(es) o mtodo(s) de un conjunto de
objetos y colocarla como un objeto separado que debe ser implementado por los

14

dems objetos, facilitando la implementacin y la lectura de los diagramas y


ayudando a conceptualizar el comportamiento de los mismos [4].

Polimorfismo: en programacin orientada a objetos se denomina polimorfismo


a la capacidad que tienen objetos de diferentes clases de responder al mismo mensaje.
Esto significa que puede haber muchos mensajes con el mismo nombre, en diferentes
clases. Cada clase responde al mensaje con su cdigo propio (o mtodo) [4].

Encapsulamiento: es una caracterstica de la programacin orientada a


objetos. El encapsulamiento consiste en ocultar los detalles de la implementacin de
un objeto, a la vez que se provee una interfaz pblica por medio de sus mtodos
permitidos. Tambin se define como la propiedad de los objetos de permitir acceso a
su estado solamente a travs de su interfaz o de relaciones preestablecidas con otros
objetos. [5]

Lenguaje Unificado de Modelado (UML): es un lenguaje que sirve para


escribir los planos del software, puede utilizarse para visualizar, especificar, construir
y documentar todos los artefactos que componen un sistema con gran cantidad de
software. UML puede usarse para modelar desde sistemas de informacin hasta
aplicaciones distribuidas basadas en web, pasando por sistemas empotrados de tiempo
real, independientemente del proceso. UML es un lenguaje que proporciona un
vocabulario y las reglas para utilizarlo, adems es un lenguaje de modelado lo que
significa que el vocabulario y las reglas se utilizan para la representacin conceptual
y fsica del sistema [4].

15

Caso de uso: es una tcnica para la captura de requisitos potenciales de un


nuevo sistema o una actualizacin software. Cada caso de uso proporciona uno o ms
escenarios que indican cmo debera interactuar el sistema con el usuario o con otro
sistema para conseguir un objetivo especfico. Normalmente, en los casos de usos se
evita el empleo de jergas tcnicas, prefiriendo en su lugar un lenguaje ms cercano al
usuario final. En ocasiones, se utiliza a usuarios sin experiencia junto a los analistas
para el desarrollo de casos de uso [4].
Diagrama de casos de uso: muestran un conjunto de casos de uso y actores
(tipo especial de clase) y sus relaciones. Cubren la vista esttica de los casos de uso y
son especialmente importantes para el modelado y organizacin del comportamiento
[5]. La Figura 3 muestra la composicin bsica de un diagrama de casos de uso.

Sistema
CasoUso1

CasoUso2

extends
Actor1

Actor2

CasoUso3

Figura 3. Ejemplo de representacin grfica de un diagrama de casos de uso.

Diagrama de clases: muestran un conjunto de clases, interfaces y


colaboraciones, as como sus relaciones. Estos diagramas son los ms comunes
en el modelado desistemas orientados a objetos y cubren la vista de diseo esttica
o la vista de procesos esttica (s incluyen clases activas) [5]. La Figura 4 representa
un diagrama de clases.

16

Clase1

Clase3

-atributo1
-atributo2
-atributo3
+operacin1()
+operacin2()
+operacin3()

-atributo1
-atributo2
-atributo3
-atributo4
+operacin1()
+operacin2()

Interfaz1

Clase2
-atributo1
-atributo2
-atributo3
+operacin1()
+operacin2()
+operacin3()

Figura 4. Ejemplo de representacin grfica de un diagrama de clases.

Diagrama de objetos: muestra un conjunto de objetos y sus relaciones, son


como fotos instantneas de los diagramas de clases y cubren la vista de diseo
esttica o la vista de procesos esttica desde la perspectiva de casos reales o
prototipos [5].

Diagrama de secuencia: es uno de los diagramas ms efectivos para modelar


interaccin entre objetos en un sistema. Un diagrama de secuencia muestra la
interaccin de un conjunto de objetos en una aplicacin a travs del tiempo y se
modela para cada caso de uso [4].

Diagrama de despliegue: representa la configuracin de los nodos de


procesamiento en tiempo de ejecucin y los componentes que residen en ellos.
Muestran la vista de despliegue esttica de una arquitectura y se relacionan con los
componentes ya que, por lo general, los nodos contienen uno o ms componentes [4].

17

Diagrama de componentes: muestran la organizacin y las dependencias entre


un conjunto de componentes. Cubren la vista de la implementacin esttica y se
relacionan con los diagramas de clases ya que un componente suele tener una o ms
clases, interfaces o colaboraciones [4].

CASE: las herramientas CASE (Computer Aided Software Engineering,


Ingeniera de Software Asistida por Ordenador) son diversas aplicaciones
informticas destinadas a aumentar la productividad en el desarrollo de software
reduciendo el coste de las mismas en trminos de tiempo y dinero. Estas herramientas
ayudan en todos los aspectos del ciclo de vida de desarrollo del software en tareas
como el proceso de realizar un diseo del proyecto, clculo de costes,
implementacin de parte del cdigo automticamente con el diseo dado,
compilacin automtica, documentacin o deteccin de errores, entre otras [4].

IDE: siglas en ingles de Integrated Development Environment, es un entorno


de programacin que ha sido empaquetado como un programa de aplicacin, es decir,
consiste en un editor de cdigo, un compilador, un depurador y un constructor de
interfaz grfica de usuario. Los IDEs pueden ser aplicaciones por si solas o pueden
ser parte de aplicaciones existentes. El leguaje Visual Basic por ejemplo puede ser
usado dentro de las aplicaciones de Microsoft Office, lo que hace posible escribir
sentencias Visual Basic en forma de macros para Word [4].
Visual Basic .NET: es un IDE desarrollado por Microsoft a partir del ao
2002. Visual Studio .NET soporta los nuevos lenguajes .NET: C#, Visual Basic .NET
y Managed C++, adems de C++. Visual Studio .NET puede utilizarse para construir
aplicaciones dirigidas a Windows (utilizando Windows Forms), Web (usando

18

ASP.NET y servicios web) y dispositivos porttiles (utilizando .NET Compact


Framework) [4].

Refactorizacin: en ingeniera del software, el trmino refactorizacin se usa a


menudo para describir la modificacin del cdigo fuente sin cambiar su
comportamiento, lo que se conoce informalmente por limpiar el cdigo. La
refactorizacin se realiza como parte del proceso de desarrollo: los desarrolladores
alternan la insercin de nuevas funcionalidades con la refactorizacin del cdigo para
mejorar su consistencia interna y su claridad [4].

Versin (desarrollo basado en versiones): en software, una versin es un


nmero que indica el nivel de desarrollo de un programa. Es habitual que una
aplicacin sufra modificaciones, mejoras o correcciones. El nmero de versin suele
indicar el avance de los cambios. Suelen ser nmeros correlativos, y frecuentemente
son dos cifras separadas por un punto. Por ejemplo, el paso de la versin 2 a la 3 de
una aplicacin suele conllevar cambios significativos, mientras que el paso de la 3.0 a
la 3.1 indica cambios de menor importancia; el siguiente grupo de mejoras fuertes
llevara a la versin 4.0. Tambin se utilizan tres cifras en vez de dos, como sigue:
1.1.56. Algunos fabricantes usan el nmero de ao de lanzamiento (por ejemplo:
Microsoft Office 97) en vez de nmeros consecutivos [4].

Patrn de diseo: es una solucin a un problema de diseo no trivial que es


efectiva (utilizada satisfactoriamente en ocasiones anteriores) y reusable (se puede
aplicar a diferentes problemas de diseo en distintas circunstancias) [4].

19

Patrn de diseo ECC: Engine-Collection-Class (Motor-Coleccin-Clase) es


un modelo flexible que permite crear componentes empresariales reutilizables para
aplicaciones distribuidas/de niveles que funcionen tanto con los tradicionales clientes
"ricos" como con los, cada vez ms populares, clientes que utilizan secuencias de
comandos. Gracias a sus interfaces simplificadas y a un estilo de codificacin
intuitivo, el patrn de diseo de ECC reduce el tiempo de desarrollo y permite que
varios desarrolladores distintos realicen una programacin estable [6].

MARCO METODOLGICO

Metodologa de la investigacin
Esta investigacin se clasifica como descriptiva, porque aporta una solucin
palpable a la problemtica en el HCSVP, basndose en la descripcin, registro,
anlisis e interpretacin de los datos y la composicin de los procesos de nmina,
facturacin y honorarios mdicos de los departamentos de Egresos y Facturacin y,
Admisin y Presupuestos del HCSVP.

Segn su funcin la investigacin es de campo, la cual "estudia los fenmenos


en su ambiente natural" [7], debido a que la recoleccin de la informacin se realiz
en el lugar donde se desarrollan los procesos estudiados.

El nivel de la investigacin est enfocado, segn el nivel de conocimientos en


descriptiva, que se encarga de caracterizar los hechos a partir de un criterio definido
previamente.

20

En esta investigacin se presenta una descripcin completa de la situacin


actual en los procesos de nmina, facturacin y honorarios mdicos en los
departamentos

de

Egresos

Facturacin,

Admisin

presupuestos,

Administracin, respectivamente.

Instrumentos de recoleccin
El levantamiento de informacin se realiz utilizando los siguientes
instrumentos de recoleccin:
Revisin de material bibliogrfico: la obtencin de informacin tcnica sobre
los procesos de datos y tecnologas a implantar se realiz a travs de bibliografas
especializadas; libros de texto, publicaciones certificadas y/o cualquier otro tipo de
material de fuentes comprobables.
Entrevistas no estructuradas: las entrevistas no estructuradas peridicas a los
usuarios y directivos del sistema arrojaron informacin relevante para el modelado
del sistema.

Observacin directa: la observacin directa a los empleados y directivos


permiti verificar, comparar e interpretar como se realizan los procesos manuales y
automatizados implementados por el sistema existente para proponer mejoras
significativas en los procesos de la organizacin.

Metodologa aplicada
La metodologa aplicada se bas en la metodologa XP (Extreme

21

Programming, Programacin Extrema), pero es importante resaltar que debido a la


caractersticas del proyecto y a la dinmica del trabajo, no todas las prcticas
recomendadas por XP fueron aplicables, entre las cuales destacan la programacin en
parejas y el usuario final inmerso en todo el desarrollo o cliente in situ, la segunda se
sustituy por una fase de captura de requerimientos, propuesta por la Ingeniera del
Software, en la cual se capturaron las especificaciones necesarias para el desarrollo
del sistema. Para subsanar la falta de documentacin de diseo se agregaron
artefactos como diagramas de casos de uso, descripciones de casos de uso, diagramas
de secuencia, entre otros no mencionados por XP, para proporcionar la
documentacin solicitada por la Institucin, dejando constancia del diseo y
facilitando posteriores refactorizaciones e implementaciones.
XP Es una metodologa iterativa e incremental que se basa en la adaptacin
del modelo a medida que se desarrolla, siguiendo las pautas de lo que se conoce como
diseo evolutivo. Esta metodologa dirige los proyectos hacia la obtencin de
soluciones simples y rpidas para cubrir las necesidades de los clientes [8,9]. XP
propone una serie de prcticas recomendadas como son: el proceso de planificacin
("Planning game"), pequeas liberaciones, uso de metforas del sistema, diseo
simple, refactorizacin continua, programacin en parejas, el cliente in situ, 40 horas
de trabajo a la semana, estndares de codificacin, entre otros.
Las fases aplicadas en el desarrollo del trabajo son las siguientes:
Captura de requerimientos: durante esta fase se model el negocio, se analiz
el ambiente y el propsito fundamental

del

mismo, se capturaron los

requerimientos
iniciales y se crearon los diagramas funcionales pertinentes al sistema actual.

22

Planeacin y estimacin del esfuerzo: consisti en la planeacin del diseo del


sistema; la determinacin de la arquitectura y componentes necesarios para implantar
una solucin a la problemtica descubierta en la fase de captura de requerimientos.
En sta se detallaron los casos de uso generales del sistema a implantar, donde se
describen las reas y procesos que se abarcaron en el diseo y construccin.

Diseo: en esta fase se analizaron y disearon los componentes del sistema


propuesto, gracias a los diagramas funcionales, estructurales y de implementacin
iniciales generados, los cuales describen la solucin informtica usando la
arquitectura definida en la fase de planeacin y estimacin del esfuerzo.

Construccin: en esta fase fue donde se codificaron, probaron y se adaptaron por


medio de ciclos iterativos los componentes del sistema.

La construccin de cada componente consisti en ciclos de desarrollo ms


cortos, que es una de las ideas centrales de la XP [9], compuestos por cuatro (4) fases
iterativas; exploracin, planificacin, iteraciones y produccin [8, 9].

Exploracin: consisti en la captura de las historias de los usuarios que


proporcionan la informacin de partida para el diseo de un componente en
especfico. El desarrollo de todo componente o subsistema comienza con las historias
de los usuarios acerca de los detalles inherentes a los procesos que abarcar dicho
componente, como son las entradas, transformacin e interpretacin de los datos y las
salidas de stos.

23

Planificacin: abarca todas las consideraciones de diseo que se deben


proveer para desarrollar el componente en estudio, identificacin de los
procesos, actores, tipos de datos, entre otros, que influirn en un diseo
efectivo para resolver la problemtica.

Iteraciones: en esta fase se dise, codific y prob cada componente del


sistema. Abarca todas las modificaciones necesarias en el desarrollo para
incluir nuevas funcionalidades, requerimientos y refactorizaciones en el
continuo proceso de reescritura del cdigo de forma que en cada paso se gane
simplicidad, calidad y eficacia, sin restar funcionalidad a los componentes y
probando, casi al instante, la unicidad de los mdulos.

Produccin: consisti en la liberacin de las versiones definitivas de los


componentes desarrollados, los cuales cumplieron las pruebas de aceptacin
del cliente.

Implantacin: abarca la implementacin de los componentes entregados en


versiones definitivas para su puesta en los diferentes ambientes de produccin dentro
de la organizacin. En el caso de cada componente en especfico, representa su
instalacin y puesta en marcha, conjuntamente con el adiestramiento en el uso del
mismo por parte del personal de la Institucin.

24

CAPTULO III: DESARROLLO

En este captulo se presentan los diagramas de casos de uso, clases, secuencia


y despliegue que fueron elaborados como artefactos finales, as como los detalles de
la planificacin, el anlisis, y la construccin en el desarrollo del sistema. Cada
diagrama se elabor a partir de los requerimientos iniciales capturados y
evolucionaron en complejidad y forma para adaptarse a las necesidades que se
presentaron en el desarrollo del sistema. Para la elaboracin de los artefactos de
diseo (diagramas) y su descripcin se hizo uso del UML, utilizando inicialmente
como herramienta de diseo Microsoft Visio Professional 2003.

Consecuentemente con la metodologa XP, se ejecutaron cuatro fases para el


desarrollo, las cuales se describen a continuacin:

CAPTURA DE REQUERIMIENTOS
En esta fase se realiz el levantamiento de informacin inicial para el anlisis
de requerimientos de los procesos administrativos del HCSVP, analizando la
estructura departamental, las operaciones y funciones del personal y el ambiente del
negocio. El uso de las tcnicas de entrevistas no estructuras y observacin directa
para la recopilacin de informacin del sistema en estudio permiti encontrar las
siguientes fallas:

No existen aplicaciones para capturar la informacin de la facturacin de los


departamentos de la Institucin.

Presenta registros duplicados, asignaciones o deducciones duplicadas en las nminas.

25

Errores en la numeracin en los reportes impresos de pago.


Falta de control en la existencia de materiales mdicos-quirrgicos y medicamentos.
Asignaciones errneas de cargos por consultas, tratamientos e intervenciones mdicas
a los pacientes.

No genera reportes con informacin detallada y precisa.

Nuevos requerimientos no existentes al momento de la implementacin.

No existen manuales para la realizacin de mantenimiento al sistema.

Falta de integracin entre las aplicaciones existentes.

Formatos de impresin obsoletos o con poca informacin.

Tomando en consideracin las fallas nombradas anteriormente se procedi a


delimitar el alcance y el mbito del nuevo sistema para el HCSVP. El mismo se
adapta nicamente a las reglas y polticas para procesos administrativos del HCSVP y
se alimenta de la informacin registrada en cada uno de los departamentos
administrativos que integran la institucin.

PLANEACIN Y ESTIMACIN DEL ESFUERZO

Como consecuencia del tamao de la organizacin se decidi que la


arquitectura para el nuevo sistema se basar en un ambiente cliente-servidor,
permitiendo la centralizacin y comparticin de la informacin entre todas las
dependencias.

26

Los plazos de entrega de mini-liberaciones (versiones) de software, exigidos


por la metodologa XP para incluir al usuario en el proceso de construccin, se
cumplieron en plazos con un mnimo de 15 das y un mximo de un mes, dando una
holgura de quince (15) das para solventar las dificultades que se presentaron en el
proceso de desarrollo y codificacin.

La Figura 5 muestra el flujo de trabajo (fases) que se llev a cabo en la


construccin de cada subsistema que forma parte de la solucin software para el
HCSVP.
nuevos requerimientos u objetivos

Exploracin

Planificacin
si
Iteracion

no
si

no
Produccin

Cumple con los


requerimientos?

Hay nuevos
requerimientos?

Figura 5. Diagrama de flujo de trabajo del desarrollo de componentes.


DISEO

El Sistema Administrativo para Clnica y Hospital (SACH) diseado para el


HCSVP consta de tres (3) componentes o subsistemas, estos permiten registrar y
controlar los procesos de Nmina, Facturacin y Honorarios Mdicos, los cuales
contienen todas las reglas definidas por la Institucin e interactan entre s con el
objetivo de compartir la informacin necesaria para el desenvolvimiento efectivo de
los procesos administrativo de los departamentos del HCSVP.

27

El subsistema nmina comprende todos los procesos necesarios para el


control de los pago de los empleados, permitiendo un control efectivo en;
asignaciones, deducciones, prstamos, descuentos fijos, descuentos nicos, impuestos
de ley, seguro social, poltica habitacional, entre otros. Adems permite generar
reportes detallados por pantalla e impresos de; estados de cuenta generales, estados de
cuenta de empleados, recibos de pago, entre otros.

El subsistema facturacin, est comprendido a su vez por tres (3) subsistemas;


registro de ingresos, presupuestos para hospitalizacin y facturacin para
hospitalizacin. El subsistema de registro de ingresos est ubicado en cada
departamento del HCSVP que perciba ingresos de caja y permiti el llevar un registro
detallado de la facturacin de bienes y servicios prestados por la Institucin por
concepto de estudios en los departamentos de Laboratorio de Bioanlisis, Unidad de
Resonancia Magntica, Unidad de Tomografa Helicoidal, Laboratorio de Rayos X y
Servicios de Atencin de Emergencia, adems permite generar presupuestos para
cada uno de los departamentos mencionados. El subsistema Presupuestos, ubicado en
el Departamento de Admisin y Presupuestos, permite realizar presupuestos para
atenciones

quirrgicas

que

requieren

intervenciones

mdicas

delicadas

hospitalizaciones. El subsistema Facturacin, ubicado en el departamento de Egresos


y Facturacin, registra los gastos generados durante las intervenciones hospitalarias,
normalmente refleja los gastos ingresados por el subsistema Presupuestos
actualizados con los cambios que ocurran en la hospitalizacin por la realizacin de
nuevas intervenciones mdicas, materiales o consumo de medicamentos.

El subsistema honorarios mdicos administra los pagos correspondientes a las


intervenciones quirrgicas realizadas por el personal mdico profesional, permitiendo

28

tener de manera precisa y oportuna los estados de cuenta de pagos de los mdicos
tratantes.

En el diagrama de casos de uso de alto nivel (Figura 6) se describe el sistema


y sus procesos ms importantes (subsistemas). Este diagrama es un artefacto obtenido
despus de mltiples iteraciones realizadas en el curso del proceso de desarrollo.

En base al diagrama de casos de uso de alto nivel y las consideraciones


anteriores se subdividi el sistema en (3) subsistemas; el subsistema Honorarios
Mdicos, el subsistema Nmina y el subsistema Facturacin, conformado este ltimo
por los subsistemas Ingresos, Facturacin para Hospitalizacin y Presupuestos para
Hospitalizacin, separando as algunas funcionalidades de los procesos de facturacin
del HCSVP. La divisin en subsistemas permite ejecutar funcionalidades especficas
en
Sistema administrativo

Procesar Nmina

Empleado

Secretaria de pagos
Registrar Ingreso(s)
de departamento
uses

Secretaria de departamento
o unidad hospitalaria

Secretaria de Presupuestos

Cliente

Gestionar
Presupuesto(s)

Facturar en base a
presupuesto

Persona

extends

Facturar cargos por


Hospitalizacin
Secretaria de egresos y facturacin

Pagar honorario(s)
mdico(s)

Mdico

Administrador

Figura 6. Diagrama de casos de uso general del sistema.

29

Empresa

aplicaciones implementadas fsicamente en diferentes departamentos de la


Institucin, pero que se integran de manera eficiente compartiendo la informacin
necesaria para realizar los procesos administrativos. Tambin permite definir
diferentes mbitos dentro del mismo ambiente de negocio, cada uno con reglas y
polticas diferentes pero orientadas hacia un fin comn.

Facturacin

subsistema
Honorarios mdicos

subsistema
Ingresos

uses
uses

subsistema
Hospitalizacion
uses
subsistema
Nmina
subsistema
Presupuestos

Figura 7. Diagrama de paquetes del sistema.

La Figura 8 describe como se realiz el despliegue de los subsistemas en los


diferentes departamentos del HCSVP.

30

Servidor de datos

Manejador de base de datos

"Base de datos" SACH

Interfaz de conexin

Computadora 2

Computadora 2

Subsistema
Nmina

Computadora
Departamento N que perciben
ingresos

Subsistema
Nmina

Departamento de Egresos y
Facturacin

Subsistema
Ingresos

Computadora
Departamento de Admisin y
Presupuestos

Subsistema
Presupuestos

Computadora
Departamento de Administracin

Subsistema
Honorario Mdicos

Departamento N

Figura 8. Diagrama de despliegue del sistema.

El nodo que contiene toda la informacin de las transacciones de la Institucin


es el Servidor de datos, el cual posee un SGBD relacional Microsoft SQL Server 7,
el cual contiene toda la lgica bsica de la organizacin en sus tablas de datos. El
departamento de Egresos y Facturacin implementa los Subsistemas Nmina y
Facturacin para Hospitalizacin. El departamento de Admisin y Presupuestos
implementa el Subsistema Presupuestos para Hospitalizacin. El Departamento de
Administracin implementa el Subsistema Honorarios Mdicos. El Subsistema
Ingresos puede ser implementado por cualquier departamentos que perciban ingresos
por conceptos o servicios mdicos quirrgicos, hasta el momento los departamentos
de los usan este subsistema son; Unidad de Resonancia Magntica y Unidad de
Tomografa Helicoidal, Laboratorio de Bionlisis y Atencin de Emergencias.

CONSTRUCCIN

Durante esta fase se dise una aplicacin distribuida y de componentes


reutilizables en capas, descrita por Microsoft en [8], para desarrollar un diseo
31

global mediante la implementacin de una arquitectura coherente construida sobre


componentes que contienen la lgica del negocio en diferentes niveles, tal y como se
muestra en la Figura 9. Las aplicaciones estn compuestas por tres niveles lgicos,
los cuales se describen a continuacin:

El nivel de aplicacin: lo constituye el componente ejecutable en el


computador cliente, el cual est compuesto por libreras que le dan toda la
funcionalidad a la interfaz de usuario, por ejemplo, ensamblados del lenguaje Visual
Basic .NET, ensamblados con controles personalizados para la GUI (Graphic User
Interface, Interfaz grfica de usuario), componentes de utilidad para formatos de
fechas y horas especficas, componentes para el registro de sucesos del sistema, entre
otros. El nivel de aplicacin tambin posee los procesos de usuarios, los cuales guan
la interaccin entre el usuario y el subsistema en los procesos predecibles de la
aplicacin. En la Figura 9 es representado por el ensamblado que contiene el nmero
uno (1).

El nivel de la lgica del negocio: est formado por los componentes que
contiene la lgica de las operaciones que se realizan en el subsistema que lo
implementa, por ejemplo, los servicios a aplicacin para manejo de la lgica del
negocio y el administrador de servicios que se encarga de cargar y coordinar los
servicios para que puedan interactuar entre ellos. En la Figura 9 estn representados
los componentes con los nmeros tres (3), cuatro (4) y cinco (5) para los servicios y
el dos (2) para el administrador de servicios de la aplicacin.

El nivel de acceso a datos: o nivel de datos est constituido por los


componentes de datos y el componente de comunicacin con la base de datos o de
conexin.

32

Figura 9. Arquitectura de componentes y servicios asociados.

Los componentes de datos representan entidades de la lgica del negocio y


son los que realmente contienen la informacin de la Institucin. stos se encargan de
sincronizar la informacin procesada por la aplicacin con el almacn de datos (base
de datos), permitiendo recuperar, modificar, guardar y eliminar la informacin en el
sistema. En la Figura 9 estn representados por los componentes que contienen los
nmeros seis (6), siete (7) y ocho (8). El componente con el nmero nueve (9) es el

33

componente de conexin de datos, el cual se encarga de comunicar los componentes


con la base de datos y viceversa.

El diseo de aplicaciones distribuidas se basa en la divisin de la aplicacin en


componentes que ofrecen servicios de presentacin, empresariales y de datos. Estn
organizados en forma de apilamiento para que los componentes que se encuentran por
"encima" de una capa determinada utilicen los servicios proporcionados por sta, y un
componente especfico utilizar la funcionalidad proporcionada por otros de su propia
capa, y otras capas "inferiores", para realizar su trabajo. Una de las ventajas de este
diseo es la posibilidad de reutilizar los componentes en diferentes interfaces de
usuarios, como por ejemplo una aplicacin de ventanas o una pgina web. Tambin
permite realizar modificaciones en los diferentes niveles, principalmente los que
contienen la lgica del negocio, sin necesidad de modificar los otros niveles,
proporcionando una forma de realizar mantenimientos y agregar nuevas
funcionalidades con un mnimo esfuerzo.

Las reglas empresariales ms complejas se encuentran en los procesos de


usuarios y servicios, estos guan el flujo de la interaccin del usuario en los procesos
predecibles de la aplicacin. Normalmente los procesos de usuario describen los
casos de uso generales del curso normal de la interaccin del usuario con el sistema y
los servicios le sirven de apoyo, delegndose en stos ltimos la responsabilidad de
guiar los procesos que requieren comunicaciones con los componentes lgicos de
acceso a datos. El desarrollo de los componentes de acceso a datos se realiz
basndose en la implementacin del patrn de diseo ECC. La implementacin del
patrn de diseo ECC consta de un motor (Engine) que controla la creacin de las
clases; una coleccin (Collection), que almacena las clases; y una clase (Class) que
representa una entidad del mundo real. Esta jerarqua de objetos ofrece claridad en la

34

creacin de los objetos adems de una interfaz coherente con la validacin de las
reglas de empresa, recuperacin de datos y la manipulacin de los mismos. Adems,
ofrece una arquitectura de acoplamiento no estricto, en la que el cliente y los
componentes pueden cambiar libremente sin afectarse entre s.

Desde la perspectiva de un diseo lgico, la clase es realmente la razn clave


de que existan el motor y la coleccin. La clase se relaciona con una entidad del
mundo real y sus atributos. El motor y la coleccin ofrecen los medios para
administrar y extender su comportamiento. Para que sea posible modelar una entidad,
es necesario crear estos tres elementos. ECC ofrece un diseo de tres niveles para los
objetos empresariales, dividiendo la creacin, el almacenamiento y los atributos de
una entidad. Este modelo implementa el patrn de diseo de Object Factory (fbrica
de objetos) y el patrn Opaque Object Adapter (adaptador de objeto opaco). En la
Figura 11 puede apreciarse la relacin entre el motor, la coleccin y la clase.

35

Figura 10. Diagrama de interaccin entre niveles de aplicacin.

Es importante mencionar que el patrn de diseo ECC utilizado es un


refactorizacin del patrn original desarrollado por Microsoft para las aplicaciones
distribuidas en el lenguaje de programacin Visual Basic 6, con importantes
modificaciones para la portabilidad del mismo al lenguaje de programacin Visual

Figura 11. Diagrama de relaciones del patrn de diseo ECC.

36

Basic.NET. La base de la implementacin mostrada del patrn de diseo ECC


proviene de Danijel Arsenovski en [11], con algunas modificaciones no publicadas
del autor del presente trabajo.

Una implementacin efectiva del patrn ECC surge del diseo de la base de
datos (origen de datos), que a su vez surge de las necesidades empresariales. En
general, un esquema de origen de datos imita la relacin y el almacenamiento de las
entidades del mundo real y casi todo el trabajo consiste en desarrollar un origen de
datos o Modelo Entidad-Relacin (MER). Gracias a este diseo, las clases mapean a
las tablas de la base de datos, asignan los procedimientos almacenados u otro tipo de
almacenamiento estructurado para establecer un punto de partida que les permita
heredar las reglas empresariales bsicas. En la Figura 12 se muestran las entidades
iniciales que se definieron para el modelado del almacn de datos.

PRESUPUESTO DEPARTAMENTO

CLIENTE

EMPRESA

EMPLEADO

MEDICO

DIAGNOSTICO

CONCEPTO DE FACTURA
HONORARIO MEDICO
FORMA DE PAGO

ACTO MEDICO

EMPLEADO

PERIODO DE PAGO DE NOMINA

INGRESO

NOMINA

MEDICAMENTO

CONCEPTO DE NOMINA
INTERVENCION MEDICA

FACTURA DE HOSPITALIZACION

PACIENTE

PRESUPUESTO DE HOSPITALIZACION

Figura 12. Diagrama conceptual de clases.

Debido a que algunas de las entidades son necesarias en ms de un


subsistemas estas son reutilizadas, como por ejemplo; Departamento y FormaPago
que fueron creadas por el Subsistema Nmina y son reutilizadas por el Subsistema

37

Ingresos. As mismo existen otras entidades como Empresa, Persona, Banco,


Medicamento que tambin fueron reutilizadas.

Todas las entidades (tablas) del esquema de datos fueron enriquecidas con
campos que registran informacin adicional sin alterar el propsito de la entidad del
mundo real que representan, por ejemplo; los campos DeleteFlag, CreateDateTime y
ModifyDateTime.

DeleteFlag: marca un registro para su borrado lgico, permitiendo recuperar


informacin borrada errneamente y se puede convertir en borrado fsico mediante un
proceso externo: manual o automatizado.

CreateDateTime: almacena la fecha y hora en la que se cre el registro para


propsitos de auditoria.

ModifyDateTime: almacena la fecha y hora en la que se actualiz por ltima


vez el registro para propsitos de auditora. La Figura 13 muestra una tabla del
almacn de datos enriquecida con campos extras para la informacin adicional y de
auditora.

TipoDato
PK,I1

TipoDatoID
Descripcion
DeleteFlag
CreateDateTime
ModifyDateTime

Figura 13. Ejemplo de tabla de la base de datos.

38

Toda la lgica de los procesos de consulta SQL para seleccin, insercin,


actualizacin y eliminacin de los registros en la base de datos fueron codificados en
forma de procedimientos almacenados, los cuales son llamados por los componentes.
La notacin para los nombres de los procedimientos almacenados esta estructurada de
la siguiente forma, por ejemplo, spDTipoDato representa el procedimiento
almacenado borrar para los registros de la tabla TipoDato, en donde las dos primeras
letras son las siglas de Stored Procedure o procedimiento almacenado, la letra
siguiente indica la accin que ejecuta el procedimiento en este caso Delete o borrar
y el resto es el nombre de la entidad que afecta, TipoDato.

Convenciones de nomenclatura

Para la codificacin de los componentes se utilizaron las convenciones de


nomenclatura para la codificacin de paquetes de software proporcionadas y
recomendadas por Microsoft, que facilitan el entendimiento y dan uniformidad al
cdigo. El empleo de maysculas y minsculas Pascal donde la primera letra del
identificador y la primera letra de las siguientes palabras concatenadas estn en
maysculas. El estilo de maysculas y minsculas Pascal se puede utilizar en
identificadores de tres o ms caracteres. Por ejemplo: BackColor. Esta convencin
fue utilizada para los nombres de los espacios de nombres (frameworks),
componentes, estructuras, clases, tipos definidos, colecciones, procedimientos y
funciones. Y el uso de maysculas y minsculas Camel donde la primera letra del
identificador est en minscula y la primera letra de las siguientes palabras
concatenadas en mayscula. Por ejemplo: backColor. Esta convencin fue utilizada
para los parmetros pasados en funciones y procedimientos.

39

La documentacin de los componentes se realiz utilizando la herramienta de


generacin de documentacin de libreras de clases NDoc 1.3.1 (liberado bajo
licencia GNU/GPL), la cual permite documentar dentro del cdigo fuente utilizando
el metalenguaje XML.

Interfaz grfica de usuario

La GUI es el conjunto de elementos grficos (ventanas, mens, botones, entre


otros) que permiten la interaccin entre el usuario y la aplicacin informtica. La
interfaz est compuesta por cinco (5) zonas que contienen toda la funcionalidad de la
aplicacin y que le suministran al usuario todos los elementos necesarios para
interactuar con el sistema, pudiendo ver en todo momento que proceso est realizando
el sistema, en donde se encuentra el usuario, o lo que est editando. La Figura 14
muestra las zonas bsicas de las ventanas principales de las aplicaciones.

A continuacin se describen los propsitos y caractersticas de las zonas que


componen la GUI:

Zona de ttulos de la ventana de la aplicacin (Barra de ttulos): muestra el


ttulo de la ventana (el ttulo del documento y el nombre de la aplicacin) y contiene
los botones de manejo de la ventana, como minimizar, maximizar/restaurar, y cerrar.

Zona de mens de la aplicacin: esta zona es ocupada por los mens de la


aplicacin, los cuales contienen los accesos directos a los principales procesos.
Consta de los siguientes mens; Archivo, Acciones, Reportes, Utilidades y Ayuda
(Figura 14).

40

Archivo: contiene las opciones iniciar sesin, terminar sesin, as como abrir,
guardar y cerrar (en el caso que el mbito de la aplicacin lo requiera).

Acciones: invoca las posibles acciones que puede realizar el usuario en el


subsistema, es decir, contiene accesos directos a los procesos de usuario permitidos
por la aplicacin.

Reportes: contempla todos los reportes que genera el sistema, bien sea por
pantalla e impresos.

Utilidades: este men representa todas las opciones utilitarias ofrecidas por el
sistema y que no pertenecen directamente a los procesos de usuario, es decir,
exploracin de: empleados, departamentos, formas de pago, frmulas de clculo de
nmina, entre otros.

Ayuda: contiene los accesos para las opciones de Ayuda, informacin en


lnea, informacin de la aplicacin y crditos del autor.

41

Zona de mens de la aplicacin

Zona de ttulos de la ventana de la aplicacin

Zona de ubicacin e informacin de la aplicacin

Zona de contenido e interaccin con el usuario


Zona de notificacin o barra de estado

Figura 14. Zonas de la GUI.

Zona de ubicacin e informacin de la aplicacin: esta zona contiene el


nombre de la aplicacin o subsistema y la informacin de estado o de ubicacin de la
aplicacin.

Zona principal de contenido e interaccin con el usuario: en esta zona se


encuentran los controles principales para la interaccin del usuario con la aplicacin.

42

Todos los procesos efectivos de la aplicacin y con los cuales el usuario puede
extraer o ingresar informacin se encuentran normalmente en esta zona.

Zona de notificacin (barra de estado): muestra informacin adicional sobre la


aplicacin o los procesos que se estn ejecutando en primer y segundo plano. En esta
zona se notifica constantemente al usuario sobre los procesos que realiza el sistema.

El diseo de la GUI se realiz basndose en las recomendaciones de diseo


para la productividad, funcionalidad y experiencia del usuario de [12, 13, 14, 15, 16,
17], adems de las convenciones y estndares de Microsoft Visual Studio .NET para
aplicaciones para Microsoft Windows.

Subsistema Nmina
Exploracin: en esta fase se defini el Subsistema Nmina, el cual comprende todos
los procesos necesarios para el control de los pago de los empleados, permitiendo un
control sobre; asignaciones, deducciones, prstamos, descuentos fijos, descuentos
nicos, impuestos de ley, seguro social, poltica habitacional, entre otros. Adems,
permite generar reportes detallados por pantalla e impresos de estados de cuenta
generales, estados de cuenta de empleados y recibos de pago. En cada nuevo perodo
de pago de nmina debe generar automticamente todas las asignaciones y
deducciones fijas, descuentos especiales, de ley y los descuentos por prstamos.

Este subsistema administra las nminas de pago de empleados, pudiendo en


cualquier momento agregar o eliminar integrantes en las mismas. Los conceptos de
nmina se dividen en tres (3) categoras o tipos, las asignaciones que representan los
pagos, las deducciones que representan los descuentos y los prstamos que son un
tipo especial de descuento que se realiza en varias deducciones fijas en perodos de
43

tiempo continuos hasta alcanzar un monto determinado. Las frecuencias de clculo


para las nminas son mensuales, quincenales y ocasionales, siendo esta ltima
obligatoria para los pooles de pago donde los perodos de pago son variables.

En base a esta informacin se crearon los diagramas de casos de uso para el


Subsistema Nmina, punto de referencia para construir los diagramas de secuencia y
los procesos de usuario de la aplicacin (apndice B).
Planificacin: en esta fase se disearon los diagramas de estructura esttica de los
componentes del mbito del subsistema en estudio, el cual refleja las relaciones entre
sus principales entidades (apndice B).

La Figura 15 muestra la interfaz de usuario de la ventana principal de la


aplicacin para este subsistema.

Los componentes que son utilizados en varios subsistemas fueron organizados


lgicamente en el espacio de nombre ModeloComponentes.Compartidos y los
propios

del

Subsistema

Nmina

en

el

espacio

de

nombre

ModeloComponentes.Nomina (apndice A2).

Iteraciones: se desarroll el software implementando las definiciones de clases


basndose en los diagramas de clase de estructura esttica de los componentes que
conforman la lgica del nivel de acceso a datos del Subsistema Nmina (apndice B).
Por cada entidad reflejada en el almacn de datos se codific un componente
reutilizable de software para el nivel de acceso de datos de la aplicacin, cada uno
implementando el patrn de diseo ECC.

44

En el proceso de diseo y codificacin de los componentes del sistema se


establecieron diferentes espacios de nombres que definen la estructura de los
frameworks (marcos de trabajo), facilitando el ordenamiento de los componentes del
sistema segn su funcionalidad (apndice A-2).

Produccin: la produccin de la aplicacin se realiz liberando versiones definitivas


de la aplicacin para el subsistema en desarrollo, utilizando la numeracin de
versiones de tres cifras comenzando por la versin 0.1.1 y aumentando
progresivamente segn en nmero de refactorizaciones aplicadas, hasta la versin
1.4.32 que actualmente cumple con todos los requerimientos evaluados. El sistema de
numeracin utilizado es el de tres (3) cifras, donde la primera representa el nmero de
la liberacin definitiva, la segunda el nmero de la refactorizacin realizada en base a
la liberacin y la ltima el nmero de la construccin del componente o aplicacin.
Estas cifras son aumentadas paulatinamente en base a la liberacin, refactorizacin y
construccin, y slo son reiniciadas al momento de que la cifra anterior aumente en
uno.

45

Figura 15. Interfaz de usuario para el subsistema nmina.

Subsistema Facturacin
Comprende todas las operaciones relacionadas con la facturacin, la cual est
distribuida en diferentes departamentos que prestan servicios hospitalarios dentro de
la Institucin, por ejemplo, Laboratorio de Bioanlisis, Unidad de Resonancia
Magntica, Unidad de Tomografa Helicoidal, Laboratorio de Rayos X y Servicio de
Emergencia, adems de departamentos ms especficos como son Admisin y
Presupuestos, y Egresos y Facturacin.

En base a lo expuesto se dividi en tres subsistemas; Ingresos, Presupuestos


para Hospitalizacin y Facturacin para Hospitalizacin, los cuales se explican a
continuacin.

46

Subsistema Ingresos
Exploracin: este subsistema registra los ingresos por concepto de bienes y servicios
percibidos por los diferentes departamentos de la Institucin. Se registra la
informacin del cliente (persona o empresa), del paciente atendido y los detalles del
recibo como son; el concepto de facturacin, la cantidad, el precio unitario y el precio
total, adems de la informacin referente al pago. Los pagos se realizan en efectivo,
tarjeta de dbito, tarjeta de crdito, depsito bancario y convenio de pago, tambin es
posible agregar una nueva forma de pago. El pago tambin se puede hacer
combinando efectivo con cualquier otra de las formas de pago nombradas, definiendo
con exactitud las cantidades para cada una. Tambin permite realizar presupuestos
por conceptos relacionados con un departamento en especfico. Adems el sistema
permite generar reportes detallados por pantalla e impresos de relaciones de ingresos,
recibos de pago y presupuestos.

En base a la descripcin del subsistema se definieron los procesos que debe


abarcar y se construyeron los artefactos de diseo, especialmente los diagramas de
casos de uso y sus descripciones, y los diagramas de secuencias correspondientes
(apndice C).

La interfaz de usuario para la aplicacin de Ingresos se muestra en la Figura


16.
Planificacin: esta fase consisti en el diseo de los diagramas de clases de mbito
del subsistema para definir las clases que intervienen en los procesos y se reutilizaron
algunos de los componentes desarrollados para el subsistema anterior, por ejemplo,
persona, usuario, sesin, departamento, entre otros. Loscomponentes que son
utilizados en varios subsistemas fueron organizados lgicamente en el espacio de
47

nombre ModeloComponentes.Compartidos y los propios del Subsistema Ingresos en


el espacio de nombre ModeloComponentes.Facturacion (apndice A2).

Iteraciones: en esta fase se desarrollaron los componentes del Subsistema Ingresos


basndose en los diagramas de estructura estticos de cada componente e
implementando el patrn de diseo ECC (apndice C).

Figura 16. Interfaz de usuario de ingresos para el subsistema facturacin.


Produccin: la versin definitiva liberada para este subsistema es la 1.0.4.

Subsistema Presupuestos para Hospitalizacin


Exploracin: el Subsistema Presupuestos para Hospitalizacin registra los
presupuestos emitidos por el departamento Admisin y Presupuestos. Los
48

presupuestos reflejan los costos aproximados de las intervenciones mdicoquirrgicas a realizarse en la Institucin. Los detalles son; intervenciones mdicas,
conceptos de facturacin, medicamentos, mdicos responsables, el diagnstico del
paciente y el cliente que solicita el presupuesto. El sistema proporciona plantillas
definidas por el usuario para agilizar el proceso de creacin de un nuevo presupuesto
en base a unos conceptos iniciales. La aplicacin permite recuperar presupuestos
emitidos con anterioridad y modificarlos para agregar o eliminar conceptos de
facturacin, adems genera presupuestos por pantalla e impresos.

Planificacin: en esta fase se disearon los diagramas de estructura esttica de los


componentes del mbito del subsistema en estudio, el cual refleja las relaciones entre
sus principales entidades (apndice D).

Los componentes que son utilizados en varios subsistemas fueron organizados


lgicamente en el espacio de nombre ModeloComponentes.Compartidos y los
propios

del

Subsistema

Presupuestos

en

el

espacio

de

nombre

ModeloComponentes.Facturacion (apndice A2).

La interfaz de usuario para la aplicacin de Presupuestos para Hospitalizacin


se muestra en la Figura 17.
Iteraciones: en esta fase se desarrollaron los componentes de este Subsistema
basndose en los diagramas de estructura estticos de cada componente
implementando el patrn de diseo ECC. Adems se crearon los servicios de la
aplicacin y los procesos de usuario que guan la interaccin del usuario con los
procesos normales de la aplicacin (apndice D).

49

Produccin: utilizando la numeracin de versiones de tres cifras la primera


liberacin fue la versin 0.1.1 y se aument progresivamente segn el nmero de
refactorizaciones aplicadas, hasta la versin 1.0.2 que actualmente cumple con todos
los requerimientos.

Subsistema Facturacin para Hospitalizacin


Exploracin: este subsistema es uno de los ms importantes y se encarga de registrar
la facturacin por concepto de bienes y servicios percibidos por intervenciones
mdicas y hospitalizaciones. Registra la informacin del cliente (persona o empresa),
del paciente atendido, diagnstico, fecha de ingreso y egreso del paciente y los
detalles la factura como son; el concepto (de facturacin, intervencin mdica y/o
medicamentes), la cantidad, el precio unitario y el precio total. Este sistema maneja
diferentes listados de precios dependiendo del cliente, en el caso de empresas y
seguros asigna costos con recargos por procesos administrativos y retardos en el pago
de la facturacin.

Planificacin: durante esta fase se disearon los diagramas de estructura esttica de


los componentes del mbito del subsistema en estudio (apndice E).

Los componentes que son utilizados en este subsistema se organizaron en el


espacio de nombre ModeloComponentes.Facturacion (apndice A2).

Iteraciones: basndose en los diagramas de estructura esttica de cada componente


se desarrollaron los componentes de este subsistema. Tambin se crearon los
servicios de la aplicacin y los procesos de usuario para guiar la interaccin del
usuario en los procesos normales de la aplicacin (apndice E).

50

Produccin: utilizando la numeracin de versiones de tres cifras se realizaron varias


liberaciones comenzando por la versin 1.0.1 y aumentando progresivamente segn
el nmero de refactorizaciones aplicadas, hasta la versin 1.3.4.

Figura 17. Interfaz de usuario de presupuestos para hospitalizacin para el subsistema


facturacin.

Subsistema Honorarios Mdicos


Exploracin: el Subsistema Honorarios Mdicos se encarga de procesar los pagos
pendientes a los mdicos tratantes por concepto de intervenciones quirrgicas y
hospitalizacin. Este subsistema se alimenta de los conceptos ingresados por el
subsistema Facturacin para Hospitalizacin. Este registra los pagos de los mdicos y
las deudas pendientes, imprime reporte por pantalla e impresos de los estados de

51

cuenta de los mdicos, listados de mdicos en el sistema y relaciones de pago de los


mdicos.

Planificacin: durante esta fase de disearon los artefactos de diseo basados en la


arquitectura definida en el captulo anterior (apndice F).

Iteraciones: basndose en los diagramas de estructura esttica de cada componente


se desarrollaron los componentes de este subsistema. Tambin se crearon los
servicios de la aplicacin y los procesos de usuario para guiar la interaccin del
usuario en los procesos normales de la aplicacin (apndice F).

Produccin: utilizando la numeracin de versiones de tres cifras se realizaron varias


liberaciones comenzando por la versin 1.0.1 y aumentando progresivamente segn
el nmero de refactorizaciones aplicadas, hasta la versin 1.3.4.

IMPLANTACIN

Abarc la implementacin de los componentes entregados en versiones


definitivas para su puesta en los diferentes ambientes de produccin dentro de la
organizacin. En el caso de cada componente en especfico, represent la instalacin
y puesta en marcha en su totalidad de los subsistemas, conjuntamente con el
adiestramiento en el uso del mismo por parte del personal de la Institucin.

La formacin de los usuarios finales se realiz por medio de entrenamiento


personalizados en el uso de la aplicacin correspondiente al subsistema instalado en
el departamento donde labora.

52

Los manuales de uso se entregaron en formato HTML (HyperText Markup


Language, Lenguaje de Marcado de Hipertexto) integrado en las aplicaciones, para
asegurar un rpido acceso y total disponibilidad para los usuarios. stos proporcionan
las descripciones de los pasos necesarios para realizar los principales procesos de
cada subsistema.

53

CONCLUSIONES

El HCSVP es una institucin que ofrece servicios mdicos y asistenciales de


calidad, para ello es necesaria la automatizacin e integracin de muchos de sus
procesos administrativos en un solo sistema. Esto aunado al aumento de sus
departamentos y del volumen de informacin que se genera, motiv a la alta gerencia
a centrarse en el desarrollo de un nuevo sistema que est acorde con las necesidades.

El uso de la metodologa XP ofreci un medio expedito para que el cliente


pueda ver resultados en un tiempo relativamente corto y pueda participar en el
proceso de desarrollo. El concepto de iteracin es coherente con las metas de XP
gracias a prcticas como no disear a futuro y mantener el cdigo y diseo los ms
simple posible, sin quitar funcionalidad y robustes. Esta actitud de aceptacin del
cambio, conocida dentro de la teora como refactorizacin es un concepto central de
la metodologa.

El SACH es resultado de los esfuerzos del anlisis y desarrollo de un sistema


de informacin automatizado capaz de mejorar el control de los grandes volmenes
de informacin que se generan diariamente en la Institucin.

La interfaz grfica que ofrece el SACH es intuitiva y fcil de manejar por los
usuarios que no poseen mucha experiencia en el rea de computacin, facilitando la
interaccin de stos con la aplicacin.

Con el SACH puede obtener reportes y estadsticas de los movimientos


administrativos realizados en la Institucin, proporcionando la informacin necesaria

54

para una efectiva toma de decisiones o planificacin estratgica futura de la


organizacin.
El SACH pone a disposicin una herramienta esencial en las funciones
administrativas del HCSVP como la planificacin, organizacin y control,
proporcionando informacin til, completa y oportuna para un proceso de toma de
decisiones ms eficiente.

55

RECOMENDACIONES

Los nuevos departamentos que se agreguen a la organizacin y perciban


entrada de ingresos por concepto y servicios mdicos deben implementar el
subsistema Ingresos.

Para mantener un buen desempeo del sistema es necesario disear planes de


mantenimiento y actualizacin, para as, agregar los nuevos requerimientos de los
procesos administrativos de la Institucin y optimizar los ya existentes.

Con el fin de mejorar las aplicaciones existentes e incluir nuevos


requerimientos es necesario realizar refactorizaciones peridicas al software
desarrollado, esto aumentar la lnea de vida til del sistema implantado.

El desarrollo de nuevos subsistemas que se integren al sistema existente, por


ejemplo, Historias Mdicas y Farmacia (Almacn).

56

BIBLIOGRAFA

1. Senn, J. 1992. Anlisis y diseo de sistemas de informacin. Segunda edicin.


McGraw-Hill Interamericana de Mxico, S.A. Mxico.
2. Santos, E. 1980. Procesamiento de datos. Ediciones MACCHI. Buenos Aires.
3. Manual de procedimientos y estatutos del Hospital Clnico San Vicente de Pal.
Referencia interna.
4. Wikipedia, La Enciclopedia libre. <http://es.wikipedia.org/wiki/>(30/03/07)
5. Alarcn, R. 2000. Diseo orientado a objetos con UML. Grupo EIDOS
Consultara y Documentacin Informtica, S.L. Madrid, Espaa.
6. McClure, M. y Romano, Leo. 2004. Engine-Collection-Class (ECC), un patrn
de diseo para crear componentes de empresa reutilizables. MSDN Artculos
tcnicos
en
espaol.
<http://www.microsoft.com/spanish/msdn/articulos/desipat.htm> (04/05/06)
7. Ramrez, T. 1995. Cmo hacer un Proyecto de Investigacin. Tercera edicin.
Carhel C.A. Caracas.
8. Cans, J; Letelier, P. y Penads, C. 2003. Metodologas giles en el desarrollo
de Software. Actas. Taller realizado en el marco de las VIII Jornadas de
Ingeniera del Software y Bases de Datos, JISBD 2003. Universidad Politcnica
de Valencia. Alicante, Espaa.
9. Acebal, C. y Cueva, J. Extremme Programming (XP): un nuevo mtodo de
desarrollo de software. Novatica upgrade, marzo-abril de 2002. Pg. 8-12.
10 Arquitectura de aplicaciones de .NET: Diseo de aplicaciones y servicios.
<http://download.microsoft.com/download/e/d/1/ed1bd192-a665-49e1-b97d.
e283318c4294/Chapter1_Introduction.doc> (15/02/06)
11 Arsenovski, Danijel. Refactoring - elixir of youth for legacy VB code. The Code
Project.
<http://www.codeproject.com/vb/net/Refactoring_elixir.asp>
.
(12/03/06)
12 Spolsky, J. Diseo de interfaz de usuario para programadores. Captulo 1:
Controlar
tu
entorno
te
hace
felz.
Willy.Net.
.
<http://www.willydev.net/DUGdirectory/dirH

itting.asp?id=2375&url=http://www.willydev.net/descargas/WillyDev_Interfazd
eUsuarioparaDesarrolladores1.pdf> (22/06/2006)
13 Spolsky, J. Diseo de interfaz de usuario para programadores. Captulo 2:
Calcular
lo
que
esperan.
Willy.Net.
.
<http://www.willydev.net/DUGdirectory/dirHitting.asp?id=2376&url=http://ww
w.willydev.net/descargas/WillyDev_InterfazdeUsuarioparaDesarrolladores2.pdf
> (22/06/06)
14 Spolsky, J. Diseo de interfaz de usuario para programadores. Captulo 3:
Decisiones.
.
Willy.Net.<http://www.willydev.net/DUGdirectory/dirHitting.asp?id=2377&url
=htt
p://www.willydev.net/descargas/WillyDev_InterfazdeUsuarioparaDesarrollador
es3.p
df> (22/06/06)
15 Spolsky, J. Diseo de interfaz de usuario para programadores. Captulo 4:
Invitaciones
y
metforas.
Willy.
.
Net.<http://www.willydev.net/DUGdirectory/dirHitting.asp?id=2379&url=http:/
/www.willydev.net/descargas/WillyDev_InterfazdeUsuarioparaDesarrolladores
4.pdf> (22/06/06)
16 Spolsky, J. Diseo de interfaz de usuario para programadores. Captulo 5:
Consistencia
y
otro
.
duendes.Willy.Net.<http://www.willydev.net/DUGdirectory/dirHitting.asp?id=2
381&url=http://www.willydev.net/descargas/WillyDev_InterfazdeUsuarioparaD
esarrolladores5.pdf> (22/06/06)
17 Spolsky, J. Diseo de interfaz de usuario para programadores. Captulo 6:
Diseando para gente que tiene cosas mejores que hacer con su vida. Willy.Net.
.
<http://www.willydev.net/DUGdirectory/dirHitting.asp?id=2382&url=http://ww
w.willydev.net/descargas/WillyDev_InterfazdeUsuarioparaDesarrolladores6.pdf
> (22/06/06)

APNDICES

NDICE
Pg.
APNDICE A: Artefactos de diseo generales del sistema
Arquitectura de espacios de nombres del sistema..
A1 - Diagrama de estructura esttica de un proceso de usuario.....
A2 - Diagrama de estructura esttica de un servicio de aplicacin....
A3 - Diagrama de estructura esttica del patrn ECC
A4 - Diagrama de estructura esttica del componente de conexin de datos

A-1
A-2
A-3
A-4
A-5

APNDICE B: Artefactos de diseo del Subsistema Nmina


B1 - Diagrama de casos de uso del Subsistema Nmina
B2 - Descripciones de los casos de uso del Subsistema Nmina
B3 - Diagrama de secuencia iniciar sesin
B4 - Diagrama de secuencia abrir nmina
B5 - Diagrama de secuencia crear nueva nmina o pool
B6 - Diagrama de secuencia agregar empleado a nmina
B7 - Diagrama de secuencia agregar empleado al sistema
B8 - Diagrama de secuencia asignar concepto a empleado
B9 - Diagrama de secuencia agregar frmula de clculo...
B10 - Diagrama de secuencia imprimir reporte de empleado
B11 - Diagrama de secuencia imprimir comprobante de pago de nmina
B12 - Diagrama de secuencia imprimir reporte general de nmina
B13 - Modelo fsico de la base de datos del Subsistema Nmina
B14 - Diccionario de datos del Subsistema Nmina
B15 - Diagrama de estructura esttica del componente Cargo
B16 - Diagrama de estructura esttica del componente Concepto de Nmina
B17 - Diagrama de estructura esttica del componente Departamento
B18 - Diagrama de estructura esttica del componente Cierre de Nmina
B19 - Diagrama de estructura esttica del componente Empleado
B20 - Diagrama de estructura esttica del componente Miembro de Nmina
B21 - Diagrama de estructura esttica del componente Movimiento de Nmina
B22 - Diagrama de estructura esttica del componente Nmina
B23 - Diagrama de estructura esttica del componente Perodo de Pago de Nmina
B24 - Diagrama de estructura esttica del componente Persona
B25 - Diagrama de estructura esttica del componente Sesin
B26 - Diagrama de estructura esttica del componente Tipo de Dato
B27 - Diagrama de estructura esttica del componente Usuario

B-1
B-2
B-10
B-11
B-12
B-13
B-14
B-15
B-16
B-17
B-18
B-19
B-20
B-21
B-24
B-25
B-26
B-27
B-28
B-29
B-30
B-31
B-32
B-33
B-34
B-35
B-36

B28 - Diagrama de estructura esttica del componente Utilidades


B29 - Diagrama de estructura esttica para el servicio de administracin de cargos
B30 - Diagrama de estructura esttica para el servicio de administracin de
departamentos
B31 - Diagrama de estructura esttica para el servicio de administracin de
empleados..
B32 - Diagrama de estructura esttica para el servicio de administracin de
movimientos de nmina
B33 - Diagrama de estructura esttica para el servicio de administracin de
nminas..
B34 - Diagrama de estructura esttica para el servicio de administracin de
personas.
B35 - Diagrama de estructura esttica para el servicio de administracin de
sesiones.
B36 - Diagrama de estructura esttica para el servicio de sincronizacin
B37 - Diagrama de estructura esttica para el servicio de administracin de
usuarios.
B38 - Diagrama de estructura esttica para el servicio de administracin de
perodos de pago nmina
APNDICE C: Artefactos de diseo del Subsistema Ingresos
C1 - Diagrama de casos de uso general del subsistema
C2 - Descripciones de los casos de uso para el subsistema
C3 - Modelo fsico de la base de datos del Subsistema Ingresos
C4 - Diccionario de datos para el Subsistema Ingresos
C5 - Diagrama de secuencia seleccionar nodo de facturacin
C6 - Diagrama de secuencia asignar cliente
C7 - Diagrama de secuencia agregar persona
C8 - Diagrama de secuencia agregar empresa
C9 - Diagrama de secuencia asignar paciente
C10 - Diagrama de secuencia agregar paciente
C11 - Diagrama de secuencia asignar concepto a factura
C12 - Diagrama de secuencia agregar concepto de facturacin al sistema
C13 - Diagrama de secuencia agregar categora de facturacin
C14 - Diagrama de secuencia asignar forma de pago
C15 - Diagrama de secuencia agregar banco
C16 - Diagrama de secuencia registrar ingreso de caja
C17 - Diagrama de secuencia registrar presupuesto
C18 - Diagrama de estructura esttica para el componente Banco

B-37
B-38
B-39
B-40
B-41
B-42
B-43
B-44
B-45
B-46
B-47

C-1
C-2
C-14
C-15
C-19
C-20
C-21
C-22
C-23
C-24
C-25
C-26
C-27
C-28
C-29
C-30
C-31
C-32

C19 - Diagrama de estructura esttica para el componente Categora de Concepto


de Facturacin
C20 - Diagrama de estructura esttica para el componente Cliente...
C21 - Diagrama de estructura esttica para el componente Concepto de Factura
C22 - Diagrama de estructura esttica para el componente Empresa
C23 - Diagrama de estructura esttica para el componente Forma de Pago
C24 - Diagrama de estructura esttica para el componente Ingreso de Caja
C25 - Diagrama de estructura esttica para el componente Paciente
C26 - Diagrama de estructura esttica para el componente Partida de Ingreso de
Caja
C27 - Diagrama de estructura esttica para el componente Partida de
Presupuesto
C28 - Diagrama de estructura esttica para el componente Presupuesto
C29 - Diagrama de estructura esttica para el servicio de administracin de
clientes
C30 - Diagrama de estructura esttica para el servicio de administracin de
conceptos de facturacin.
C31 - Diagrama de estructura esttica para el servicio de administracin de
pacientes.
C32 - Diagrama de estructura esttica para el servicio de administracin de
presupuestos
C33 - Diagrama de estructura esttica para el servicio de administracin de
Registro de Ingreso de Caja

C-33
C-34
C-35
C-36
C-37
C-38
C-39
C-40
C-41
C-42
C-43
C-44
C-45
C-46
C-47

APNDICE D: Artefactos de diseo del Subsistema Presupuestos para Hospitalizacin


D1 - Diagrama de casos de uso general del subsistema Presupuestos para
Hospitalizacin.
D-1
D2 - Modelo Fsico de la base de datos del Subsistema Presupuestos para
Hospitalizacin...
D-2
D3 - Descripciones de los casos del Subsistema Presupuestos para
Hospitalizacin.
D-3
D4 - Diccionario de datos del Subsistema Presupuestos para Hospitalizacin
D-15
D5 - Diagrama de secuencia crear nuevo presupuesto
D-17
D6 - Diagrama de secuencia crear presupuesto en base a plantilla D-18
D7 - Diagrama de secuencia modificar presupuesto
D-19
D8 - Diagrama de secuencia asignar diagnstico al presupuesto
D-20
D9 - Diagrama de secuencia agregar diagnstico al sistema
D-21
D10 - Diagrama de secuencia guardar presupuesto D-22
D11 - Diagrama de secuencia imprimir presupuesto
D-23

D12 - Diagrama de estructura esttica para el componente Acto Mdico


D13 - Diagrama de estructura esttica para el componente Diagnstico
D14 - Diagrama de estructura esttica para el componente Especialidad

D-24
D-25
D-26

APNDICE E: Artefactos de diseo del Subsistema Facturacin para Hospitalizacin


E1 - Diagrama de casos de uso general del Subsistema Facturacin para
Hospitalizacin.
E-1
E2 - Descripciones de los casos de uso para el Subsistema Facturacin para
Hospitalizacin
E-2
E3 - Modelo Fsico de datos para el Subsistema Facturacin para Hospitalizacin.. E-12
E4 - Diccionario de datos del Subsistema Facturacin para Hospitalizacin
E-13

APNDICE F: Artefactos de diseo del Subsistema Honorarios Mdicos


F1 - Diagrama de casos de uso general del subsistema
F2 - Descripciones de los casos de uso para el Subsistema Honorarios Mdicos
F3 - Modelo Fsico de datos para el Subsistema Honorarios Mdicos
F4 - Diccionario de datos del Subsistema Honorarios Mdicos

F-1
F-2
F-9
F-10

APNDICE A
Artefactos de diseo generales del sistema

Aplicaciones

<Subsistema>
Utilidades
Logs
Mail
Registro
Servicios

Locales
ModeloComponentes

Base
Seguridad
Tipos
Diseo
Servicios
Compartidos
<Componente>
Facturacin
<Componente>
ModeloDatos
Conexion
Excepsiones
SQL

A1 - Arquitectura de espacios de nombres (namespaces)


Los espacios de nombres representados por <Aplicaciones> y <Componente>
tomarn los nombres de las diferentes aplicaciones (subsistemas) y componentes
respectivamente.

ProcesoUsuario
-_procesoUsuarioID : String
-_procesoUsuarioNombre : String
-_webUI : Boolean
#ProcesoUsuarioID() : String
#webUID() : Boolean
#New(entrada nombre : String)
#OnIniciado()
#OnFinalizado()
#OnCancelado()
#OnDetenido()
+Iniciado()
+Finalizado()
+Cancelado()
+Detenido()

ProcesoUsuarioIniciarSesion

AplicacionForm

+SesionID : Integer
-_Instancia : Object
-_Mutex : Mutex
+Singleton() : ProcesoUsuarioIniciarSesion
+New()
-MostrarVentanaIniciarSesion()
+IniciarSesion() : Integer
-IniciarSesion(entrada usuario : String, entrada contrasena : String) : Boolean
-OnSesionIniciada()
-OnSesionNoAutorizada()
+SesionIniciada()
+SesionNoAutorizada(entrada mensaje : String)

Locales::ServicioSesiones
+ObtenerTodasSesiones() : IColSesion
+ObtenerSesionPorID(entrada sesionID : Integer) : ICSesion
+EliminarSesion(entrada sesionID : Integer) : Boolean
+RegistrarInicioSesion(entrada usuarioID : Integer) : Integer
+RegistrarFinalSesion(entrada sesionID : Integer)
+IniciarSesion(entrada usuario : String, entrada contrasenia : String) : Integer
+Estado() : EstadoServicio
+ServicioID() : String
+New(entrada tokenSeguridad : String)
+New()
#Finalize()

A2 Diagrama de estructura esttica de un proceso de usuario.

Servicios::AdministradorServicios
-_ListaServicios : ArrayList = New System.Collections.ArrayList
-_ServiciosHashtable : Hashtable = New System.Collections.Hashtable
-AdministradorServiciosPorDefecto : AdministradorServicios = New Servicios.AdministradorServicios
+Servicios() : AdministradorServicios
-New()
+InicializarTodosServicios()
+FinalizarTodosServicios()
+AgregarServicio(entrada servicio : IServicio) : IServicio
+AgregarServicios(entrada servicios() : IServicio) : IServicio
+ObtenerServicio(entrada tipoServicio : Type) : IServicio
+AsignarTokenSeguridad(entrada tokenSeguridad : String)

Servicios::ServicioAbstracto
-_TokenSeguridad : String
#_EstadoServicio : EstadoServicio = Servicios.EstadoServicio.Detenido
-_HoraInicio : Date
+Nombre() : String
+InicializarServicio()
+FinalizarServicio()
+Inicializado(entrada origen : Object, entrada args : ServicioEventArgs)
+Finalizado(entrada origen : Object, entrada args : ServicioEventArgs)
+Inicializando(entrada origen : Object, entrada args : ServicioEventArgs)
+Finalizando(entrada origen : Object, entrada args : ServicioEventArgs)
+ErrorServicio(entrada origen : Object, entrada e : Exception)
+HoraInicio() : Date
#GenerarServicioID() : String
#OnInicializando(entrada e : ServicioEventArgs)
#OnInicializado(entrada e : ServicioEventArgs)
#OnFinalizando(entrada e : ServicioEventArgs)
#OnFinalizado(entrada e : ServicioEventArgs)
#OnErrorServicio(entrada ex : Exception)
+New()

Servicios::ServicioEventArgs
-_NombreServicio : String
+NombreServicio() : String
+New(entrada nombreServicio : String)
+New()
interfazServicios::IServicio

enumeracinServicios::EstadoServicio
Servicios::EstadoServicioArgs
+Estado : EstadoServicio
+NombreEstadoServicio() : String

+Iniciado = 1
+Iniciando = 0
+Detenido = 3
+Deteniendo = 2

+Nombre() : String
+InicializarServicio()
+FinalizarServicio()
+Inicializado(entrada origen : Object, entrada args : ServicioEventArgs)
+Finalizado(entrada origen : Object, entrada args : ServicioEventArgs)
+Inicializando(entrada origen : Object, entrada args : ServicioEventArgs)
+Finalizando(entrada origen : Object, entrada args : ServicioEventArgs)
+ErrorServicio(entrada origen : Object, entrada e : Exception)

A3 Diagrama de estructura esttica de un servicio de aplicacin.

Seguridad::ColeccionSegura

Seguridad::ObjetoSeguro

#_TokenSeguridad : String

-_SecurityToken : String

+TokenSeguridad() : String

+SecurityToken() : String

Entidad
-_IsNew : Boolean
-_Dirty : Boolean
-_ClassStorage : Boolean
-_Hierarchy : Object
-_DeleteFlag : Boolean
-_OnDemandLoading : Boolean
-_Tag : Object
-_CreateDateTime : Date
-_ModifyDateTime : Date

ColeccionEntidades
-_Dirty : Boolean
#_EntidadPersistente : EntidadPersistente
+Agregar(entrada entidad : Entidad) : Integer
+Remover(entrada indice : Integer = SIN_PARAMETRO_OPCIONAL) : Boolean
#Cargar(entrada tokenSeguridad : String, entrada FilledStorage : ArrayList) : Boolean
+MarcarParaBorrar(entrada indice : Integer = SIN_PARAMETRO_OPCIONAL) : Boolean
+Recuperar(entrada indice : Integer = SIN_PARAMETRO_OPCIONAL) : Boolean
+Actualizar(entrada indice : Integer = SIN_PARAMETRO_OPCIONAL) : Boolean
+Eliminar(entrada indice : Integer = SIN_PARAMETRO_OPCIONAL) : Boolean
+Intercambiar(entrada y salida x : Integer, entrada y salida y : Integer)
#New()
#OnColeccionCambio()
#OnCambioIndiceSeleccionado()

+OnDemandLoading() : Boolean
+Tag() : Object
+ModifyDateTime() : Date
#ActualizarComponentesDerivados()
#New()
+CreateObjRef(entrada requestedType : Type) : ObjRef

Fabrica
-_RecuperarRegistros : Registros = ModeloComponentes.Base.Tipos.Registros.NoBorrados
+RecuperarRegistros() : Registros
#CrearInstanciaDeClase() : Entidad
#CrearInstanciaDeColeccion() : ColeccionEntidades
#ProcAlmacenadoSeleccionar() : String
#AsignarDatosAClase(entrada y salida entidad : Entidad, entrada y salida reader : SqlDataReader)
#ObtenerClaseECC(entrada tokenSeguridad : String, entrada ID : Integer = SIN_PARAMETRO_OPCIONAL, entrada tipoID : SqlDbType = SqlDbType.Int) : ColeccionEntidades
#NuevaColeccionVacia(entrada tokenSeguridad : String) : ColeccionEntidades
#AsignarValorDevuelto(entrada reader : SqlDataReader, entrada indice : Integer) : Object
+TokenSeguridad(entrada tokenSeguridad : String)
#New()

EntidadPersistente
-_Coleccion : ColeccionEntidades
#ActualizarColeccion_Con_DatosDevueltos(entrada reader : SqlDataReader, entrada y salida entidad : Entidad)
#PrepararDatos_Para_Borrar(entrada entidad : Entidad, entrada y salida comandoSQL : SqlCommand) : Object
#PrepararDatos_Para_Actualizar(entrada entidad : Entidad, entrada y salida comandoSQL : SqlCommand) : Object
#PrepararDatos_Para_Insertar(entrada entidad : Entidad, entrada y salida comandoSQL : SqlCommand) : Object
#ProcAlmacenado_Insertar() : String
#ProcAlmacenado_Eliminar() : String
#ProcAlmacenado_Actualizar() : String
+Eliminar() : Boolean
+Eliminar(entrada indice : Integer) : Boolean
-Eliminar(entrada limiteInferior : Integer, entrada limiteSuperior : Integer) : Boolean
+Actualizar() : Boolean
+Actualizar(entrada indice : Integer) : Boolean
-Actualizar(entrada limiteInferior : Integer, entrada limiteSuperior : Integer) : Boolean
#AsignarValorDevuelto(entrada reader : SqlDataReader, entrada indice : Integer) : Object
+New(entrada y salida coleccion : ColeccionEntidades)

A4 - Diagrama de estructura esttica del patrn ECC.

ConexionBas
#_Usuario : String = ""
#_Contrasea : String = ""
#_Servidor : String = "SERVIDOR"
#_BaseDatos : String = "Sach"
#_HoraConexion : Date
#_IsConectado : Boolean = False
#_EstadoConexion : EstadoConexion
#_UsarSeguridadWindowsNT : Boolean = True
+Usuario() : String
+Contrasea() : String
+CadenaConexion() : String
+UsarSeguridadWindowsNT() : Boolean
+IsConectado() : Boolean
+HoraConexion() : Date
+EstadoConexion() : EstadoConexion
+Servidor() : String
+BaseDatos() : String
#New()
+Conectar()
+Desconectar()

Conexion
#_Conexion : SqlConnection
-_Instancia : Object
-_Mutex : Mutex
+OnNotificar(entrada descripcion : String)
+OnNotificarError(entrada origen : String, entrada descripcion : String)
+OnNotificarErrorControlado(entrada origen : String, entrada descripcion : String)
+OnNotificarErrorNoControlado(entrada origen : String, entrada descripcion : String)
+Notificar(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+NotificarError(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+NotificarErrorControlado(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+NotificarErrorNoControlado(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+Ejecutar(entrada TokenSeguridad : String, entrada cadenaSQL : String, entrada oComandoSQL : SqlCommand, entrada TipoEjecucion : TipoEjecucion = TipoEjecucion.ProcedimientoAlmacenado, entrada SeEsperanResultados : Boolean = True) : SqlDataReader
+Singleton() : Conexion
+EstadoConexionToString() : String
+Enlace() : SqlConnection
+New(entrada Usuario : String, entrada Contrasena : String, entrada Servidor : String = "SERVIDOR")
+New()
+OnConectando()
+OnConectado()
+OnDesconectando()
+OnDesconectado()
+Conectado(entrada origen : Object, entrada args : ConexionEventArgs)
+Desconectado(entrada origen : Object, entrada args : ConexionEventArgs)
+Conectando(entrada origen : Object, entrada args : ConexionEventArgs)
+Desconectando(entrada origen : Object, entrada args : ConexionEventArgs)

A5. Diagrama de estructura esttica del componente de conexin de datos.

APNDICE B
Artefactos de diseo del Subsistema Nmina

Iniciar sesin

uses
Abrir nmina

Agregar empleado a
la nmina

uses

Asignar concepto a
empleado

Secretaria de Pagos

uses

Crear nueva nmina


o pool

Agregar empleado
al sistema

Agregar frmula de
calculo

Cerrar perodo de
pago

Imprimir reporte
de empleado

Administrador

Imprimir comprobante
de pago de nmina

Imprimir reporte
general de nmina

B1 - Diagrama de casos de uso para el Subsistema Nmina.

Empleado

B2 Descripciones de los casos de uso del Subsistema Nmina.


Nombre del caso de uso: Iniciar sesin
Actores: Secretaria de pagos
Resumen:
Permite iniciar la sesin en el sistema de nmina.
Pre-condiciones:
1. No se ha iniciado la sesin en el sistema.
Curso normal de los eventos
Accin de los actores
Respuesta del sistema
1. Muestra la ventana de inicio de sesin.
2. La secretaria ingresa su nombre de
usuario y su contrasea para iniciar la
sesin.
3. Selecciona la opcin aceptar.
a) Si selecciona la opcin cancelar ver
seccin 1.
4. Busca el nombre y la contrasea del
usuario en la base de datos para verificar
que es vlido.
5. Si el nombre y contrasea del usuario
son vlidos se habilita la ventana
principal y los controles de la aplicacin.
a) Si con incorrectos los datos de inicio
de sesin ver seccin 2.
Flujos alternativos
Seccin 1:
1. Selecciona la opcin cancelar.
2. Cancela el inicio de sesin y se
deshabilitan la ventana principal y los
controles de la aplicacin.
Seccin 2:
1. Selecciona la opcin aceptar.
2. Si el nombre y la contrasea de
usuario no son vlidos el sistema muestra
un mensaje indicando que son

3,00cm

incorrectos.
3. Muestra la ventana de inicio de sesin
nuevamente para que el usuario lo intente
nuevamente.
Post-condiciones:
1. Se inici una sesin en el sistema.
Nombre del caso de uso: Abrir nmina.
Actores: Secretaria de pagos.
Resumen: Abre una nmina o pool.
Pre-condiciones:
1. Se debe haber iniciado una sesin en el sistema.
2. No debe haber otra nmina o pool abierto.
Curso normal de los eventos
Accin de los actores
Respuesta del sistema
1. Muestra la ventana de seleccin con el
listado de las nminas existentes en el
sistema.
2. Selecciona la nmina que desea abrir
del listado de nminas existentes en el
sistema.
3. Selecciona el perodo de pago de la
nmina o pool a editar.
4. Selecciona la opcin aceptar.
a) Si selecciona la
cancelar. Ver seccin 1.

opcin
5. Abre la nmina o pool, carga el
perodo de pago correspondiente a la
fecha del sistema y carga los conceptos
de nmina en la ventana principal de la
aplicacin. Si no existe el perodo de
pago correspondiente ver seccin 2.

6. Selecciona la opcin Nuevo.


Ver la seccin 3.
Flujos alternativos

3,00cm

Seccin 1:
1. Selecciona la opcin cancelar.
2. Cancela la operacin y muestra la
pantalla principal del sistema.
Seccin 2:
1. Crea los perodos de pago del ao en
curso para la nmina o pool
correspondientes a la frecuencia de la
nmina.
Seccin 3:
1. Selecciona la opcin Nuevo.
2. Inicia el caso de uso Crear nueva
nmina o pool.

Nombre del caso de uso: Crear nueva nmina o pool.


Actores: Secretaria de pagos.
Resumen:
Crea una nueva nmina o pool de pago en el sistema.
Pre-condiciones:
1. Se debe haber iniciado una sesin en el sistema.
Curso normal de los eventos
Accin de los actores
Respuesta del sistema
1. Muestra la ventana de insercin de
nueva nmina o pool.
2. La secretaria ingresa el nombre, la
descripcin y las observaciones de la
nueva nmina o pool.
3. Selecciona la frecuencia de la nmina.
Las
frecuencias
son;
mensuales,
quincenales, semanales u ocasionales.
4. Selecciona la opcin aceptar.
a) Si selecciona la opcin cancelar ver
seccin 1.
5. Se muestra una ventana indicando que
se cre la nueva nmina o pool.

3,00cm

Flujos alternativos
Seccin 1:
1. Selecciona la opcin cancelar.
2. Se cancela la operacin y se muestra la
ventana principal de la aplicacin.

Nombre del caso de uso: Agregar empleado a la nmina.


Actores: Secretaria de pagos.
Resumen:
Agrega un nuevo empleado en la nmina o pool abierto.
Pre-condiciones:
1. Debe haber una nmina abierta.
Curso normal de los eventos
Accin de los actores
Respuesta del sistema
1. Muestra una ventana de seleccin con
el listado de todos los empleados
registrados en el sistema que no se
encuentra en la nmina abierta.
2. Selecciona los empleados que desea
agregar a la nmina o pool abierto.
3. Selecciona la opcin aceptar.
a) Si selecciona la opcin cancelar ver
seccin 1.
4. Se cierra la ventana de seleccin y
muestra un mensaje indicando que se
agreg un nuevo empleado a la nmina
abierta.
a) Si hubo algn error en el proceso ver
seccin 2.
Flujos alternativos
Seccin 1:
1. Selecciona la opcin cancelar.
2. Se cancelar la operacin y se cierra la
ventana de seleccin.
Seccin 2:

3,00cm

1. Se muestra un mensaje notificando al


usuario que se produjo un error y se
muestran los detalles.
2. Selecciona la opcin aceptar.
3. Se cierra la ventana con el mensaje y
se espera a que el usuario modifique la
plantilla y e intente nuevamente la
operacin.

Nombre del caso de uso: Agregar empleado al sistema.


Actores: Secretaria de pagos.
Resumen:
Agrega un nuevo empleado al sistema.
Pre-condiciones:
Curso normal de los eventos
Accin de los actores
Respuesta del sistema
1. Se muestra una ventana con la planilla
para ingresar toda referente al nuevo
empleado que se desea ingresar en el
sistema.
2. La secretaria ingresa todos los datos
del nuevo empleado.
3. Selecciona la opcin aceptar.
a) Si selecciona la opcin cancelar ver
Seccin 1.
4. Se agrega toda la informacin del
empleado en la base de datos.
5. Se muestra un mensaje indicando que
se agreg el empleado en el sistema.
Flujos alternativos
Seccin 1:
1. Se selecciona la opcin cancelar.
2. Se cancela la operacin y se cierra la
ventana con la planilla.

3,00cm

Nombre del caso de uso: Asignar concepto a empleado.


Actores: Secretaria de pagos.
Resumen:
Asigna conceptos de nmina a un empleado.
Pre-condiciones:
1. Se debe haber iniciado una sesin en el sistema.
2. Debe haber una nmina abierta.
3. Debe haber al menos un empleado en la nmina abierta.
Curso normal de los eventos
Accin de los actores
Respuesta del sistema
1. Muestra la ventana para asignar nuevo
concepto a integrante de nmina o pool.
2. El sistema automticamente coloca los
datos del empleado que estaba
seleccionado en la ventana principal de la
aplicacin.
3. La secretaria ingresa el nmero de
cdula o nombre del empleado.
4. Se muestra una ventana de seleccin
con los resultados de los empleados de la
nmina abierta que corresponden con los
datos suministrados.
5. La secretaria escribe el cdigo del
concepto de nmina o lo selecciona de la
lista desplegable.
6. La secretaria ingresa el monto del
concepto.
10. Selecciona la opcin aceptar.
a) Si selecciona la opcin cancelar ver
seccin 1.
Flujos alternativos
Seccin 1:
1. Se selecciona la opcin cancelar.
2. Se cancela la operacin y se cierra la
ventana con la planilla.

3,00cm

Nombre del caso de uso: Agregar frmula de clculo.


Actores: Secretaria de pagos.
Resumen:
Agrega una nueva frmula de clculo de concepto de nmina al sistema. Las
frmulas de nmina pueden ser asignaciones, deducciones o prstamos.
Pre-condiciones:
Curso normal de los eventos
Accin de los actores
Respuesta del sistema
1. Muestra la ventana para insercin de
nueva frmula de clculo de nmina.
2. La secretaria ingreso el nombre, la
descripcin, la definicin y seleccionado
el tipo de frmula.
3. Selecciona la opcin aceptar.
a) Si selecciona la opcin cancelar ver
seccin 1.
4. Se agrega la informacin de la nueva
frmula en la base de datos.
5. Se cierra la ventana de insercin de
nueva frmula.
Flujos alternativos
Seccin 1:
1. Selecciona la opcin cancelar.
2. Se cancelar la operacin y se cierra la
ventana.

Nombre del caso de uso: Imprimir reporte de empleado.


Actores: Secretaria de pagos, administrador.
Resumen:
Genera e imprime un reporte de estado de cuentas de un empleado en particular.
Pre-condiciones:
1. Se debe haber iniciado una sesin en el sistema.

3,00cm

2. Debe haber una nmina abierta.


3. Se debe seleccionar un empleado de la nmina.
Curso normal de los eventos
Accin de los actores
Respuesta del sistema
1. Muestra la ventana de opciones de
impresin.
2. Selecciona la opcin aceptar.
a) Si selecciona la opcin cancelar ver
seccin 1.
3. Genera el reporte de empleado y enva
el documento a la impresora.
4. Cierra la ventana de opciones de
impresin.
Flujos alternativos
Seccin 1:
1. Si selecciona la opcin cancelar.
2. Cancela la operacin y cierra la
ventana de opciones.

Nombre del caso de uso: Imprimir comprobante(s) de pago de nmina.


Actores: Secretaria de pagos, empleado.
Resumen:
Genera e imprime los comprobantes de pago de un empleado a de todos los
empleados de una nmina o pool en un perodo de pago en particular.
Pre-condiciones:
1. Se debe haber iniciado una sesin en el sistema.
2. Debe haber una nmina abierta.
3. Se debe seleccionar un empleado de la nmina.
Curso normal de los eventos
Accin de los actores
Respuesta del sistema
1. Muestra la ventana de opciones de
impresin.
2. Selecciona la opcin aceptar.
a) Si selecciona la opcin cancelar ver
seccin 1.
3. Genera el reporte de empleado y enva

3,00cm

el documento a la impresora.
4. Cierra la ventana de opciones de
impresin.
Flujos alternativos
Seccin 1:
1. Si selecciona la opcin cancelar.
2. Cancela la operacin y cierra la
ventana de opciones de impresin.
Post-condiciones:

Nombre del caso de uso: Imprimir reporte general de nmina


Actores: Secretaria de pagos, administrador
Resumen:
Genera el reporte general de estado de cuenta de todos los integrantes de la nmina
para un perodo de pago en particular.
Pre-condiciones:
Curso normal de los eventos
Accin de los actores
Respuesta del sistema
1. Muestra la ventana de opciones de
impresin.
2. Selecciona la opcin aceptar.
a) Si selecciona la opcin cancelar ver
seccin 1.
3. Genera el reporte general de estados de
cuenta para todos los integrantes de la
nmina (empleados) y enva el
documento a la impresora.
4. Cierra la ventana de opciones de
impresin.
Flujos alternativos
Seccin 1:
1. Si selecciona la opcin cancelar.
2. Cancela la operacin y cierra la
ventana de opciones de impresin.

3,00cm

3,00cm

Ventana aplicacion

Ventana inicio sesion

Secretaria de pagos
Seleccionar iniciar sesion
Mostrar ventana inicio sesion
Introducir datos sesin
Seleccionar aceptar
Verificar usuario
Activa ventana aplicacin

Seleccionar cancelar

Desactivar ventana principal


Mensaje1

3,0
0cm
B3 - Diagrama de secuencia iniciar sesin.

3,00cm

Ventana aplicacin

Ventana abrir nmina

Secretaria de pagos
Abrir nmina
Mostrar ventana abrir nmina

Cargar listado nmina disponibles

Seleccionar nmina
Seleccionar el perodo de pago
Selecciona la opcin aceptar
Abre la nmina seleccionada

Cargar periodo de pago seleccionado

Cargar conceptos de nmina

Cargar nmina

Seleccionar crear nueva nmina o pool


Crear nueva nmina o pool

Selecciona opcin cancelar

3,00cm

B4 - Diagrama de secuencia abrir nmina.

3,00cm

Ventana aplicacin

Ventana crear nmina

Secretaria de pagos
Seleccionar crear nueva nmina
Mostrar ventana crear nmina

Ingresa datos de la nmina


Selecciona la frecuencia de la nmina

Selecciona la opcin aceptar


Crea la nmina nueva

Mostrar mensaje de nmina creada

Selecciona la opcin cancelar

B5 - Diagrama de secuencia crear nueva nmina o pool.

3,00cm

Ventana aplicacin

Ventana agregar frmula

Secretaria de pagos
Agregar formula de calculo
Mostrar ventana agregar formula de calculo
Ingresa datos formula de calculo

Selecciona la opcin aceptar


Agregar formula de calculo

Selecciona la opcin cancelar

B6 - Diagrama de secuencia agregar empleado a la nmina.

3,00cm

Ventana aplicacin

Ventana empleado

Secretaria de pagos
Agregar empleado
Mostrar ventana para agregar empleado
Ingresa informacin de empleado

Selecciona la opcin aceptar


Agregar un nuevo empleado al sistema

Notificar empleado agregado al sistema

Selecciona opcin cancelar

B7 - Diagrama de secuencia agregar empleado al sistema.

3,00cm

Ventana aplicacin

Ventana asignar concepto

Ventana seleccionar empleado

Secretaria de pagos
Agregar concepto
Mostrar ventana agregar concepto a empleado

Cargar informacin empleado seleccionado


Ingresar cdula de empleado
Mostrar ventana seleccion empleado
Buscar empleados
Selecciona un empleado
Selecciona la opcin aceptar

Selecciona concepto de nmina


Ingresa informacin del concepto

Selecciona la opcin aceptar


Asignar concepto a empleado

Selecciona la opcin cancelar

B8 - Diagrama de secuencia asignar concepto a empleado.

3,00cm

Ventana aplicacin

Ventana agregar frmula

Secretaria de pagos
Agregar formula de calculo
Mostrar ventana agregar formula de calculo
Ingresa datos formula de calculo

Selecciona la opcin aceptar


Agregar formula de calculo

Selecciona la opcin cancelar

B9 - Diagrama de secuencia agregar frmula de clculo.

3,00cm

Ventana aplicacin

Ventana opciones de impresin

Secretaria de pagos
Imprimir reporte de empleado
Mostrar ventana opciones de impresin
Selecciona las opciones de impresin

Selecciona la opcin aceptar


Imprime reporte de empleado

Selecciona la opcin cancelar

B10 Diagrama de secuencia Imprimir reporte de empleado.

3,00cm

Ventana aplicacin

Ventana opciones de impresin

Secretaria de pagos
Imprimir comprobante de pago de nmina
Mostrar ventana opciones de impresin
Selecciona las opciones de impresin

Selecciona la opcin aceptar


Imprime comprobante de pago de nmina

Selecciona la opcin cancelar

B11 Diagrama de secuencia Imprimir comprobante de pago de nmina.

3,00cm

Ventana aplicacin

Ventana opciones de impresin

Secretaria de pagos
Imprimir reporte general de nmina
Mostrar ventana opciones de impresin
Selecciona las opciones de impresin

Selecciona la opcin aceptar


Imprime reporte general de nmina

Selecciona la opcin cancelar

B12 Diagrama de secuencia Imprimir reporte general de nmina.

3,00cm

Comprobante

Formula
TipoDato
PK,I1

FormulaID
PK,I1

FK1

Nombre
Descripcion
Definicion
TipoDatoID
DeleteFlag
CreateDateTime
ModifyDateTime

TipoDatoID

PK

ComprobanteID

FK2

PeriodoID
CierreID
MiembroNominaID
DeleteFlag
CreateDateTime
ModifyDateTime

FK1

Descripcion
DeleteFlag
CreateDateTime
ModifyDateTime

Departamento
Nomina
PK,I1

PK

FormaPago

NominaID

PK

Nombre
Descripcion
Frecuencia
Activa
Comentario
DeleteFlag
CreateDateTime
ModifyDateTime

Descripcion
Observaciones
NoControlIngreso
NoControlEgreso
NoControlPresupuesto
DeleteFlag
CreateDateTime
ModifyDateTime

FormaPagoID

MiembroNomina
PK

MiembroNominaID

FK1,I1
FK3,I1

EmpleadoID
NominaID
Cuenta
FormaPagoID
DeleteFlag
CreateDateTime
ModifyDateTime

FK2

Nombre
Descripcion
RequiereDetallesPago
DeleteFlag
CreateDateTime
ModifyDateTime

Movimiento

Periodo
PK

PeriodoID

FK1

NominaID
FechaInicio
FechaFinal
FechaCierre
DeleteFlag
CreateDateTime
ModifyDateTime

PK

MovimientoID

FK1,I1
FK3,I1
FK4,I1
FK2
I1

ConceptoID
EmpleadoID
NominaID
PeriodoID
Fecha
Descripcion
Monto
DeleteFlag
CreateDateTime
ModifyDateTime

Empleado
PK,I1

EmpleadoID

FK3
FK1
FK2

PersonaID
CargoID
DepartamentoID
FechaIngreso
SalarioEspecial
EstadoLaboral
DiasVacaciones
Observaciones
DeleteFlag
CreateDateTime
ModifyDateTime

Persona

Cierre
PK

CierreNumber

FK1,I1
FK2,I1

NominaID
PeriodoID
UsuarioNumber
Saldo
DeleteFlag
CreateDateTime
ModifyDateTime

Concepto
PK,I1

ConceptoID

FK2,I1
FK3,I1
FK1,I1
I1

FormulaID
NominaID
EmpleadoID
Fecha
FechaInicio
Dato
Frecuencia
Monto
Saldo
FormaDescuento
Estado
Observaciones
DeleteFlag
CreateDateTime
ModifyDateTime

PK

DepartamentoID

PersonaID
Cedula
Nombres
Apellidos
FechaNacimiento
Fotografia
Direccion
TelefonoHabitacion
TelefonoMovil
Sexo
EstadoCivil
Extranjero
Observaciones
DeleteFlag
CreateDateTime
ModifyDateTime

B13 - Modelo fsico de la base de datos del Subsistema Nmina.

Cargo
PK,I1

CargoID
Nombre
Descripcion
SalarioDiario
HorasJornada
DeleteFlag
CreateDateTime
ModifyDateTime

B14 - Diccionario de datos para el Subsistema Nmina.


Tabla 1. Nmina
Campo
NominaID
Nombre
Descripcion
Frecuencia
Activa
Comentario

TABLA NOMINA
Tipo
Longitud
integer
4
varchar
50
varchar
255
integer
4
bit
1
varchar
255

Obligatorio
S
S

Tabla 2. Perodo
Campo
PeriodoID
NominaID
FechaInicio
FechaFinal

TABLA PERIODO
Tipo
Longitud
integer
4
integer
4
DateTime
8
DateTime
8

Obligatorio
S
S
S

Tabla 3. Departamento
Campo
DepartamentoID
Descripcion
Observaciones
NoControlIngreso
NoControlEgreso
NoControlPresupuesto

TABLA DEPARTAMENTO
Tipo
Longitud
integer
4
varchar
50
varchar
255
integer
4
integer
4
integer
4

Obligatorio
S
S

Tabla 4. Persona
Campo
PersonaID
Cedula
Nombres
Apellidos
FechaNacimiento
Fotografia
Direccion
TelefonoHabitacion
TelefonoMovil
Sexo
Tabla 4. Continuacin
EstadoCivil
Extranjero
Observaciones

TABLA PERSONA
Tipo
Longitud
integer
4
varchar
50
varchar
255
integer
4
bit
1
image
255
varchar
255
varchar
15
varchar
15
Int
4
Int
bit
varchar

4
1
255

Obligatorio
S
S
S
S

EstadoCivil

Int

Tabla 5. Miembronomina
Campo
MiembroNominaID
EmpleadoID
NominaID

TABLA MIEMBRONOMINA
Tipo
Longitud
integer
4
integer
4
integer
4

Obligatorio
S
S
S

Tabla 6. Tipodato
Campo
TipoDatoID
Descripcion

TABLA TIPODATO
Tipo
Longitud
integer
4
varchar
255

Obligatorio
S

Tabla 7. Movimiento
Campo
MovimientoID
ConceptoID
EmpleadoID
NominaID
PeriodoID
Fecha
Descripcion
Monto

TABLA MOVIMIENTO
Tipo
Longitud
integer
4
integer
4
integer
4
integer
4
integer
4
datetime
8
varchar
255
money
8

Obligatorio
S
S
S
S
S

Tabla 8. Empleado
Campo
EmpleadoID
PersonaID
DepartamentoID
FechaIngreso
SalarioEspecial
EstadoLaboral
DiasVacaciones
Observaciones

TABLA EMPLEADO
Tipo
Longitud
integer
4
integer
4
integer
4
datetime
8
money
8
integer
4
integer
4
varchar
255

Obligatorio
S
S
S
S

Tabla 9. Cargo
Campo
CargoID
Nombre
Descripcion
SalarioDiario
HorasJornada

TABLA CARGO
Tipo
Longitud
integer
4
varchar
50
varchar
255
money
8
integer
4

Obligatorio
S
S

Tabla 10. Concepto


Campo
ConceptoID
FormulaID
NominaID
EmpleadoID
Fecha
FechaInicio
Dato
Frecuencia
Monto
Saldo
FormaDescuento
Estado
Observaciones

TABLA CONCEPTO
Tipo
Longitud
integer
4
integer
4
integer
4
integer
4
datetime
8
datetime
8
integer
4
integer
4
money
8
money
8
varchar
100
bit
1
varchar
255

Obligatorio
S
S
S
S
S
S
S

Tabla 11. Frmula


Campo
FormulaID
Nombre
Descripcion
Definicion
TipoDatoID

TABLA FORMULA
Tipo
Longitud
integer
4
varchar
50
varchar
255
varchar
255
integer
1

Obligatorio
S
S

IOBPCargo::CCargo
-_CargoID : Integer
-_Nombre : String
-_Descripcion : String
-_Salario : Decimal
-_HorasJornada : Integer

IOBPCargo::CargoPersistente

+Hierarchy() : ColCargo
+CargoID() : Integer
+Salario() : Decimal
+HorasJornada() : Integer
+New()
+OnCambiandoPropiedad()
+OnPropiedadCambio()
+CambiandoPropiedad(entrada origen : Object, entrada e : EventArgs)
+PropiedadCambio(entrada origen : Object, entrada e : EventArgs)
+CargoIDCambio()
+NombreCambio()
+DescripcionCambio()
+SalarioCambio()
+HorasJornadaCambio()

#ActualizarColeccion_Con_DatosDevueltos(entrada reader : SqlDataReader, entrada y salida entidad : Entidad)


#PrepararDatos_Para_Insertar(entrada entidad : Entidad, entrada y salida comandoSQL : SqlCommand) : Object
#ProcAlmacenado_Insertar() : String
#ProcAlmacenado_Eliminar() : String
#ProcAlmacenado_Actualizar() : String
#PrepararDatos_para_Borrar(entrada oEntidad : Entidad, entrada y salida oComandoSQL : SqlCommand) : Object
#PrepararDatos_para_Actualizar(entrada oEntidad : Entidad, entrada y salida oComandoSQL : SqlCommand) : Object
+New(entrada y salida coleccion : ColCargo)

IOBPCargo::ColCargo
-_IndiceSeleccionado : Integer = Sach.Componente.IOBPCargo.modCargo.NO_HAY_SELECCIONADO
-_Ordenada : Integer = -1
+Comparar(entrada obj1 : Object, entrada obj2 : Object, entrada campo : Integer) : Integer
+OrdenarElementos(entrada elemento1 : Integer, entrada elemento2 : Integer)
+Ordenar()
+ProgresoOrdenamiento(entrada progreso : Integer, entrada total : Integer)
+OrdenadoPor() : OrdenadoPor
+IndiceSeleccionado() : Integer
+ElementoSeleccionado() : CCargo
+Elementos(entrada Indice : Integer) : CCargo
+Agregar(entrada CargoID : Integer, entrada Nombre : String, entrada Descripcion : String, entrada SalarioDiario : Decimal, entrada HorasJornada : Integer) : Integer
+Agregar(entrada Cargo : CCargo) : Integer
+New()

IOBPCargo::IOBPFabricaCargo

#CrearInstanciaDeClase() : Entidad
#CrearInstanciaDeColeccion() : ColeccionEntidades
#ProcAlmacenadoSeleccionar() : String
#AsignarDatosAClase(entrada y salida entidad : Entidad, entrada y salida reader : SqlDataReader)
+Obtener(entrada tokenSeguridad : String, entrada cargoID : Integer = SIN_PARAMETRO_OPCIONAL) : ColCargo
+Buscar(entrada tokenSeguridad : String, entrada cargoID : Integer = SIN_PARAMETRO_OPCIONAL, entrada recuperarRegistros : Registros = Registros.NoBorrados) : ColCargo
+Nuevo(entrada tokenSeguridad : String) : ColCargo
+New()

B15 - Diagrama de estructura esttica del componente Cargo.

enumeracin
IOBPCargo::OrdenadoPor
+SinOrden = -1
+CargoID = 0
+Nombre = 1
+Descripcion = 2
+Salario = 3
+HorasJornada = 4

IOBPConcepto::IOBPFabricaConcepto

IOBPConcepto::CConcepto
-_ConceptoID : Integer
-_FormulaID : Integer
-_NominaID : Integer
-_EmpleadoID : Integer
-_Fecha : Date
-_FechaInicio : Date
-_Dato : Integer
-_Frecuencia : Integer
-_Monto : Decimal
-_Saldo : Decimal
-_FormaDescuento : String
-_Activa : Boolean
-_Observaciones : String
-_Formulas : ColFormula
-_Movimientos : ColMovimiento
-_Empleados : ColEmpleado
#ActualizarComponentesDerivados()
+Hierarchy() : ColConcepto
+ConceptoID() : Integer
+FormulaID() : Integer
+NominaID() : Integer
+EmpleadoID() : Integer
+Fecha() : Date
+FechaInicio() : Date
+Dato() : Integer
+Frecuencia() : TiposConcepto
+Estado() : Estado
+Monto() : Decimal
+Saldo() : Decimal
+MontoCalculado(entrada frecuencia : Integer) : Decimal
+Formula() : CFormula
+Empleado() : CEmpleado
+Movimientos() : ColMovimiento
+Movimiento() : CMovimiento
+Descuento() : Decimal
+EsPercepcion() : Boolean
+EsDeduccion() : Boolean
+EsPrestamo() : Boolean
+EsCalculoFijo() : Boolean
+New()
+OnCambiandoPropiedad()
+OnPropiedadCambio()
+CambiandoPropiedad(entrada origen : Object, entrada e : EventArgs)
+PropiedadCambio(entrada origen : Object, entrada e : EventArgs)
+ConceptoIDCambio()
+FormulaIDCambio()
+NominaIDCambio()
+EmpleadoIDCambio()
+FechaCambio()
+FechaInicioCambio()
+DatoCambio()
+FrecuenciaCambio()
+MontoCambio()
+ActivaCambio()
+SaldoCambio()
+ObservacionesCambio()

#CrearInstanciaDeClase() : Entidad
#CrearInstanciaDeColeccion() : ColeccionEntidades
#ProcAlmacenadoSeleccionar() : String
#AsignarDatosAClase(entrada y salida entidad : Entidad, entrada y salida reader : SqlDataReader)
+Obtener(entrada tokenSeguridad : String, entrada conceptoID : Integer = SIN_PARAMETRO_OPCIONAL) : ColConcepto
+Buscar(entrada tokenSeguridad : String, entrada conceptoID : Integer, entrada formulaID : Integer, entrada nominaID : Integer, entrada empleadoID : Integer, entrada Fecha : Date, entrada FechaInicio : Date, entrada Dato : Integer, entrada Monto : Decimal, entrada Saldo : Decimal, entrada Frecuencia : Integer, entrada Estado : EstadoConcepto, entrada recuperarRegistros : Registros) : ColConcepto
+Nuevo(entrada tokenSeguridad : String) : ColConcepto
+New()

instance

enumeracinIOBPConcepto::OrdenadoPor

enumeracin
IOBPConcepto::EstadoConcepto
+Inactivo = 0
+Activo = 1
+Todos = 2

+SinOrden = -1
+ConceptoID = 0
+FormulaID
+NominaID
+EmpleadoID
+Fecha
+FechaInicio
+Dato
+Frecuencia
+Monto
+Saldo
+FormaDescuento
+Activa

instance
enumeracinIOBPConcepto::TiposConcepto
+Unico = 0
+FijoPrimeraQuincena = 1
+FijoSegundaQuincena = 2
+FijoTodasQuincenas = 3

IOBPConcepto::ConceptoPersistente

enumeracinIOBPConcepto::Estado
+Activo = -1
+Inactivo = 0

#ActualizarColeccion_Con_DatosDevueltos(entrada reader : SqlDataReader, entrada y salida entidad : Entidad)


#PrepararDatos_Para_Insertar(entrada entidad : Entidad, entrada y salida comandoSQL : SqlCommand) : Object
#ProcAlmacenado_Insertar() : String
#ProcAlmacenado_Eliminar() : String
#ProcAlmacenado_Actualizar() : String
+New(entrada y salida coleccion : ColConcepto)
#PrepararDatos_para_Borrar(entrada oEntidad : Entidad, entrada y salida oComandoSQL : SqlCommand) : Object
#PrepararDatos_para_Actualizar(entrada oEntidad : Entidad, entrada y salida oComandoSQL : SqlCommand) : Object

IOBPConcepto::ColConcepto
-_IndiceSeleccionado : Integer = Sach.Componente.IOBPConcepto.modConcepto.NO_HAY_SELECCIONADO
-_Ordenada : Integer = -1
+Comparar(entrada obj1 : Object, entrada obj2 : Object, entrada campo : Integer) : Integer
+OrdenarElementos(entrada elemento1 : Integer, entrada elemento2 : Integer)
+ProgresoOrdenamiento(entrada progreso : Integer, entrada total : Integer)
+OrdenadoPor() : OrdenadoPor
+IndiceSeleccionado() : Integer
+ElementoSeleccionado() : CConcepto
+Elementos(entrada Indice : Integer) : CConcepto
+Agregar(entrada ConceptoID : Integer, entrada NominaID : Integer, entrada EmpleadoID : Integer, entrada Fecha : Date, entrada FormulaID : Integer, entrada FechaInicio : Date, entrada Dato : Integer, entrada Frecuencia : Integer, entrada FormaDescuento : String, entrada Monto : Decimal, entrada Saldo : Decimal, entrada Activo : Boolean, entrada Observaciones : String) : Integer
+Agregar(entrada Concepto : CConcepto) : Integer
+MarcarParaBorrar(entrada conceptoID : Integer) : Boolean
+Recuperar(entrada conceptoID : Integer) : Boolean
+Buscar(entrada conceptoID : Integer) : CConcepto
+OrdenarPor()
+New()

B16 Diagrama de estructura esttica del componente Concepto de Nmina.

IOBPDepartamento::ColDepartamento
-_IndiceSeleccionado : Integer = Sach.Componente.IOBPDepartamento.modDepartamento.NO_HAY_SELECCIONADO
-_Ordenada : Integer = -1
IOBPDepartamento::CDepartamento
-_DepartamentoID : Integer
-_Descripcion : String
-_Observaciones : String
+Hierarchy() : ColDepartamento
+DepartamentoID() : Integer
+New()
+OnCambiandoPropiedad()
+OnPropiedadCambio()
+CambiandoPropiedad(entrada origen : Object, entrada e : EventArgs)
+PropiedadCambio(entrada origen : Object, entrada e : EventArgs)
+DepartamentoIDCambio()
+DescripcionCambio()
+ObservacionesCambio()

instance

+Comparar(entrada obj1 : Object, entrada obj2 : Object, entrada campo : Integer) : Integer
+OrdenarElementos(entrada elemento1 : Integer, entrada elemento2 : Integer)
+Ordenar()
+ProgresoOrdenamiento(entrada progreso : Integer, entrada total : Integer)
+OrdenadoPor() : OrdenadoPor
+IndiceSeleccionado() : Integer
+ElementoSeleccionado() : CDepartamento
+Elementos(entrada Indice : Integer) : CDepartamento
+Agregar(entrada departamentoID : Integer, entrada descripcion : String, entrada observaciones : String = "") : Object
+Agregar(entrada Departamento : CDepartamento) : Integer
+MarcarParaBorrar(entrada departamentoID : Integer) : Boolean
+Recuperar(entrada departamentoID : Integer) : Boolean
+Buscar(entrada departamentoID : Integer) : CDepartamento
+New()
IOBPDepartamento::DepartamentoPersistente

#ActualizarColeccion_Con_DatosDevueltos(entrada reader : SqlDataReader, entrada y salida entidad : Entidad)


#PrepararDatos_Para_Insertar(entrada entidad : Entidad, entrada y salida comandoSQL : SqlCommand) : Object
#ProcAlmacenado_Insertar() : String
#ProcAlmacenado_Eliminar() : String
#ProcAlmacenado_Actualizar() : String
+New(entrada y salida coleccion : ColDepartamento)
#PrepararDatos_para_Borrar(entrada oEntidad : Entidad, entrada y salida oComandoSQL : SqlCommand) : Object
#PrepararDatos_para_Actualizar(entrada oEntidad : Entidad, entrada y salida oComandoSQL : SqlCommand) : Object

instance

IOBPDepartamento::IOBPFabricaDepartamento

#CrearInstanciaDeClase() : Entidad
#CrearInstanciaDeColeccion() : ColeccionEntidades
#ProcAlmacenadoSeleccionar() : String
#AsignarDatosAClase(entrada y salida entidad : Entidad, entrada y salida reader : SqlDataReader)
+Obtener(entrada tokenSeguridad : String, entrada departamentoID : Integer = SIN_PARAMETRO_OPCIONAL) : ColDepartamento
+Buscar(entrada tokenSeguridad : String, entrada departamentoID : Integer = SIN_PARAMETRO_OPCIONAL, entrada recuperarRegistros : Registros = Registros.NoBorrados) : ColDepartamento
+Nuevo(entrada tokenSeguridad : String) : ColDepartamento
+New()

B17 Diagrama de estructura esttica del componente Departamento.

CCierre

ColCierre

-_CierreID : Integer
-_nominaID : Integer
-_periodoID : Integer
-_usuarioID : Integer
-_saldo : Decimal
-_Nombre : String

-_IndiceSeleccionado : Integer = ModeloComponentes.Nomina.IOBPCierre.modCierre.NO_HAY_SELECCIONADO


-_Ordenada : Integer

+OnNotificar(entrada descripcion : String)


+OnNotificarError(entrada origen : String, entrada descripcion : String)
+OnNotificarErrorControlado(entrada origen : String, entrada descripcion : String)
+OnNotificarErrorNoControlado(entrada origen : String, entrada descripcion : String)
+Notificar(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+NotificarError(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+NotificarErrorControlado(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+NotificarErrorNoControlado(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+UsuarioID() : Integer
+Saldo() : Decimal
+Hierarchy() : ColCierre
+New()
+OnCambiandoPropiedad()
+OnPropiedadCambio()
+CambiandoPropiedad(entrada origen : Object, entrada e : EventArgs)
+PropiedadCambio(entrada origen : Object, entrada e : EventArgs)
+CierreIDCambio()
+NominaIDCambio()
+PeriodoIDCambio()
+UsuarioIDCambio()
+SaldoCambio()

instance

utilitymodCierre
+NO_HAY_SELECCIONADO : Integer = 0
+PA_SELECCIONAR_CIERRE : String = "spSCierre"
+PA_INSERTAR_CIERRE : String = "spICierre"
+PA_ELIMINAR_CIERRE : String = "spDCierre"
+PA_ACTUALIZAR_CIERRE : String = "spUCierre"
+FN_CIERREID : String = "CierreID"
+PARAMNOM_CIERREID : String = "@CierreID"
+PARAMNUM_CIERREID : Integer = 0
+PARAMTIP_CIERREID : SqlDbType = System.Data.SqlDbType.Int
+FN_NOMINAID : String = "NominaID"
+PARAMNOM_NOMINAID : String = "@NominaID"
+PARAMNUM_NOMINAID : Integer = 1
+PARAMTIP_NOMINAID : SqlDbType = System.Data.SqlDbType.Int
+FN_PERIODOID : String = "PeriodoID"
+PARAMNOM_PERIODOID : String = "@PeriodoID"
+PARAMNUM_PERIODOID : Integer = 2
+PARAMTIP_PERIODOID : SqlDbType = System.Data.SqlDbType.Int
+FN_USUARIOID : String = "UsuarioNumber"
+PARAMNOM_USUARIOID : String = "@UsuarioNumber"
+PARAMNUM_USUARIOID : Integer = 3
+PARAMTIP_USUARIOID : SqlDbType = System.Data.SqlDbType.Int
+FN_SALDO : String = "Saldo"
+PARAMNOM_SALDO : String = "@Saldo"
+PARAMNUM_SALDO : Integer = 4
+PARAMTIP_SALDO : SqlDbType = System.Data.SqlDbType.Decimal
+PARAMNUM_DELETEFLAG : Integer = 5
+PARAMNUM_CREATEDATE : Integer = 6
+PARAMNUM_MODIFYDATE : Integer = 7

+Progreso(entrada args : ProgresoEventArgs)


+OnNotificar(entrada descripcion : String)
+OnNotificarError(entrada origen : String, entrada descripcion : String)
+OnNotificarErrorControlado(entrada origen : String, entrada descripcion : String)
+OnNotificarErrorNoControlado(entrada origen : String, entrada descripcion : String)
+Notificar(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+NotificarError(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+NotificarErrorControlado(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+NotificarErrorNoControlado(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+Comparar(entrada obj1 : Object, entrada obj2 : Object, entrada campo : Integer) : Integer
+OrdenarElementos(entrada elemento1 : Integer, entrada elemento2 : Integer)
+Ordenar()
+ProgresoOrdenamiento(entrada progreso : Integer, entrada total : Integer)
+Count() : Integer
+GetEnumerator() : IEnumerator
+Agregar(entrada cierreID : Integer, entrada nominaID : Integer, entrada periodoID : Integer, entrada usuarioID : Integer, entrada saldo : Decimal) : Integer
+MarcarParaBorrar(entrada cierreID : Integer) : Boolean
+Recuperar(entrada cierreID : Integer) : Boolean
+Remover(entrada indice : Integer) : Boolean
+OrdenadoPor() : OrdenadoPor
+Elementos(entrada Indice : Integer) : CCierre
+Agregar(entrada Cierre : CCierre) : Integer
+Buscar(entrada cierreID : Integer) : CCierre
+New()
+FinalizarProceso(entrada args : ProgresoEventArgs)
+IniciarProceso(entrada args : ProgresoEventArgs)

enumeracin
OrdenadoPor
+SinOrden = -1
+CierreID = 0
+PeriodoID

instance
CierrePersistente

#ActualizarColeccion_Con_DatosDevueltos(entrada reader : SqlDataReader, entrada y salida entidad : Entidad)


#PrepararDatos_Para_Insertar(entrada entidad : Entidad, entrada y salida comandoSQL : SqlCommand) : Object
#ProcAlmacenado_Insertar() : String
#ProcAlmacenado_Eliminar() : String
#ProcAlmacenado_Actualizar() : String
#PrepararDatos_para_Borrar(entrada oEntidad : Entidad, entrada y salida oComandoSQL : SqlCommand) : Object
#PrepararDatos_para_Actualizar(entrada oEntidad : Entidad, entrada y salida oComandoSQL : SqlCommand) : Object
+New(entrada y salida coleccion : ColCierre)

IOBPFabricaCierre

#CrearInstanciaDeClase() : Entidad
#CrearInstanciaDeColeccion() : ColeccionEntidades
#ProcAlmacenadoSeleccionar() : String
#AsignarDatosAClase(entrada y salida entidad : Entidad, entrada y salida reader : SqlDataReader)
+Obtener(entrada tokenSeguridad : String, entrada CierreID : Integer = SIN_PARAMETRO_OPCIONAL) : ColCierre
+Buscar(entrada tokenSeguridad : String, entrada cierreID : Integer = SIN_PARAMETRO_OPCIONAL, entrada nominaID : Integer = SIN_PARAMETRO_OPCIONAL, entrada periodoID : Integer = SIN_PARAMETRO_OPCIONAL, entrada usuarioID : Integer = SIN_PARAMETRO_OPCIONAL, entrada saldo : Integer = SIN_PARAMETRO_OPCIONAL, entrada recuperarRegistros : Registros = Tipos.Registros.NoBorrados) : ColCierre
+Nuevo(entrada tokenSeguridad : String) : ColCierre
+New()

B18 Diagrama de estructura esttica del componente Cierre de Nmina.

IOBPEmpleado::CEmpleado

IOBPEmpleado::ColEmpleado

-_EmpleadoID : Integer
-_FechaIngreso : Date
-_SalarioEspecial : Decimal
-_EstadoLaboral : Integer
-_DiasVacaciones : Byte
-_CargoID : Integer
-_DepartamentoID : Integer
-_Departamento : ColDepartamento
-_PersonaID : Integer
-_Observaciones : String
-_Cargo : ColCargo
-_Persona : ColPersona

-_IndiceSeleccionado : Integer = ModeloComponentes.Compartidos.IOBPEmpleado.modEmpleado.NO_HAY_SELECCIONADO


-_Ordenada : Integer
+Progreso()
+OnNotificar()
+OnNotificarError()
+OnNotificarErrorControlado()
+OnNotificarErrorNoControlado()
+Notificar()
+NotificarError()
+NotificarErrorControlado()
+NotificarErrorNoControlado()
+Comparar()
+OrdenarElementos()
+Ordenar()
+ProgresoOrdenamiento()
+Count()
+GetEnumerator()
+Agregar()
+MarcarParaBorrar()
+Recuperar()
+Remover()
+OrdenadoPor()
+Elementos()
+Agregar()
+Buscar()
+New()
+FinalizarProceso()
+IniciarProceso()

#ActualizarComponentesDerivados()
+Persona() : ICPersona
+Cargo() : ICCargo
+Departamento() : ICDepartamento
+FechaIngreso() : Date
+SalarioEspecial() : Decimal
+EstadoLaboral() : EstadoLaborales
+Observaciones() : String
+AnosServicio() : Integer
+TieneObservacion() : Boolean
+Hierarchy() : ColEmpleado
+New()
+OnCambiandoPropiedad()
+OnPropiedadCambio()
+CambiandoPropiedad(entrada origen : Object, entrada e : EventArgs)
+PropiedadCambio(entrada origen : Object, entrada e : EventArgs)
+EmpleadoIDCambio()
+FechaIngresoCambio()
+SalarioEspecialCambio()
+EstadoLaboralCambio()
+DiasVacacionesCambio()
+CargoIDCambio()
+DepartamentoIDCambio()
+PersonaIDCambio()
+ObservacionesCambio()

utilityIOBPEmpleado::modEmpleado

IOBPEmpleado::EmpleadoPersistente

#ActualizarColeccion_Con_DatosDevueltos(entrada reader : SqlDataReader, entrada y salida entidad : Entidad)


#PrepararDatos_Para_Insertar(entrada entidad : Entidad, entrada y salida comandoSQL : SqlCommand) : Object
#ProcAlmacenado_Insertar() : String
#ProcAlmacenado_Eliminar() : String
#ProcAlmacenado_Actualizar() : String
#PrepararDatos_para_Borrar(entrada oEntidad : Entidad, entrada y salida oComandoSQL : SqlCommand) : Object
#PrepararDatos_para_Actualizar(entrada oEntidad : Entidad, entrada y salida oComandoSQL : SqlCommand) : Object
instance
+New(entrada y salida coleccion : ColEmpleado)

enumeracinIOBPEmpleado::OrdenadoPor
+SinOrden = -1
+EmpleadoID = 0
+NombreCompleto
+NombreCorto

instance

IOBPEmpleado::IOBPFabricaEmpleado

#CrearInstanciaDeClase()
#CrearInstanciaDeColeccion()
#ProcAlmacenadoSeleccionar()
#AsignarDatosAClase()
+Obtener()
+Buscar()
+Nuevo()
+New()

B19 Diagrama de estructura esttica del componente Empleado.

+NO_HAY_SELECCIONADO : Integer = 0
+PA_SELECCIONAR_EMPLEADO : String = "spSEmpleado"
+PA_INSERTAR_EMPLEADO : String = "spIEmpleado"
+PA_ELIMINAR_EMPLEADO : String = "spDEmpleado"
+PA_ACTUALIZAR_EMPLEADO : String = "spUEmpleado"
+FN_EMPLEADOID : String = "EmpleadoID"
+PARAMNOM_EMPLEADOID : String = "@EmpleadoID"
+PARAMNUM_EMPLEADOID : Integer = 0
+PARAMTIP_EMPLEADOID : SqlDbType = System.Data.SqlDbType.Int
+FN_PERSONAID : String = "PersonaID"
+PARAMNOM_PERSONAID : String = "@PersonaID"
+PARAMNUM_PERSONAID : Integer = 1
+PARAMTIP_PERSONAID : SqlDbType = System.Data.SqlDbType.Int
+FN_CARGOID : String = "CargoID"
+PARAMNOM_CARGOID : String = "@CargoID"
+PARAMNUM_CARGOID : Integer = 2
+PARAMTIP_CARGOID : SqlDbType = System.Data.SqlDbType.Int
+FN_DEPARTAMENTOID : String = "DepartamentoID"
+PARAMNOM_DEPARTAMENTOID : String = "@DepartamentoID"
+PARAMNUM_DEPARTAMENTOID : Integer = 3
+PARAMTIP_DEPARTAMENTOID : SqlDbType = System.Data.SqlDbType.Int
+FN_FECHAINGRESO : String = "FechaIngreso"
+PARAMNOM_FECHAINGRESO : String = "@FechaIngreso"
+PARAMNUM_FECHAINGRESO : Integer = 4
+PARAMTIP_FECHAINGRESO : SqlDbType = System.Data.SqlDbType.DateTime
+FN_SALARIOESPECIAL : String = "SalarioEspecial"
+PARAMNOM_SALARIOESPECIAL : String = "@SalarioEspecial"
+PARAMNUM_SALARIOESPECIAL : Integer = 5
+PARAMTIP_SALARIOESPECIAL : SqlDbType = System.Data.SqlDbType.Decimal
+FN_ESTADOLABORAL : String = "EstadoLaboral"
+PARAMNOM_ESTADOLABORAL : String = "@EstadoLaboral"
+PARAMNUM_ESTADOLABORAL : Integer = 6
+PARAMTIP_ESTADOLABORAL : SqlDbType = System.Data.SqlDbType.Int
+FN_DIASVACACIONES : String = "DiasVacaciones"
+PARAMNOM_DIASVACACIONES : String = "@DiasVacaciones"
+PARAMNUM_DIASVACACIONES : Integer = 7
+PARAMTIP_DIASVACACIONES : SqlDbType = System.Data.SqlDbType.Int
+FN_OBSERVACIONES : String = "Observaciones"
+PARAMNOM_OBSERVACIONES : String = "@Observaciones"
+PARAMNUM_OBSERVACIONES : Integer = 8
+PARAMTIP_OBSERVACIONES : SqlDbType = System.Data.SqlDbType.VarChar
+PARAMNUM_DELETEFLAG : Integer = 9
+PARAMNUM_CREATEDATE : Integer = 10
+PARAMNUM_MODIFYDATE : Integer = 11

IOBPMiembroNomina::ColMiembroNomina

IOBPMiembroNomina::CMiembroNomina

-_IndiceSeleccionado : Integer = ModeloComponentes.Nomina.IOBPMiembroNomina.modMiembroNomina.NO_HAY_SELECCIONADO


-_Ordenada : Integer

-_MiembroNominaID : Integer
-_EmpleadoID : Integer
-_Empleado : ColEmpleado
-_NominaID : Integer

+Progreso(entrada args : ProgresoEventArgs)


+OnNotificar(entrada descripcion : String)
+OnNotificarError(entrada origen : String, entrada descripcion : String)
+OnNotificarErrorControlado(entrada origen : String, entrada descripcion : String)
+OnNotificarErrorNoControlado(entrada origen : String, entrada descripcion : String)
+Notificar(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+NotificarError(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+NotificarErrorControlado(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+NotificarErrorNoControlado(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+Comparar(entrada obj1 : Object, entrada obj2 : Object, entrada campo : Integer) : Integer
+OrdenarElementos(entrada elemento1 : Integer, entrada elemento2 : Integer)
+Ordenar()
+ProgresoOrdenamiento(entrada progreso : Integer, entrada total : Integer)
+Count() : Integer
+GetEnumerator() : IEnumerator
+Agregar(entrada miembroNominaID : Integer, entrada empleadoID : Integer, entrada nominaID : Integer) : Integer
+MarcarParaBorrar(entrada miembroNominaID : Integer) : Boolean
+Recuperar(entrada miembroNominaID : Integer) : Boolean
+Remover(entrada indice : Integer) : Boolean
+OrdenadoPor() : OrdenadoPor
+Elementos(entrada Indice : Integer) : CMiembroNomina
+Agregar(entrada MiembroNomina : CMiembroNomina) : Integer
+Buscar(entrada nominaID : Integer) : CMiembroNomina
+New()
+FinalizarProceso(entrada args : ProgresoEventArgs)
+IniciarProceso(entrada args : ProgresoEventArgs)

+OnNotificar(entrada descripcion : String)


+OnNotificarError(entrada origen : String, entrada descripcion : String)
+OnNotificarErrorControlado(entrada origen : String, entrada descripcion : String)
+OnNotificarErrorNoControlado(entrada origen : String, entrada descripcion : String)
+Notificar(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+NotificarError(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+NotificarErrorControlado(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+NotificarErrorNoControlado(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+Empleado() : ICEmpleado
+NominaID() : Integer
+Hierarchy() : ColMiembroNomina
+New()
+OnCambiandoPropiedad()
+OnPropiedadCambio()
+CambiandoPropiedad(entrada origen : Object, entrada e : EventArgs)
+PropiedadCambio(entrada origen : Object, entrada e : EventArgs)
+MiembroNominaIDCambio()
+EmpleadoIDCambio()
+NominaIDCambio()

utilityIOBPMiembroNomina::modMiembroNomina

instance

+NO_HAY_SELECCIONADO : Integer = 0
+PA_SELECCIONAR_MIEMBRONOMINA : String = "spSMiembroNomina"
+PA_INSERTAR_MIEMBRONOMINA : String = "spIMiembroNomina"
+PA_ELIMINAR_MIEMBRONOMINA : String = "spDMiembroNomina"
+PA_ACTUALIZAR_MIEMBRONOMINA : String = "spUMiembroNomina"
+FN_MIEMBRONOMINAID : String = "MiembroNominaID"
+PARAMNOM_MIEMBRONOMINAID : String = "@MiembroNominaID"
+PARAMNUM_MIEMBRONOMINAID : Integer = 0
+PARAMTIP_MIEMBRONOMINAID : SqlDbType = System.Data.SqlDbType.Int
+FN_EMPLEADOID : String = "EmpleadoID"
+PARAMNOM_EMPLEADOID : String = "@EmpleadoID"
+PARAMNUM_EMPLEADOID : Integer = 1
+PARAMTIP_EMPLEADOID : SqlDbType = System.Data.SqlDbType.Int
+FN_NOMINAID : String = "NominaID"
+PARAMNOM_NOMINAID : String = "@NominaID"
+PARAMNUM_NOMINAID : Integer = 2
+PARAMTIP_NOMINAID : SqlDbType = System.Data.SqlDbType.Int
+PARAMNUM_DELETEFLAG : Integer = 3
+PARAMNUM_CREATEDATE : Integer = 4
+PARAMNUM_MODIFYDATE : Integer = 5

IOBPMiembroNomina::MiembroNominaPersistente

instance
#ActualizarColeccion_Con_DatosDevueltos(entrada reader : SqlDataReader, entrada y salida entidad : Entidad)
#PrepararDatos_Para_Insertar(entrada entidad : Entidad, entrada y salida comandoSQL : SqlCommand) : Object
#ProcAlmacenado_Insertar() : String
#ProcAlmacenado_Eliminar() : String
#ProcAlmacenado_Actualizar() : String
#PrepararDatos_para_Borrar(entrada oEntidad : Entidad, entrada y salida oComandoSQL : SqlCommand) : Object
#PrepararDatos_para_Actualizar(entrada oEntidad : Entidad, entrada y salida oComandoSQL : SqlCommand) : Object
+New(entrada y salida coleccion : ColMiembroNomina)

enumeracinIOBPMiembroNomina::OrdenadoPor
+SinOrden = -1
+MiembroNominaID = 0
+Nombres

IOBPMiembroNomina::IOBPFabricaMiembroNomina

#CrearInstanciaDeClase() : Entidad
#CrearInstanciaDeColeccion() : ColeccionEntidades
#ProcAlmacenadoSeleccionar() : String
#AsignarDatosAClase(entrada y salida entidad : Entidad, entrada y salida reader : SqlDataReader)
+Obtener(entrada tokenSeguridad : String, entrada MiembroMiembroNominaID : Integer = SIN_PARAMETRO_OPCIONAL) : ColMiembroNomina
+Buscar(entrada tokenSeguridad : String, entrada miembroNominaID : Integer = SIN_PARAMETRO_OPCIONAL, entrada empleadoID : Integer = SIN_PARAMETRO_OPCIONAL, entrada nominaID : Integer = SIN_PARAMETRO_OPCIONAL, entrada recuperarRegistros : Registros = Tipos.Registros.NoBorrados) : ColMiembroNomina
+Nuevo(entrada tokenSeguridad : String) : ColMiembroNomina
+New()

B20 Diagrama de estructura esttica del componente Miembro de Nmina.

IOBPMovimiento::ColMovimiento
IOBPMovimiento::CMovimiento

-_IndiceSeleccionado : Integer = ModeloComponentes.Nomina.IOBPMovimiento.modMovimiento.NO_HAY_SELECCIONADO


-_Ordenada : Integer

-_MovimientoID : Integer
-_ConceptoID : Integer
-_EmpleadoID : Integer
-_NominaID : Integer
-_PeriodoID : Integer
-_Fecha : String
-_Descripcion : String
-_Monto : Integer
+OnNotificar(entrada descripcion : String)
+OnNotificarError(entrada origen : String, entrada descripcion : String)
+OnNotificarErrorControlado(entrada origen : String, entrada descripcion : String)
+OnNotificarErrorNoControlado(entrada origen : String, entrada descripcion : String)
+Notificar(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+NotificarError(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+NotificarErrorControlado(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+NotificarErrorNoControlado(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+PeriodoID() : Integer
+Fecha() : Date
+Descripcion() : String
+Monto() : Decimal
+Hierarchy() : ColMovimiento
+New()
+OnCambiandoPropiedad()
+OnPropiedadCambio()
+CambiandoPropiedad(entrada origen : Object, entrada e : EventArgs)
+PropiedadCambio(entrada origen : Object, entrada e : EventArgs)
+MovimientoIDCambio()
+ConceptoIDCambio()
+EmpleadoIDCambio()
+NominaIDCambio()
+PeriodoIDCambio()
+FechaCambio()
+DescripcionCambio()
+MontoCambio()

-Fin20

-Fin19

instance
instance

IOBPMovimiento::IOBPFabricaMovimiento

#CrearInstanciaDeClase()
#CrearInstanciaDeColeccion()
#ProcAlmacenadoSeleccionar()
#AsignarDatosAClase()
+Obtener()
+Buscar()
+Nuevo()
+New()

+Progreso(entrada args : ProgresoEventArgs)


+OnNotificar(entrada descripcion : String)
+OnNotificarError(entrada origen : String, entrada descripcion : String)
+OnNotificarErrorControlado(entrada origen : String, entrada descripcion : String)
+OnNotificarErrorNoControlado(entrada origen : String, entrada descripcion : String)
+Notificar(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+NotificarError(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+NotificarErrorControlado(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+NotificarErrorNoControlado(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+Comparar(entrada obj1 : Object, entrada obj2 : Object, entrada campo : Integer) : Integer
+OrdenarElementos(entrada elemento1 : Integer, entrada elemento2 : Integer)
+Ordenar()
+ProgresoOrdenamiento(entrada progreso : Integer, entrada total : Integer)
+Count() : Integer
+GetEnumerator() : IEnumerator
+Agregar(entrada movimientoID : Integer, entrada conceptoID : Integer, entrada empleadoID : Integer, entrada nominaID : Integer, entrada periodoID : Integer, entrada fecha : Date, entrada descripcion : String, entrada monto : Decimal) : Integer
+MarcarParaBorrar(entrada movimientoID : Integer) : Boolean
+Recuperar(entrada movimientoID : Integer) : Boolean
+Remover(entrada indice : Integer) : Boolean
+OrdenadoPor() : OrdenadoPor
+Elementos(entrada Indice : Integer) : CMovimiento
+Agregar(entrada Movimiento : CMovimiento) : Integer
+Buscar(entrada movimientoID : Integer) : CMovimiento
+New()
+FinalizarProceso(entrada args : ProgresoEventArgs)
+IniciarProceso(entrada args : ProgresoEventArgs)

utilityIOBPMovimiento::modMovimiento
+NO_HAY_SELECCIONADO : Integer = 0
+PA_SELECCIONAR_MOVIMIENTO : String = "spSMovimiento"
+PA_INSERTAR_MOVIMIENTO : String = "spIMovimiento"
+PA_ELIMINAR_MOVIMIENTO : String = "spDMovimiento"
+PA_ACTUALIZAR_MOVIMIENTO : String = "spUMovimiento"
+FN_MOVIMIENTOID : String = "MovimientoID"
+PARAMNOM_MOVIMIENTOID : String = "@MovimientoID"
+PARAMNUM_MOVIMIENTOID : Integer = 0
+PARAMTIP_MOVIMIENTOID : SqlDbType = System.Data.SqlDbType.Int
+FN_CONCEPTOID : String = "ConceptoID"
+PARAMNOM_CONCEPTOID : String = "@ConceptoID"
+PARAMNUM_CONCEPTOID : Integer = 1
+PARAMTIP_CONCEPTOID : SqlDbType = System.Data.SqlDbType.Int
+FN_EMPLEADOID : String = "EmpleadoID"
+PARAMNOM_EMPLEADOID : String = "@EmpleadoID"
+PARAMNUM_EMPLEADOID : Integer = 2
+PARAMTIP_EMPLEADOID : SqlDbType = System.Data.SqlDbType.Int
+FN_NOMINAID : String = "NominaID"
+PARAMNOM_NOMINAID : String = "@NominaID"
+PARAMNUM_NOMINAID : Integer = 3
+PARAMTIP_NOMINAID : SqlDbType = System.Data.SqlDbType.Int
+FN_PERIODOID : String = "PeriodoID"
+PARAMNOM_PERIODOID : String = "@PeriodoID"
+PARAMNUM_PERIODOID : Integer = 4
+PARAMTIP_PERIODOID : SqlDbType = System.Data.SqlDbType.Int
+FN_FECHA : String = "Fecha"
+PARAMNOM_FECHA : String = "@Fecha"
+PARAMNUM_FECHA : Integer = 5
+PARAMTIP_FECHA : SqlDbType = System.Data.SqlDbType.DateTime
+FN_DESCRIPCION : String = "Comentario"
+PARAMNOM_DESCRIPCION : String = "@Comentario"
+PARAMNUM_DESCRIPCION : Integer = 6
+PARAMTIP_DESCRIPCION : SqlDbType = System.Data.SqlDbType.VarChar
+FN_MONTO : String = "Monto"
+PARAMNOM_MONTO : String = "@Monto"
+PARAMNUM_MONTO : Integer = 7
+PARAMTIP_MONTO : SqlDbType = System.Data.SqlDbType.Money
+PARAMNUM_DELETEFLAG : Integer = 8
+PARAMNUM_CREATEDATE : Integer = 9
+PARAMNUM_MODIFYDATE : Integer = 10

IOBPMovimiento::MovimientoPersistente

#ActualizarColeccion_Con_DatosDevueltos(entrada reader : SqlDataReader, entrada y salida entidad : Entidad)


#PrepararDatos_Para_Insertar(entrada entidad : Entidad, entrada y salida comandoSQL : SqlCommand) : Object
#ProcAlmacenado_Insertar() : String
#ProcAlmacenado_Eliminar() : String
#ProcAlmacenado_Actualizar() : String
#PrepararDatos_para_Borrar(entrada oEntidad : Entidad, entrada y salida oComandoSQL : SqlCommand) : Object
#PrepararDatos_para_Actualizar(entrada oEntidad : Entidad, entrada y salida oComandoSQL : SqlCommand) : Object
+New(entrada y salida coleccion : ColMovimiento)

enumeracinIOBPMovimiento::OrdenadoPor
+SinOrden = -1
+MovimientoID = 0
+ConceptoID
+Fecha

B21 Diagrama de estructura esttica del componente Movimiento de Nmina.

IOBPNomina::CNomina
IOBPNomina::ColNomina

-_NominaID : Integer
-_Nombre : String
-_Descripcion : String
-_Frecuencia : Integer
-_MiembrosNomina : IColMiembroNomina
-_Activa : Boolean
-_Comentario : String

-_IndiceSeleccionado : Integer = ModeloComponentes.Nomina.IOBPNomina.modNomina.NO_HAY_SELECCIONADO


-_Ordenada : Integer

+OnNotificar(entrada descripcion : String)


+OnNotificarError(entrada origen : String, entrada descripcion : String)
+OnNotificarErrorControlado(entrada origen : String, entrada descripcion : String)
+OnNotificarErrorNoControlado(entrada origen : String, entrada descripcion : String)
+Notificar(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+NotificarError(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+NotificarErrorControlado(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+NotificarErrorNoControlado(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+NominaID() : Integer
+Frecuencia() : Frecuencias
+Miembros() : IColMiembroNomina
+Activa() : Activos
+Comentario() : String
+Hierarchy() : ColNomina
+New()
+OnCambiandoPropiedad()
+OnPropiedadCambio()
+CambiandoPropiedad(entrada origen : Object, entrada e : EventArgs)
+PropiedadCambio(entrada origen : Object, entrada e : EventArgs)
+NominaIDCambio()
+NombreCambio()
+DescripcionCambio()
+FrecuenciaCambio()
+ActivaCambio()
+ComentarioCambio()

-Fin30

-Fin29

*
utilityIOBPNomina::modNomina

+NO_HAY_SELECCIONADO : Integer = 0
+PA_SELECCIONAR_NOMINA : String = "spSNomina"
+PA_INSERTAR_NOMINA : String = "spINomina"
+PA_ELIMINAR_NOMINA : String = "spDNomina"
+PA_ACTUALIZAR_NOMINA : String = "spUNomina"
+FN_NOMINAID : String = "NominaID"
+PARAMNOM_NOMINAID : String = "@NominaID"
+PARAMNUM_NOMINAID : Integer = 0
+PARAMTIP_NOMINAID : SqlDbType = System.Data.SqlDbType.Int
+FN_NOMBRE : String = "Nombre"
+PARAMNOM_NOMBRE : String = "@Nombre"
+PARAMNUM_NOMBRE : Integer = 1
+PARAMTIP_NOMBRE : SqlDbType = System.Data.SqlDbType.VarChar
+FN_DESCRIPCION : String = "Descripcion"
+PARAMNOM_DESCRIPCION : String = "@Descripcion"
+PARAMNUM_DESCRIPCION : Integer = 2
+PARAMTIP_DESCRIPCION : SqlDbType = System.Data.SqlDbType.VarChar
+FN_FRECUENCIA : String = "Frecuencia"
+PARAMNOM_FRECUENCIA : String = "@Frecuencia"
+PARAMNUM_FRECUENCIA : Integer = 3
+PARAMTIP_FRECUENCIA : SqlDbType = System.Data.SqlDbType.Int
+FN_ACTIVA : String = "Activa"
+PARAMNOM_ACTIVA : String = "@Activa"
+PARAMNUM_ACTIVA : Integer = 4
+PARAMTIP_ACTIVA : SqlDbType = System.Data.SqlDbType.Bit
+FN_COMENTARIO : String = "Comentario"
+PARAMNOM_COMENTARIO : String = "@Comentario"
+PARAMNUM_COMENTARIO : Integer = 5
+PARAMTIP_COMENTARIO : SqlDbType = System.Data.SqlDbType.VarChar
+PARAMNUM_DELETEFLAG : Integer = 6
+PARAMNUM_CREATEDATE : Integer = 7
+PARAMNUM_MODIFYDATE : Integer = 8

+Progreso(entrada args : ProgresoEventArgs)


+OnNotificar(entrada descripcion : String)
+OnNotificarError(entrada origen : String, entrada descripcion : String)
+OnNotificarErrorControlado(entrada origen : String, entrada descripcion : String)
+OnNotificarErrorNoControlado(entrada origen : String, entrada descripcion : String)
+Notificar(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+NotificarError(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+NotificarErrorControlado(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+NotificarErrorNoControlado(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+Comparar(entrada obj1 : Object, entrada obj2 : Object, entrada campo : Integer) : Integer
+OrdenarElementos(entrada elemento1 : Integer, entrada elemento2 : Integer)
+Ordenar()
+ProgresoOrdenamiento(entrada progreso : Integer, entrada total : Integer)
+Count() : Integer
+GetEnumerator() : IEnumerator
+Agregar(entrada nominaID : Integer, entrada nombre : String, entrada descripcion : String, entrada frecuencia : String, entrada activa : Boolean, entrada comentario : String) : Integer
+MarcarParaBorrar(entrada clienteID : Integer) : Boolean
+Recuperar(entrada clienteID : Integer) : Boolean
+Remover(entrada indice : Integer) : Boolean
+OrdenadoPor() : OrdenadoPor
+Elementos(entrada Indice : Integer) : CNomina
+Agregar(entrada Nomina : CNomina) : Integer
+Buscar(entrada nominaID : Integer) : CNomina
+New()
+FinalizarProceso(entrada args : ProgresoEventArgs)
+IniciarProceso(entrada args : ProgresoEventArgs)

instance

IOBPNomina::NominaPersistente

#ActualizarColeccion_Con_DatosDevueltos(entrada reader : SqlDataReader, entrada y salida entidad : Entidad)


#PrepararDatos_Para_Insertar(entrada entidad : Entidad, entrada y salida comandoSQL : SqlCommand) : Object
#ProcAlmacenado_Insertar() : String
#ProcAlmacenado_Eliminar() : String
#ProcAlmacenado_Actualizar() : String
#PrepararDatos_para_Borrar(entrada oEntidad : Entidad, entrada y salida oComandoSQL : SqlCommand) : Object
#PrepararDatos_para_Actualizar(entrada oEntidad : Entidad, entrada y salida oComandoSQL : SqlCommand) : Object
+New(entrada y salida coleccion : ColNomina)

enumeracinIOBPMovimiento::OrdenadoPor
+SinOrden = -1
+MovimientoID = 0
+ConceptoID
+Fecha

instance

IOBPNomina::IOBPFabricaNomina

#CrearInstanciaDeClase() : Entidad
#CrearInstanciaDeColeccion() : ColeccionEntidades
#ProcAlmacenadoSeleccionar() : String
#AsignarDatosAClase(entrada y salida entidad : Entidad, entrada y salida reader : SqlDataReader)
+Obtener(entrada tokenSeguridad : String, entrada NominaID : Integer = SIN_PARAMETRO_OPCIONAL) : ColNomina
+Buscar(entrada tokenSeguridad : String, entrada nominaID : Integer = SIN_PARAMETRO_OPCIONAL, entrada nombre : String = "", entrada descripcion : String = "", entrada frecuencia : Frecuencias = Tipos.Frecuencias.NoDefinida, entrada activa : Activos = Tipos.Activos.Todos, entrada comentario : String = "", entrada recuperarRegistros : Registros = Tipos.Registros.NoBorrados) : ColNomina
+Nuevo(entrada tokenSeguridad : String) : ColNomina
+New()

B22 Diagrama de estructura esttica del componente Nmina.

IOBPPeriodo::CPeriodo

IOBPPeriodo::ColPeriodo

-_PeriodoID : Integer
-_NominaID : Integer
-_FechaInicio : Date
-_FechaFinal : Date
-_FechaCierre : Date
-_Cierres : ColCierre

-_IndiceSeleccionado : Integer = ModeloComponentes.Nomina.IOBPPeriodo.modPeriodo.NO_HAY_SELECCIONADO


-_Ordenada : Integer

+OnNotificar(entrada descripcion : String)


+OnNotificarError(entrada origen : String, entrada descripcion : String)
+OnNotificarErrorControlado(entrada origen : String, entrada descripcion : String)
+OnNotificarErrorNoControlado(entrada origen : String, entrada descripcion : String)
+Notificar(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+NotificarError(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+NotificarErrorControlado(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+NotificarErrorNoControlado(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+NominaID() : Integer
+FechaCierre() : Date
+Cierre() : ICCierre
+EstaCerrado() : Boolean
+EstaCorriendo() : Boolean
+Caduco() : Boolean
+DiasParaFinalizar() : Integer
+EstaEnProrroga(entrada diasProrroga : Integer = 5) : Boolean
+Contiene(entrada fecha : Date) : Boolean
+CierraNomina() : Boolean
+DiasProrrogaRestantes(entrada diasProrroga : Integer = 5) : Integer
+Hierarchy() : ColPeriodo
+New()
+OnCambiandoPropiedad()
+OnPropiedadCambio()
+CambiandoPropiedad(entrada origen : Object, entrada e : EventArgs)
+PropiedadCambio(entrada origen : Object, entrada e : EventArgs)
+PeriodoIDCambion()
+NominaIDCambio()
+FechaInicioCambio()
+FechaFinalCambio()
+FechaCierreCambio()

utilityIOBPPeriodo::modPeriodo
+NO_HAY_SELECCIONADO : Integer = 0
+PA_SELECCIONAR_PERIODO : String = "spSPeriodo"
+PA_INSERTAR_PERIODO : String = "spIPeriodo"
+PA_ELIMINAR_PERIODO : String = "spDPeriodo"
+PA_ACTUALIZAR_PERIODO : String = "spUPeriodo"
+FN_PERIODOID : String = "PeriodoID"
+PARAMNOM_PERIODOID : String = "@PeriodoID"
+PARAMNUM_PERIODOID : Integer = 0
+PARAMTIP_PERIODOID : SqlDbType = System.Data.SqlDbType.Int
+FN_NOMINAID : String = "NominaID"
+PARAMNOM_NOMINAID : String = "@NominaID"
+PARAMNUM_NOMINAID : Integer = 1
+PARAMTIP_NOMINAID : SqlDbType = System.Data.SqlDbType.VarChar
+FN_FECHAINICIO : String = "FechaInicio"
+PARAMNOM_FECHAINICIO : String = "@FechaInicio"
+PARAMNUM_FECHAINICIO : Integer = 2
+PARAMTIP_FECHAINICIO : SqlDbType = System.Data.SqlDbType.DateTime
+FN_FECHAFINAL : String = "FechaFinal"
+PARAMNOM_FECHAFINAL : String = "@FechaFinal"
+PARAMNUM_FECHAFINAL : Integer = 3
+PARAMTIP_FECHAFINAL : SqlDbType = System.Data.SqlDbType.DateTime
+FN_FECHACIERRE : String = "FechaCierre"
+PARAMNOM_FECHACIERRE : String = "@FechaCierre"
+PARAMNUM_FECHACIERRE : Integer = 4
+PARAMTIP_FECHACIERRE : SqlDbType = System.Data.SqlDbType.DateTime
+PARAMNUM_DELETEFLAG : Integer = 5
+PARAMNUM_CREATEDATE : Integer = 6
+PARAMNUM_MODIFYDATE : Integer = 7

+Progreso(entrada args : ProgresoEventArgs)


+OnNotificar(entrada descripcion : String)
+OnNotificarError(entrada origen : String, entrada descripcion : String)
+OnNotificarErrorControlado(entrada origen : String, entrada descripcion : String)
+OnNotificarErrorNoControlado(entrada origen : String, entrada descripcion : String)
+Notificar(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+NotificarError(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+NotificarErrorControlado(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+NotificarErrorNoControlado(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+Comparar(entrada obj1 : Object, entrada obj2 : Object, entrada campo : Integer) : Integer
+OrdenarElementos(entrada elemento1 : Integer, entrada elemento2 : Integer)
+Ordenar()
+ProgresoOrdenamiento(entrada progreso : Integer, entrada total : Integer)
+Count() : Integer
+GetEnumerator() : IEnumerator
+Agregar(entrada periodoID : Integer, entrada nominaID : Integer, entrada fechaInicio : Date, entrada fechaFinal : Date) : Integer
+MarcarParaBorrar(entrada periodoID : Integer) : Boolean
+Recuperar(entrada periodoID : Integer) : Boolean
+Remover(entrada indice : Integer) : Boolean
+OrdenadoPor() : OrdenadoPor
+Elementos(entrada Indice : Integer) : CPeriodo
+Agregar(entrada Periodo : CPeriodo) : Integer
+Buscar(entrada periodoID : Integer) : CPeriodo
+New()
+FinalizarProceso(entrada args : ProgresoEventArgs)
+IniciarProceso(entrada args : ProgresoEventArgs)

IOBPPeriodo::PeriodoPersistente

#ActualizarColeccion_Con_DatosDevueltos(entrada reader : SqlDataReader, entrada y salida entidad : Entidad)


#PrepararDatos_Para_Insertar(entrada entidad : Entidad, entrada y salida comandoSQL : SqlCommand) : Object
#ProcAlmacenado_Insertar() : String
#ProcAlmacenado_Eliminar() : String
#ProcAlmacenado_Actualizar() : String
#PrepararDatos_para_Borrar(entrada oEntidad : Entidad, entrada y salida oComandoSQL : SqlCommand) : Object
#PrepararDatos_para_Actualizar(entrada oEntidad : Entidad, entrada y salida oComandoSQL : SqlCommand) : Object
+New(entrada y salida coleccion : ColPeriodo)

enumeracinIOBPPeriodo::OrdenadoPor
+SinOrden = -1
+PeriodoID = 0
+NominaID
+FechaInicioAscendente
+FechaInicioDescendente
+FechaFinalAscendente
+fechaFinalDescendente
+FechaCierre

IOBPPeriodo::IOBPFabricaPeriodo

#CrearInstanciaDeClase() : Entidad
#CrearInstanciaDeColeccion() : ColeccionEntidades
#ProcAlmacenadoSeleccionar() : String
#AsignarDatosAClase(entrada y salida entidad : Entidad, entrada y salida reader : SqlDataReader)
+Obtener(entrada tokenSeguridad : String, entrada PeriodoID : Integer = SIN_PARAMETRO_OPCIONAL) : ColPeriodo
+Buscar(entrada tokenSeguridad : String, entrada periodoID : Integer = SIN_PARAMETRO_OPCIONAL, entrada nominaID : Integer = SIN_PARAMETRO_OPCIONAL, entrada fechaInicio : Date = #1/1/1900#, entrada fechaFinal : Date = #1/1/1900#, entrada fechaCierre : Date = #1/1/1900#, entrada recuperarRegistros : Registros = Tipos.Registros.NoBorrados) : ColPeriodo
+Nuevo(entrada tokenSeguridad : String) : ColPeriodo
+New()

B23 Diagrama de estructura esttica del componente Perodo de Pago de Nmina.

enumeracinIOBPPersona::Nacionalidades
IOBPPersona::CPersona
-_PersonaNumber : Integer
-_Cedula : Integer
-_PersonaID : Integer
-_Nombres : String
-_Apellidos : String
-_FechaNacimiento : Date = _Vb_t_date_0 = Microsoft.VisualBasic.DateAndTime.Now.Date
-_Fotografia() : Byte
-_Direccion : String
-_TlfnoHabitacion : String
-_TlfnoMovil : String
-_Sexo : Integer
-_EstadoCivil : Integer
-_Extranjero : Integer
-_Observaciones : String
+OnNotificar(entrada descripcion : String)
+OnNotificarError(entrada origen : String, entrada descripcion : String)
+OnNotificarErrorControlado(entrada origen : String, entrada descripcion : String)
+OnNotificarErrorNoControlado(entrada origen : String, entrada descripcion : String)
+Notificar(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+NotificarError(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+NotificarErrorControlado(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+NotificarErrorNoControlado(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+NombreCompleto(entrada tipo : Nombres = Tipos.Nombres.Formal) : String
+NombreCorto() : String
+Edad() : Integer
+Extranjero() : Boolean
+FechaNacimiento() : Date
+Fotografia() : Image
+Sexo() : Sexos
+EstadoCivil() : EstadosCiviles
+TlfnoMovil() : String
+Hierarchy() : ColPersona
+New()
+OnCambiandoPropiedad()
+OnPropiedadCambio()
+CambiandoPropiedad(entrada origen : Object, entrada e : EventArgs)
+PropiedadCambio(entrada origen : Object, entrada e : EventArgs)
+PersonaNumberCambio()
+PersonaIDCambio()
+CedulaCambio()
+NombresCambio()
+ApellidosCambio()
+FechaNacimientoCambio()
+DireccionCambio()
+TlfnoHabitacionCambio()
+TlfnoMovilCambio()
+SexoCambio()
+EstadoCivilCambio()
+ExtranjeroCambio()
+ObservacionesCambio()

+Venezolano
+Extranjero

IOBPPersona::ColPersona
-_IndiceSeleccionado = ModeloComponentes.Compartidos.IOBPPersona.modPersona.NO_HAY_SELECCIONADO
-_Ordenada
+Progreso()
+OnNotificar()
+OnNotificarError()
+OnNotificarErrorControlado()
+OnNotificarErrorNoControlado()
+Notificar()
+NotificarError()
+NotificarErrorControlado()
+NotificarErrorNoControlado()
+Comparar()
+OrdenarElementos()
+Ordenar()
+ProgresoOrdenamiento()
+Count()
+GetEnumerator()
+Agregar()
+MarcarParaBorrar()
+Recuperar()
+Remover()
+OrdenadoPor()
+ElementoSeleccionado()
+Elementos()
+Agregar()
+Buscar()
+New()
+FinalizarProceso()
+IniciarProceso()

IOBPPersona::PersonaPersistente

IOBPPersona::IOBPFabricaPersona
enumeracinIOBPPersona::OrdenadoPor
#CrearInstanciaDeClase()
#CrearInstanciaDeColeccion()
#ProcAlmacenadoSeleccionar()
#AsignarDatosAClase()
+ObtenerPersona()
+Buscar()
+Existe()
+Nuevo()
+New()

+SinOrden = -1
+Cedula
+Nombres

#ActualizarColeccion_Con_DatosDevueltos(entrada reader : SqlDataReader, entrada y salida entidad : Entidad)


#PrepararDatos_Para_Insertar(entrada entidad : Entidad, entrada y salida comandoSQL : SqlCommand) : Object
#ProcAlmacenado_Insertar() : String
#ProcAlmacenado_Eliminar() : String
#ProcAlmacenado_Actualizar() : String
+New(entrada y salida coleccion : ColPersona)
#PrepararDatos_para_Borrar(entrada oEntidad : Entidad, entrada y salida oComandoSQL : SqlCommand) : Object
#PrepararDatos_para_Actualizar(entrada oEntidad : Entidad, entrada y salida oComandoSQL : SqlCommand) : Object

B24 Diagrama de estructura esttica del componente Persona.

IOBPSesion::ColSesion
-_IndiceSeleccionado : Integer = ModeloComponentes.Compartidos.IOBPSesion.modSeguro.NO_HAY_SELECCIONADO
-_Ordenada : Integer

IOBPSesion::CSesion
-_SesionID : Integer
-_UsuarioID : Integer
-_FechaHoraInicio : Date
-_FechaHoraFinal : Date
+OnNotificar(entrada descripcion : String)
+OnNotificarError(entrada origen : String, entrada descripcion : String)
+OnNotificarErrorControlado(entrada origen : String, entrada descripcion : String)
+OnNotificarErrorNoControlado(entrada origen : String, entrada descripcion : String)
+Notificar(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+NotificarError(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+NotificarErrorControlado(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+NotificarErrorNoControlado(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+UsuarioID() : Integer
+FechaHoraFinal() : Date
+Hierarchy() : ColSesion
+New()
+OnCambiandoPropiedad()
+OnPropiedadCambio()
+CambiandoPropiedad(entrada origen : Object, entrada e : EventArgs)
+PropiedadCambio(entrada origen : Object, entrada e : EventArgs)
+SesionIDCambio()
+UsuarioIDCambio()
+FechaHoraInicioCambio()
+FechaHoraFinalCambio()

utilityIOBPSesion::modSeguro
+NO_HAY_SELECCIONADO : Integer = 0
+PA_SELECCIONAR_SESION : String = "spSSesion"
+PA_INSERTAR_SESION : String = "spISesion"
+PA_ELIMINAR_SESION : String = "spDSesion"
+PA_ACTUALIZAR_SESION : String = "spUSesion"
+FN_SESIONID : String = "SesionID"
+PARAMNOM_SESIONID : String = "@SesionID"
+PARAMNUM_SESIONID : Integer = 0
+PARAMTIP_SESIONID : SqlDbType = System.Data.SqlDbType.Int
+FN_USUARIOID : String = "UsuarioID"
+PARAMNOM_USUARIOID : String = "@UsuarioID"
+PARAMNUM_USUARIOID : Integer = 1
+PARAMTIP_USUARIOID : SqlDbType = System.Data.SqlDbType.Int
+FN_FECHAHORAINICIO : String = "FechaHoraInicio"
+PARAMNOM_FECHAHORAINICIO : String = "@FechaHoraInicio"
+PARAMNUM_FECHAHORAINICIO : Integer = 2
+PARAMTIP_FECHAHORAINICIO : SqlDbType = System.Data.SqlDbType.DateTime
+FN_FECHAHORAFINAL : String = "FechaHoraFinal"
+PARAMNOM_FECHAHORAFINAL : String = "@FechaHoraFinal"
+PARAMNUM_FECHAHORAFINAL : Integer = 3
+PARAMTIP_FECHAHORAFINAL : SqlDbType = System.Data.SqlDbType.DateTime
+PARAMNUM_DELETEFLAG : Integer = 4
+PARAMNUM_CREATEDATE : Integer = 5
+PARAMNUM_MODIFYDATE : Integer = 6

instance
instance

+Progreso(entrada args : ProgresoEventArgs)


+OnNotificar(entrada descripcion : String)
+OnNotificarError(entrada origen : String, entrada descripcion : String)
+OnNotificarErrorControlado(entrada origen : String, entrada descripcion : String)
+OnNotificarErrorNoControlado(entrada origen : String, entrada descripcion : String)
+Notificar(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+NotificarError(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+NotificarErrorControlado(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+NotificarErrorNoControlado(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+Comparar(entrada obj1 : Object, entrada obj2 : Object, entrada campo : Integer) : Integer
+OrdenarElementos(entrada elemento1 : Integer, entrada elemento2 : Integer)
+Ordenar()
+ProgresoOrdenamiento(entrada progreso : Integer, entrada total : Integer)
+Count() : Integer
+GetEnumerator() : IEnumerator
+Agregar(entrada sesionID : Integer, entrada usuarioID : Integer, entrada fechahoraInicio : Date, entrada fechahorafinal : Date) : Integer
+MarcarParaBorrar(entrada clienteID : Integer) : Boolean
+Recuperar(entrada clienteID : Integer) : Boolean
+Remover(entrada indice : Integer) : Boolean
+OrdenadoPor() : OrdenadoPor
+Elementos(entrada Indice : Integer) : CSesion
+Agregar(entrada Sesion : CSesion) : Integer
+Buscar(entrada SesionID : Integer) : CSesion
+New()
+FinalizarProceso(entrada args : ProgresoEventArgs)
+IniciarProceso(entrada args : ProgresoEventArgs)

-Fin45
IOBPSesion::SesionPersistente

#ActualizarColeccion_Con_DatosDevueltos(entrada reader : SqlDataReader, entrada y salida entidad : Entidad)


#PrepararDatos_Para_Insertar(entrada entidad : Entidad, entrada y salida comandoSQL : SqlCommand) : Object
#ProcAlmacenado_Insertar() : String
#ProcAlmacenado_Eliminar() : String
#ProcAlmacenado_Actualizar() : String
#PrepararDatos_para_Borrar(entrada oEntidad : Entidad, entrada y salida oComandoSQL : SqlCommand) : Object
#PrepararDatos_para_Actualizar(entrada oEntidad : Entidad, entrada y salida oComandoSQL : SqlCommand) : Object
*
-Fin46
+New(entrada y salida coleccion : ColSesion)

enumeracinIOBPSesion::OrdenadoPor
+SinOrden = -1
+SesionID = 0
+UsuarioID
+FechaHoraInicio
+FechaHoraFinal

IOBPSesion::IOBPFabricaSesion

#CrearInstanciaDeClase() : Entidad
#CrearInstanciaDeColeccion() : ColeccionEntidades
#ProcAlmacenadoSeleccionar() : String
#AsignarDatosAClase(entrada y salida entidad : Entidad, entrada y salida reader : SqlDataReader)
+Obtener(entrada tokenSeguridad : String, entrada SesionID : Integer = SIN_PARAMETRO_OPCIONAL) : ColSesion
+Buscar(entrada tokenSeguridad : String, entrada SesionID : Integer = SIN_PARAMETRO_OPCIONAL, entrada usuarioID : Integer = SIN_PARAMETRO_OPCIONAL, entrada recuperarRegistros : Registros = Tipos.Registros.NoBorrados) : ColSesion
+Nuevo(entrada tokenSeguridad : String) : ColSesion
+New()

B25 Diagrama de estructura esttica del componente Sesin.

IOBPTipoDato::ColTipoDat
-_IndiceSeleccionado : Integer = ModeloComponentes.Compartidos.IOBPTipoDato.modTipoDato.NO_HAY_SELECCIONADO
-_Ordenada : Integer
+Progreso(entrada args : ProgresoEventArgs)
+OnNotificar(entrada descripcion : String)
+OnNotificarError(entrada origen : String, entrada descripcion : String)
+OnNotificarErrorControlado(entrada origen : String, entrada descripcion : String)
+OnNotificarErrorNoControlado(entrada origen : String, entrada descripcion : String)
+Notificar(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+NotificarError(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+NotificarErrorControlado(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+NotificarErrorNoControlado(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+Comparar(entrada obj1 : Object, entrada obj2 : Object, entrada campo : Integer) : Integer
+OrdenarElementos(entrada elemento1 : Integer, entrada elemento2 : Integer)
+Ordenar()
+ProgresoOrdenamiento(entrada progreso : Integer, entrada total : Integer)
+Count() : Integer
+GetEnumerator() : IEnumerator
+Agregar(entrada tipoDatoID : Integer, entrada descripcion : String) : Integer
+MarcarParaBorrar(entrada tipoDatoID : Integer) : Boolean
+Recuperar(entrada tipoDatoID : Integer) : Boolean
+Remover(entrada indice : Integer) : Boolean
+OrdenadoPor() : OrdenadoPor
+ElementoSeleccionado() : CTipoDato
+Elementos(entrada Indice : Integer) : CTipoDato
+Agregar(entrada TipoDato : CTipoDato) : Integer
+Buscar(entrada tipoDatoID : Integer) : CTipoDato
+New()
+FinalizarProceso(entrada args : ProgresoEventArgs)
+IniciarProceso(entrada args : ProgresoEventArgs)

IOBPTipoDato::CTipoDat
-_TipoDatoID : Integer
-_Descripcion : String
+OnNotificar(entrada descripcion : String)
+OnNotificarError(entrada origen : String, entrada descripcion : String)
+OnNotificarErrorControlado(entrada origen : String, entrada descripcion : String)
+OnNotificarErrorNoControlado(entrada origen : String, entrada descripcion : String)
+Notificar(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+NotificarError(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+NotificarErrorControlado(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+NotificarErrorNoControlado(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+TipoDatoID() : Integer
+Descripcion() : String
+Hierarchy() : ColTipoDato
+New()
+OnCambiandoPropiedad()
+OnPropiedadCambio()
+CambiandoPropiedad(entrada origen : Object, entrada e : EventArgs)
+PropiedadCambio(entrada origen : Object, entrada e : EventArgs)
+TipoDatoIDCambio()
+DescripcionCambio()
utilityIOBPTipoDato::modTipoDato

instance

+NO_HAY_SELECCIONADO : Integer
+OBPUserError : Integer
+OBPTipoDatoErrorBase : Integer
+ERR_CLIENTEINVALIDDIRTY : Decimal
+ERR_CLIENTEPROPIEDADNEWINVALIDA : Decimal
+ERR_CLIENTEPROPIEDADPADREINVALIDA : Decimal
+ERR_CLIENTECLASEMARCADAPARABORRADO : Decimal
+ERR_CLIENTEINDICEFUERARANGO : Decimal
+ERR_CLIENTETOKENSEGURIDADINVALIDO : Decimal
+ERR_CLIENTECOLECCIONVACIA : Decimal
+ERR_NOHAYSELECCION : Decimal
+PA_SELECCIONAR_TIPODATO : String
+PA_INSERTAR_TIPODATO : String
+PA_ELIMINAR_TIPODATO : String
+PA_ACTUALIZAR_TIPODATO : String
+FN_TIPODATOID : String
+PARAMNOM_TIPODATOID : String
+PARAMNUM_TIPODATOID : Integer
+PARAMTIP_TIPODATOID : SqlDbType
+FN_DESCRIPCION : String
+PARAMNOM_DESCRIPCION : String
+PARAMNUM_DESCRIPCION : Integer
+PARAMTIP_DESCRIPCION : SqlDbType
+PARAMNUM_DELETEFLAG : Integer
+PARAMNUM_CREATEDATE : Integer
+PARAMNUM_MODIFYDATE : Integer

IOBPTipoDato::TipoDatoPersistente

instance

#ActualizarColeccion_Con_DatosDevueltos(entrada reader : SqlDataReader, entrada y salida entidad : Entidad)


#PrepararDatos_Para_Insertar(entrada entidad : Entidad, entrada y salida comandoSQL : SqlCommand) : Object
#ProcAlmacenado_Insertar() : String
#ProcAlmacenado_Eliminar() : String
#ProcAlmacenado_Actualizar() : String
#PrepararDatos_para_Borrar(entrada oEntidad : Entidad, entrada y salida oComandoSQL : SqlCommand) : Object
#PrepararDatos_para_Actualizar(entrada oEntidad : Entidad, entrada y salida oComandoSQL : SqlCommand) : Object
+New(entrada y salida coleccion : ColTipoDato)

enumeracinIOBPTipoDato::OrdenadoPor
+SinOrden = -1
+TipoDatoID
+Descripcion

IOBPTipoDato::IOBPFabricaTipoDat

#CrearInstanciaDeClase() : Entidad
#CrearInstanciaDeColeccion() : ColeccionEntidades
#ProcAlmacenadoSeleccionar() : String
#AsignarDatosAClase(entrada y salida entidad : Entidad, entrada y salida reader : SqlDataReader)
+Obtener(entrada tokenSeguridad : String, entrada clienteID : Integer = SIN_PARAMETRO_OPCIONAL) : ColTipoDato
+Buscar(entrada tokenSeguridad : String, entrada tipoDatoID : Integer = SIN_PARAMETRO_OPCIONAL, entrada descripcion : String = "", entrada recuperarRegistros : Registros = Tipos.Registros.NoBorrados) : ColTipoDato
+Nuevo(entrada tokenSeguridad : String) : ColTipoDato
+New()

B26 Diagrama de estructura esttica del componente Tipo de Dato.

IOBPUsuario::ColUsuario
-_IndiceSeleccionado : Integer = ModeloComponentes.Compartidos.IOBPUsuario.modSeguro.NO_HAY_SELECCIONADO
-_Ordenada : Integer
IOBPUsuario::CUsuario
-_UsuarioID : Integer
-_NombreUsuario : String
-_ContrasenaUsuario : String
-_EmpleadoID : Integer
+OnNotificar(entrada descripcion : String)
+OnNotificarError(entrada origen : String, entrada descripcion : String)
+OnNotificarErrorControlado(entrada origen : String, entrada descripcion : String)
+OnNotificarErrorNoControlado(entrada origen : String, entrada descripcion : String)
+Notificar(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+NotificarError(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+NotificarErrorControlado(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+NotificarErrorNoControlado(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+ContrasenaUsuario() : String
+EmpleadoID() : Integer
+Hierarchy() : ColUsuario
+New()
+OnCambiandoPropiedad()
+OnPropiedadCambio()
+CambiandoPropiedad(entrada origen : Object, entrada e : EventArgs)
+PropiedadCambio(entrada origen : Object, entrada e : EventArgs)
+UsuarioIDCambion()
+NombreUsuarioCambio()
+ContrasenaUsuarioCambio()
+EmpleadoIDCambio()

utilityIOBPUsuario::modUsuario
+NO_HAY_SELECCIONADO : Integer = 0
+PA_SELECCIONAR_USUARIO : String = "spSUsuario"
+PA_INSERTAR_USUARIO : String = "spIUsuario"
+PA_ELIMINAR_USUARIO : String = "spDUsuario"
+PA_ACTUALIZAR_USUARIO : String = "spUUsuario"
+FN_USUARIOID : String = "UsuarioID"
+PARAMNOM_USUARIOID : String = "@UsuarioID"
+PARAMNUM_USUARIOID : Integer = 0
+PARAMTIP_USUARIOID : SqlDbType = System.Data.SqlDbType.Int
+FN_NOMBREUSUARIO : String = "NombreUsuario"
+PARAMNOM_NOMBREUSUARIO : String = "@NombreUsuario"
+PARAMNUM_NOMBREUSUARIO : Integer = 1
+PARAMTIP_NOMBREUSUARIO : SqlDbType = System.Data.SqlDbType.VarChar
+FN_CONTRASENAUSUARIO : String = "ContrasenaUsuario"
+PARAMNOM_CONTRASENAUSUARIO : String = "@ContrasenaUsuario"
+PARAMNUM_CONTRASENAUSUARIO : Integer = 2
+PARAMTIP_CONTRASENAUSUARIO : SqlDbType = System.Data.SqlDbType.VarChar
+FN_EMPLEADOID : String = "EmpleadoID"
+PARAMNOM_EMPLEADOID : String = "@EmpleadoID"
+PARAMNUM_EMPLEADOID : Integer = 3
instance
+PARAMTIP_EMPLEADOID : SqlDbType = System.Data.SqlDbType.VarChar
+PARAMNUM_DELETEFLAG : Integer = 4
+PARAMNUM_CREATEDATE : Integer = 5
+PARAMNUM_MODIFYDATE : Integer = 6

+Progreso(entrada args : ProgresoEventArgs)


+OnNotificar(entrada descripcion : String)
+OnNotificarError(entrada origen : String, entrada descripcion : String)
+OnNotificarErrorControlado(entrada origen : String, entrada descripcion : String)
+OnNotificarErrorNoControlado(entrada origen : String, entrada descripcion : String)
+Notificar(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+NotificarError(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+NotificarErrorControlado(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+NotificarErrorNoControlado(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+Comparar(entrada obj1 : Object, entrada obj2 : Object, entrada campo : Integer) : Integer
+OrdenarElementos(entrada elemento1 : Integer, entrada elemento2 : Integer)
+Ordenar()
+ProgresoOrdenamiento(entrada progreso : Integer, entrada total : Integer)
+Count() : Integer
+GetEnumerator() : IEnumerator
+Agregar(entrada usuarioID : Integer, entrada nombreUsuario : String, entrada contrasenaUsuario : String, entrada empleadoID : Integer) : Integer
+MarcarParaBorrar(entrada clienteID : Integer) : Boolean
+Recuperar(entrada clienteID : Integer) : Boolean
+Remover(entrada indice : Integer) : Boolean
+OrdenadoPor() : OrdenadoPor
+Elementos(entrada Indice : Integer) : CUsuario
+Agregar(entrada Usuario : CUsuario) : Integer
+Buscar(entrada UsuarioID : Integer) : CUsuario
+New()
+FinalizarProceso(entrada args : ProgresoEventArgs)
+IniciarProceso(entrada args : ProgresoEventArgs)

IOBPUsuario::UsuarioPersistente

#ActualizarColeccion_Con_DatosDevueltos(entrada reader : SqlDataReader, entrada y salida entidad : Entidad)


#PrepararDatos_Para_Insertar(entrada entidad : Entidad, entrada y salida comandoSQL : SqlCommand) : Object
#ProcAlmacenado_Insertar() : String
#ProcAlmacenado_Eliminar() : String
#ProcAlmacenado_Actualizar() : String
#PrepararDatos_para_Borrar(entrada oEntidad : Entidad, entrada y salida oComandoSQL : SqlCommand) : Object
#PrepararDatos_para_Actualizar(entrada oEntidad : Entidad, entrada y salida oComandoSQL : SqlCommand) : Object
+New(entrada y salida coleccion : ColUsuario)
enumeracinIOBPUsuario::OrdenadoPor

instance

+SinOrden = -1
+UsuarioID = 0
+NombreUsuario

IOBPUsuario::IOBPFabricaUsuario

#CrearInstanciaDeClase() : Entidad
#CrearInstanciaDeColeccion() : ColeccionEntidades
#ProcAlmacenadoSeleccionar() : String
#AsignarDatosAClase(entrada y salida entidad : Entidad, entrada y salida reader : SqlDataReader)
+Obtener(entrada tokenSeguridad : String, entrada UsuarioID : Integer = SIN_PARAMETRO_OPCIONAL) : ColUsuario
+Buscar(entrada tokenSeguridad : String, entrada UsuarioID : Integer = SIN_PARAMETRO_OPCIONAL, entrada nombreUsuario : String = "", entrada contrasenaUsuario : String = "", entrada empleadoID : Integer = SIN_PARAMETRO_OPCIONAL, entrada recuperarRegistros : Registros = Tipos.Registros.NoBorrados) : ColUsuario
+Nuevo(entrada tokenSeguridad : String) : ColUsuario
+New()

B27 Diagrama de estructura esttica del componente Usuario.

Logs::LogEventos

+WriteToEventLog(entrada Entry : String, entrada AppName : String = "SACH", entrada EventType : EventLogEntryType = EventLogEntryType.Information, entrada LogName : String = "SACH") : Boolean

Utilidades::Fecha

Mail::LogEventosMail
-ENCABEZADO_MAIL : String
-PIE_MAIL : String
+SendEventoMail(entrada evento : String, entrada asunto : String = "Notificacin de error de SACH") : Boolean
+SendErrorMail(entrada e : Exception, entrada asunto : String = "Notificacin de error de SACH") : Boolean

+UltimoDiaMes(entrada fecha : Date) : Date


+PrimerDiaMes(entrada fecha : Date) : Date
-New()
+A_Texto(entrada cadena : String, entrada tipo : TipoTexto = TipoTexto.Texto_IniciaMayusculas) : String
+DiaDeLaSemana(entrada fecha : Date) : String
+MesDelAo(entrada fecha : Date) : String
+FechaCompleta(entrada fecha : Date, entrada tipo : Fechas = Fechas.Reducida) : String

Registro::RegistroBase
-_PatronClave : String = "Software\SACH"

enumeracinUtilidades::TipoTexto

-CrearSubCategoriaBase(entrada nombre : String)


#EscribirClaveBase(entrada categoria : CategoriasRegistro, entrada clave : String, entrada valor : Object, entrada aplicacion : String)
#LeerClaveBase(entrada categoria : CategoriasRegistro, entrada clave : String, entrada aplicacion : String) : Object

+Mayusculas
+Minusculas
+PrimeraLetraMayuscula
+Capitalizadas

Registro::RegistroSistema

+EscribirClave(entrada categoria : CategoriasRegistro, entrada clave : String, entrada valor : Object)


+LeerClave(entrada categoria : CategoriasRegistro, entrada clave : String) : Object
+ExisteClave(entrada categoria : CategoriasRegistro, entrada clave : String, entrada valorPorDefecto : Object) : Object

enumeracinUtilidades::CategoriasRegistro
+Parametro
+Opciones
+PorDefecto
+Seguridad

B28 Diagrama de estructura esttica del componente Utilidades.

Servicios::ServicioAbstracto
-_TokenSeguridad : String
#_EstadoServicio : EstadoServicio = Servicios.EstadoServicio.Detenido
-_HoraInicio : Date
+Nombre() : String
+InicializarServicio()
+FinalizarServicio()
+Inicializado(entrada origen : Object, entrada args : ServicioEventArgs)
+Finalizado(entrada origen : Object, entrada args : ServicioEventArgs)
+Inicializando(entrada origen : Object, entrada args : ServicioEventArgs)
+Finalizando(entrada origen : Object, entrada args : ServicioEventArgs)
+ErrorServicio(entrada origen : Object, entrada e : Exception)
+HoraInicio() : Date
#GenerarServicioID() : String
#OnInicializando(entrada e : ServicioEventArgs)
#OnInicializado(entrada e : ServicioEventArgs)
#OnFinalizando(entrada e : ServicioEventArgs)
#OnFinalizado(entrada e : ServicioEventArgs)
#OnErrorServicio(entrada ex : Exception)
+New()

interfazServicios::IServicio
+Nombre() : String
+InicializarServicio()
+FinalizarServicio()
+Inicializado(entrada origen : Object, entrada args : ServicioEventArgs)
+Finalizado(entrada origen : Object, entrada args : ServicioEventArgs)
+Inicializando(entrada origen : Object, entrada args : ServicioEventArgs)
+Finalizando(entrada origen : Object, entrada args : ServicioEventArgs)
+ErrorServicio(entrada origen : Object, entrada e : Exception)

Servicios::AdministradorServicios
-_ListaServicios : ArrayList = New System.Collections.ArrayList
-_ServiciosHashtable : Hashtable = New System.Collections.Hashtable
-AdministradorServiciosPorDefecto : AdministradorServicios = New Servicios.AdministradorServicios
+Servicios() : AdministradorServicios
-New()
+InicializarTodosServicios()
+FinalizarTodosServicios()
+AgregarServicio(entrada servicio : IServicio) : IServicio
+AgregarServicios(entrada servicios() : IServicio) : IServicio
+ObtenerServicio(entrada tipoServicio : Type) : IServicio
+AsignarTokenSeguridad(entrada tokenSeguridad : String)

Locales::ServicioCargos
+Nombre() : String
+InicializarServicio()
+FinalizarServicio()
+Inicializado(entrada origen : Object, entrada args : ServicioEventArgs)
+Finalizado(entrada origen : Object, entrada args : ServicioEventArgs)
+Inicializando(entrada origen : Object, entrada args : ServicioEventArgs)
+Finalizando(entrada origen : Object, entrada args : ServicioEventArgs)
+ErrorServicio(entrada origen : Object, entrada e : Exception)
+AgregarNuevoCargo(entrada nombre : String, entrada descripcion : String, entrada salarioDiario : Decimal, entrada horasJornada : Integer) : Integer
+ObtenerTodosCargos() : IColCargo
+ObtenerCargoPorID(entrada cargoID : Integer) : ICCargo
+EliminarCargo(entrada cargoID : Integer) : Boolean
+Estado() : EstadoServicio
+ServicioID() : String
+New(entrada tokenSeguridad : String)
+New()
#Finalize()

B29 Diagrama de estructura esttica para el servicio de administracin de cargos.

Servicios::ServicioAbstracto
-_TokenSeguridad : String
#_EstadoServicio : EstadoServicio = Servicios.EstadoServicio.Detenido
-_HoraInicio : Date
+Nombre() : String
+InicializarServicio()
+FinalizarServicio()
+Inicializado(entrada origen : Object, entrada args : ServicioEventArgs)
+Finalizado(entrada origen : Object, entrada args : ServicioEventArgs)
+Inicializando(entrada origen : Object, entrada args : ServicioEventArgs)
+Finalizando(entrada origen : Object, entrada args : ServicioEventArgs)
+ErrorServicio(entrada origen : Object, entrada e : Exception)
+HoraInicio() : Date
#GenerarServicioID() : String
#OnInicializando(entrada e : ServicioEventArgs)
#OnInicializado(entrada e : ServicioEventArgs)
#OnFinalizando(entrada e : ServicioEventArgs)
#OnFinalizado(entrada e : ServicioEventArgs)
#OnErrorServicio(entrada ex : Exception)
+New()

Servicios::AdministradorServicios
-_ListaServicios : ArrayList = New System.Collections.ArrayList
-_ServiciosHashtable : Hashtable = New System.Collections.Hashtable
-AdministradorServiciosPorDefecto : AdministradorServicios = New Servicios.AdministradorServicios
+Servicios() : AdministradorServicios
-New()
+InicializarTodosServicios()
+FinalizarTodosServicios()
+AgregarServicio(entrada servicio : IServicio) : IServicio
+AgregarServicios(entrada servicios() : IServicio) : IServicio
+ObtenerServicio(entrada tipoServicio : Type) : IServicio
+AsignarTokenSeguridad(entrada tokenSeguridad : String)

interfazServicios::IServicio
+Nombre() : String
+InicializarServicio()
+FinalizarServicio()
+Inicializado(entrada origen : Object, entrada args : ServicioEventArgs)
+Finalizado(entrada origen : Object, entrada args : ServicioEventArgs)
+Inicializando(entrada origen : Object, entrada args : ServicioEventArgs)
+Finalizando(entrada origen : Object, entrada args : ServicioEventArgs)
+ErrorServicio(entrada origen : Object, entrada e : Exception)

Locales::ServicioDepartamentos
+Nombre() : String
+InicializarServicio()
+FinalizarServicio()
+Inicializado(entrada origen : Object, entrada args : ServicioEventArgs)
+Finalizado(entrada origen : Object, entrada args : ServicioEventArgs)
+Inicializando(entrada origen : Object, entrada args : ServicioEventArgs)
+Finalizando(entrada origen : Object, entrada args : ServicioEventArgs)
+ErrorServicio(entrada origen : Object, entrada e : Exception)
+ObtenerTodosDepartamentos() : IColDepartamento
+AgregarNuevoDepartamento(entrada descripcion : String, entrada observaciones : String)
+EliminarDepartamento(entrada departamentoID : Integer)
+ActualizarDepartamento(entrada departamentoID : Integer, entrada descripcion : String, entrada observaciones : String)
+Estado() : EstadoServicio
+ServicioID() : String
+New(entrada tokenSeguridad : String)
+New()
+ObtenerDepartamentoPorID(entrada DepartamentoID : Integer) : IColDepartamento
#Finalize()

B30 Diagrama de estructura esttica para el servicio de administracin de departamentos.

Servicios::ServicioAbstracto
-_TokenSeguridad : String
#_EstadoServicio : EstadoServicio = Servicios.EstadoServicio.Detenido
-_HoraInicio : Date

Servicios::AdministradorServicios
-_ListaServicios : ArrayList = New System.Collections.ArrayList
-_ServiciosHashtable : Hashtable = New System.Collections.Hashtable
-AdministradorServiciosPorDefecto : AdministradorServicios = New Servicios.AdministradorServicios
+Servicios() : AdministradorServicios
-New()
+InicializarTodosServicios()
+FinalizarTodosServicios()
+AgregarServicio(entrada servicio : IServicio) : IServicio
+AgregarServicios(entrada servicios() : IServicio) : IServicio
+ObtenerServicio(entrada tipoServicio : Type) : IServicio
+AsignarTokenSeguridad(entrada tokenSeguridad : String)

+Nombre() : String
+InicializarServicio()
+FinalizarServicio()
+Inicializado(entrada origen : Object, entrada args : ServicioEventArgs)
+Finalizado(entrada origen : Object, entrada args : ServicioEventArgs)
+Inicializando(entrada origen : Object, entrada args : ServicioEventArgs)
+Finalizando(entrada origen : Object, entrada args : ServicioEventArgs)
+ErrorServicio(entrada origen : Object, entrada e : Exception)
+HoraInicio() : Date
#GenerarServicioID() : String
#OnInicializando(entrada e : ServicioEventArgs)
#OnInicializado(entrada e : ServicioEventArgs)
#OnFinalizando(entrada e : ServicioEventArgs)
#OnFinalizado(entrada e : ServicioEventArgs)
#OnErrorServicio(entrada ex : Exception)
+New()

Servicios::ServicioEventArgs
-_NombreServicio : String
+NombreServicio() : String
+New(entrada nombreServicio : String)
+New()

Servicios::EstadoServicioArgs
+Estado : EstadoServicio
+NombreEstadoServicio() : String

Locales::ServicioEmpleados

+Nombre()
+InicializarServicio()
+FinalizarServicio()
+Inicializado()
+Finalizado()
+Inicializando()
+Finalizando()
+ErrorServicio()
+AgregarNuevoEmpleado()
+ObtenerTodosEmpleados()
+ObtenerEmpleadoPorID()
+EliminarEmpleado()
+Estado()
+ServicioID()
+New()
+New()
#Finalize()

enumeracin
Servicios::EstadoServicio
interfazServicios::IServicio
+Nombre() : String
+InicializarServicio()
+FinalizarServicio()
+Inicializado(entrada origen : Object, entrada args : ServicioEventArgs)
+Finalizado(entrada origen : Object, entrada args : ServicioEventArgs)
+Inicializando(entrada origen : Object, entrada args : ServicioEventArgs)
+Finalizando(entrada origen : Object, entrada args : ServicioEventArgs)
+ErrorServicio(entrada origen : Object, entrada e : Exception)

+Iniciado = 1
+Iniciando = 0
+Detenido = 3
+Deteniendo = 2

B31 Diagrama de estructura esttica para el servicio de administracin de empleados.

Servicios::AdministradorServicios
-_ListaServicios : ArrayList = New System.Collections.ArrayList
-_ServiciosHashtable : Hashtable = New System.Collections.Hashtable
-AdministradorServiciosPorDefecto : AdministradorServicios = New Servicios.AdministradorServicios
+Servicios() : AdministradorServicios
-New()
+InicializarTodosServicios()
+FinalizarTodosServicios()
+AgregarServicio(entrada servicio : IServicio) : IServicio
+AgregarServicios(entrada servicios() : IServicio) : IServicio
+ObtenerServicio(entrada tipoServicio : Type) : IServicio
+AsignarTokenSeguridad(entrada tokenSeguridad : String)

Locales::ServicioMovimientosNomina

+Nombre() : String
+InicializarServicio()
+FinalizarServicio()
+Inicializado(entrada origen : Object, entrada args : ServicioEventArgs)
+Finalizado(entrada origen : Object, entrada args : ServicioEventArgs)
+Inicializando(entrada origen : Object, entrada args : ServicioEventArgs)
+Finalizando(entrada origen : Object, entrada args : ServicioEventArgs)
+ErrorServicio(entrada origen : Object, entrada e : Exception)
+Estado() : EstadoServicio
+ServicioID() : String
+New(entrada tokenSeguridad : String)
+New()
+ObtenerTodosMovimientosNomina() : IColNomina
+ObtenerMovimientoNominaPorID(entrada nominaID : Integer) : ICNomina
+AgregarNuevaNomina(entrada nombre : String, entrada descripcion : String, entrada frecuencia : Frecuencias, entrada activo : Activos, entrada comentario : String) : Integer
+EliminarNomina(entrada nominaID : Integer) : Boolean
+ObtenerMovimientosEmpleado(entrada empleadoID : Integer, entrada nominaID : Integer, entrada periodoPagoID : Integer) : IColMovimiento
#Finalize()

interfazServicios::IServicio
+Nombre() : String
+InicializarServicio()
+FinalizarServicio()
+Inicializado(entrada origen : Object, entrada args : ServicioEventArgs)
+Finalizado(entrada origen : Object, entrada args : ServicioEventArgs)
+Inicializando(entrada origen : Object, entrada args : ServicioEventArgs)
+Finalizando(entrada origen : Object, entrada args : ServicioEventArgs)
+ErrorServicio(entrada origen : Object, entrada e : Exception)

enumeracinServicios::EstadoServicio
+Iniciado = 1
+Iniciando = 0
+Detenido = 3
+Deteniendo = 2

Servicios::EstadoServicioArgs
Servicios::ServicioAbstracto
-_TokenSeguridad : String
#_EstadoServicio : EstadoServicio = Servicios.EstadoServicio.Detenido
-_HoraInicio : Date
+Nombre() : String
+InicializarServicio()
+FinalizarServicio()
+Inicializado(entrada origen : Object, entrada args : ServicioEventArgs)
+Finalizado(entrada origen : Object, entrada args : ServicioEventArgs)
+Inicializando(entrada origen : Object, entrada args : ServicioEventArgs)
+Finalizando(entrada origen : Object, entrada args : ServicioEventArgs)
+ErrorServicio(entrada origen : Object, entrada e : Exception)
+HoraInicio() : Date
#GenerarServicioID() : String
#OnInicializando(entrada e : ServicioEventArgs)
#OnInicializado(entrada e : ServicioEventArgs)
#OnFinalizando(entrada e : ServicioEventArgs)
#OnFinalizado(entrada e : ServicioEventArgs)
#OnErrorServicio(entrada ex : Exception)
+New()

+Estado : EstadoServicio
+NombreEstadoServicio() : String

Servicios::ServicioEventArgs
-_NombreServicio : String
+NombreServicio() : String
+New(entrada nombreServicio : String)
+New()

B32 Diagrama de estructura esttica para el servicio de administracin de movimientos de nmina.

Servicios::AdministradorServicios
-_ListaServicios : ArrayList = New System.Collections.ArrayList
-_ServiciosHashtable : Hashtable = New System.Collections.Hashtable
-AdministradorServiciosPorDefecto : AdministradorServicios = New Servicios.AdministradorServicios
+Servicios() : AdministradorServicios
-New()
+InicializarTodosServicios()
+FinalizarTodosServicios()
+AgregarServicio(entrada servicio : IServicio) : IServicio
+AgregarServicios(entrada servicios() : IServicio) : IServicio
+ObtenerServicio(entrada tipoServicio : Type) : IServicio
+AsignarTokenSeguridad(entrada tokenSeguridad : String)

Servicios::ServicioEventArgs
-_NombreServicio : String
+NombreServicio() : String
+New(entrada nombreServicio : String)
+New()

Servicios::EstadoServicioArgs
+Estado : EstadoServicio
+NombreEstadoServicio() : String

Locales::ServicioNominas

+Nombre() : String
+InicializarServicio()
+FinalizarServicio()
+Inicializado(entrada origen : Object, entrada args : ServicioEventArgs)
+Finalizado(entrada origen : Object, entrada args : ServicioEventArgs)
+Inicializando(entrada origen : Object, entrada args : ServicioEventArgs)
+Finalizando(entrada origen : Object, entrada args : ServicioEventArgs)
+ErrorServicio(entrada origen : Object, entrada e : Exception)
+ObtenerNominaPorID(entrada nominaID : Integer) : ICNomina
+EliminarNomina(entrada nominaID : Integer) : Boolean
+AgregarNuevaNomina(entrada nombre : String, entrada descripcion : String, entrada frecuencia : Frecuencias, entrada activa : Activos, entrada comentario : String) : Integer
+ObtenerMiembrosNomina(entrada nominaID : Integer) : IColMiembroNomina
+AgregarEmpleadoANomina(entrada empleadoID : Integer, entrada nominaID : Integer) : Integer
+Estado() : EstadoServicio
+ServicioID() : String
+New(entrada tokenSeguridad : String)
+New()
+ObtenerTodosNomina() : IColNomina
#Finalize()

Servicios::ServicioAbstracto
-_TokenSeguridad : String
#_EstadoServicio : EstadoServicio = Servicios.EstadoServicio.Detenido
-_HoraInicio : Date
+Nombre() : String
+InicializarServicio()
+FinalizarServicio()
+Inicializado(entrada origen : Object, entrada args : ServicioEventArgs)
+Finalizado(entrada origen : Object, entrada args : ServicioEventArgs)
+Inicializando(entrada origen : Object, entrada args : ServicioEventArgs)
+Finalizando(entrada origen : Object, entrada args : ServicioEventArgs)
+ErrorServicio(entrada origen : Object, entrada e : Exception)
+HoraInicio() : Date
#GenerarServicioID() : String
#OnInicializando(entrada e : ServicioEventArgs)
#OnInicializado(entrada e : ServicioEventArgs)
#OnFinalizando(entrada e : ServicioEventArgs)
#OnFinalizado(entrada e : ServicioEventArgs)
#OnErrorServicio(entrada ex : Exception)
+New()

interfazServicios::IServicio
+Nombre() : String
+InicializarServicio()
+FinalizarServicio()
+Inicializado(entrada origen : Object, entrada args : ServicioEventArgs)
+Finalizado(entrada origen : Object, entrada args : ServicioEventArgs)
+Inicializando(entrada origen : Object, entrada args : ServicioEventArgs)
+Finalizando(entrada origen : Object, entrada args : ServicioEventArgs)
+ErrorServicio(entrada origen : Object, entrada e : Exception)

enumeracinServicios::EstadoServicio
+Iniciado = 1
+Iniciando = 0
+Detenido = 3
+Deteniendo = 2

B33 Diagrama de estructura esttica del servicio de administracin de nminas.

Servicios::ServicioAbstracto
-_TokenSeguridad : String
#_EstadoServicio : EstadoServicio = Servicios.EstadoServicio.Detenido
-_HoraInicio : Date
+Nombre() : String
+InicializarServicio()
+FinalizarServicio()
+Inicializado(entrada origen : Object, entrada args : ServicioEventArgs)
+Finalizado(entrada origen : Object, entrada args : ServicioEventArgs)
+Inicializando(entrada origen : Object, entrada args : ServicioEventArgs)
+Finalizando(entrada origen : Object, entrada args : ServicioEventArgs)
+ErrorServicio(entrada origen : Object, entrada e : Exception)
+HoraInicio() : Date
#GenerarServicioID() : String
#OnInicializando(entrada e : ServicioEventArgs)
#OnInicializado(entrada e : ServicioEventArgs)
#OnFinalizando(entrada e : ServicioEventArgs)
#OnFinalizado(entrada e : ServicioEventArgs)
#OnErrorServicio(entrada ex : Exception)
+New()

Servicios::AdministradorServicios
-_ListaServicios : ArrayList = New System.Collections.ArrayList
-_ServiciosHashtable : Hashtable = New System.Collections.Hashtable
-AdministradorServiciosPorDefecto : AdministradorServicios = New Servicios.AdministradorServicios
+Servicios() : AdministradorServicios
-New()
+InicializarTodosServicios()
+FinalizarTodosServicios()
+AgregarServicio(entrada servicio : IServicio) : IServicio
+AgregarServicios(entrada servicios() : IServicio) : IServicio
+ObtenerServicio(entrada tipoServicio : Type) : IServicio
+AsignarTokenSeguridad(entrada tokenSeguridad : String)

interfazServicios::IServicio
+Nombre() : String
+InicializarServicio()
+FinalizarServicio()
+Inicializado(entrada origen : Object, entrada args : ServicioEventArgs)
+Finalizado(entrada origen : Object, entrada args : ServicioEventArgs)
+Inicializando(entrada origen : Object, entrada args : ServicioEventArgs)
+Finalizando(entrada origen : Object, entrada args : ServicioEventArgs)
+ErrorServicio(entrada origen : Object, entrada e : Exception)

Servicios::ServicioEventArgs
-_NombreServicio : String
+NombreServicio() : String
+New(entrada nombreServicio : String)
+New()

Servicios::EstadoServicioArgs
+Estado : EstadoServicio
+NombreEstadoServicio() : String

enumeracinServicios::EstadoServicio
+Iniciado = 1
+Iniciando = 0
+Detenido = 3
+Deteniendo = 2

Locales::ServicioPersonas

+Nombre() : String
+InicializarServicio()
+FinalizarServicio()
+Inicializado(entrada origen : Object, entrada args : ServicioEventArgs)
+Finalizado(entrada origen : Object, entrada args : ServicioEventArgs)
+Inicializando(entrada origen : Object, entrada args : ServicioEventArgs)
+Finalizando(entrada origen : Object, entrada args : ServicioEventArgs)
+ErrorServicio(entrada origen : Object, entrada e : Exception)
+ObtenerTodosPersonas() : IColPersona
+AgregarNuevoPersona(entrada cedula : Integer, entrada nombres : String, entrada apellidos : String, entrada fotografia : Image, entrada direccion : String, entrada fechaNacimiento : Date, entrada tlfnoHabitacion : String, entrada tlfnoMovil : String, entrada sexo : Integer, entrada estadoCivil : Integer, entrada observacionesPersonales : String) : Integer
+ModificarPersona(entrada cedula : Integer, entrada nombres : String, entrada apellidos : String, entrada fotografia : Image, entrada direccion : String, entrada fechaNacimiento : Date, entrada tlfnoHabitacion : String, entrada tlfnoMovil : String, entrada Sexo : Integer, entrada EstadoCivil : Integer, entrada observacionesPersonales : String) : Integer
+Estado() : EstadoServicio
+ServicioID() : String
+New(entrada tokenSeguridad : String)
+New()
+ObtenerPersonaPorID(entrada PersonaID : Integer) : IColPersona
+ObtenerPersonaPorCedula(entrada cedulaID : Integer) : IColPersona
#Finalize()

B34 Diagrama de estructura esttica para el servicio de administracin de personas.

Locales::ServicioSesiones
Servicios::AdministradorServicios
-_ListaServicios : ArrayList = New System.Collections.ArrayList
-_ServiciosHashtable : Hashtable = New System.Collections.Hashtable
-AdministradorServiciosPorDefecto : AdministradorServicios = New Servicios.AdministradorServicios
+Servicios() : AdministradorServicios
-New()
+InicializarTodosServicios()
+FinalizarTodosServicios()
+AgregarServicio(entrada servicio : IServicio) : IServicio
+AgregarServicios(entrada servicios() : IServicio) : IServicio
+ObtenerServicio(entrada tipoServicio : Type) : IServicio
+AsignarTokenSeguridad(entrada tokenSeguridad : String)

+Nombre() : String
+InicializarServicio()
+FinalizarServicio()
+Inicializado(entrada origen : Object, entrada args : ServicioEventArgs)
+Finalizado(entrada origen : Object, entrada args : ServicioEventArgs)
+Inicializando(entrada origen : Object, entrada args : ServicioEventArgs)
+Finalizando(entrada origen : Object, entrada args : ServicioEventArgs)
+ErrorServicio(entrada origen : Object, entrada e : Exception)
+ObtenerTodasSesiones() : IColSesion
+ObtenerSesionPorID(entrada sesionID : Integer) : ICSesion
+EliminarSesion(entrada sesionID : Integer) : Boolean
+RegistrarInicioSesion(entrada usuarioID : Integer) : Integer
+RegistrarFinalSesion(entrada sesionID : Integer)
+IniciarSesion(entrada usuario : String, entrada contrasenia : String) : Integer
+Estado() : EstadoServicio
+ServicioID() : String
+New(entrada tokenSeguridad : String)
+New()
#Finalize()

Servicios::ServicioAbstracto

interfazServicios::IServicio
+Nombre() : String
+InicializarServicio()
+FinalizarServicio()
+Inicializado(entrada origen : Object, entrada args : ServicioEventArgs)
+Finalizado(entrada origen : Object, entrada args : ServicioEventArgs)
+Inicializando(entrada origen : Object, entrada args : ServicioEventArgs)
+Finalizando(entrada origen : Object, entrada args : ServicioEventArgs)
+ErrorServicio(entrada origen : Object, entrada e : Exception)

-_TokenSeguridad : String
#_EstadoServicio : EstadoServicio = Servicios.EstadoServicio.Detenido
-_HoraInicio : Date
+Nombre() : String
+InicializarServicio()
+FinalizarServicio()
+Inicializado(entrada origen : Object, entrada args : ServicioEventArgs)
+Finalizado(entrada origen : Object, entrada args : ServicioEventArgs)
+Inicializando(entrada origen : Object, entrada args : ServicioEventArgs)
+Finalizando(entrada origen : Object, entrada args : ServicioEventArgs)
+ErrorServicio(entrada origen : Object, entrada e : Exception)
+HoraInicio() : Date
#GenerarServicioID() : String
#OnInicializando(entrada e : ServicioEventArgs)
#OnInicializado(entrada e : ServicioEventArgs)
#OnFinalizando(entrada e : ServicioEventArgs)
#OnFinalizado(entrada e : ServicioEventArgs)
#OnErrorServicio(entrada ex : Exception)
+New()

Servicios::ServicioEventArgs
-_NombreServicio : String
+NombreServicio() : String
+New(entrada nombreServicio : String)
+New()

enumeracinServicios::EstadoServicio
Servicios::EstadoServicioArgs
+Estado : EstadoServicio
+NombreEstadoServicio() : String

+Iniciado = 1
+Iniciando = 0
+Detenido = 3
+Deteniendo = 2

B35 Diagrama de estructura esttica para el servicio de administracin de sesiones.

Servicios::AdministradorServicios
-_ListaServicios : ArrayList = New System.Collections.ArrayList
-_ServiciosHashtable : Hashtable = New System.Collections.Hashtable
-AdministradorServiciosPorDefecto : AdministradorServicios = New Servicios.AdministradorServicios
+Servicios() : AdministradorServicios
-New()
+InicializarTodosServicios()
+FinalizarTodosServicios()
+AgregarServicio(entrada servicio : IServicio) : IServicio
+AgregarServicios(entrada servicios() : IServicio) : IServicio
+ObtenerServicio(entrada tipoServicio : Type) : IServicio
+AsignarTokenSeguridad(entrada tokenSeguridad : String)

interfazServicios::IServicio
+Nombre() : String
+InicializarServicio()
+FinalizarServicio()
+Inicializado(entrada origen : Object, entrada args : ServicioEventArgs)
+Finalizado(entrada origen : Object, entrada args : ServicioEventArgs)
+Inicializando(entrada origen : Object, entrada args : ServicioEventArgs)
+Finalizando(entrada origen : Object, entrada args : ServicioEventArgs)
+ErrorServicio(entrada origen : Object, entrada e : Exception)

Servicios::ServicioAbstracto
-_TokenSeguridad : String
#_EstadoServicio : EstadoServicio = Servicios.EstadoServicio.Detenido
-_HoraInicio : Date
+Nombre() : String
+InicializarServicio()
+FinalizarServicio()
+Inicializado(entrada origen : Object, entrada args : ServicioEventArgs)
+Finalizado(entrada origen : Object, entrada args : ServicioEventArgs)
+Inicializando(entrada origen : Object, entrada args : ServicioEventArgs)
+Finalizando(entrada origen : Object, entrada args : ServicioEventArgs)
+ErrorServicio(entrada origen : Object, entrada e : Exception)
+HoraInicio() : Date
#GenerarServicioID() : String
#OnInicializando(entrada e : ServicioEventArgs)
#OnInicializado(entrada e : ServicioEventArgs)
#OnFinalizando(entrada e : ServicioEventArgs)
#OnFinalizado(entrada e : ServicioEventArgs)
#OnErrorServicio(entrada ex : Exception)
+New()

Servicios::ServicioEventArgs
-_NombreServicio : String

Locales::ServicioSincronizacion

+Nombre() : String
+InicializarServicio()
+FinalizarServicio()
+Inicializado(entrada origen : Object, entrada args : ServicioEventArgs)
+Finalizado(entrada origen : Object, entrada args : ServicioEventArgs)
+Inicializando(entrada origen : Object, entrada args : ServicioEventArgs)
+Finalizando(entrada origen : Object, entrada args : ServicioEventArgs)
+ErrorServicio(entrada origen : Object, entrada e : Exception)
+ObtenerFechaServidor() : Date
+ObtenerHoraServidor() : TimeSpan
+Estado() : EstadoServicio
+ServicioID() : String
+New(entrada tokenSeguridad : String)
+New()
#Finalize()

+NombreServicio() : String
+New(entrada nombreServicio : String)
+New()
enumeracinServicios::EstadoServicio
Servicios::EstadoServicioArgs
+Estado : EstadoServicio
+NombreEstadoServicio() : String

+Iniciado = 1
+Iniciando = 0
+Detenido = 3
+Deteniendo = 2

B36 Diagrama de estructura esttica para el servicio de sincronizacin.

interfazServicios::IServicio
+Nombre() : String
+InicializarServicio()
+FinalizarServicio()
+Inicializado(entrada origen : Object, entrada args : ServicioEventArgs)
+Finalizado(entrada origen : Object, entrada args : ServicioEventArgs)
+Inicializando(entrada origen : Object, entrada args : ServicioEventArgs)
+Finalizando(entrada origen : Object, entrada args : ServicioEventArgs)
+ErrorServicio(entrada origen : Object, entrada e : Exception)

Servicios::ServicioAbstracto
Locales::ServicioUsuarios
-_TokenSeguridad : String
#_EstadoServicio : EstadoServicio = Servicios.EstadoServicio.Detenido
-_HoraInicio : Date
+Nombre() : String
+InicializarServicio()
+FinalizarServicio()
+Inicializado(entrada origen : Object, entrada args : ServicioEventArgs)
+Finalizado(entrada origen : Object, entrada args : ServicioEventArgs)
+Inicializando(entrada origen : Object, entrada args : ServicioEventArgs)
+Finalizando(entrada origen : Object, entrada args : ServicioEventArgs)
+ErrorServicio(entrada origen : Object, entrada e : Exception)
+HoraInicio() : Date
#GenerarServicioID() : String
#OnInicializando(entrada e : ServicioEventArgs)
#OnInicializado(entrada e : ServicioEventArgs)
#OnFinalizando(entrada e : ServicioEventArgs)
#OnFinalizado(entrada e : ServicioEventArgs)
#OnErrorServicio(entrada ex : Exception)
+New()

+Nombre() : String
+InicializarServicio()
+FinalizarServicio()
+Inicializado(entrada origen : Object, entrada args : ServicioEventArgs)
+Finalizado(entrada origen : Object, entrada args : ServicioEventArgs)
+Inicializando(entrada origen : Object, entrada args : ServicioEventArgs)
+Finalizando(entrada origen : Object, entrada args : ServicioEventArgs)
+ErrorServicio(entrada origen : Object, entrada e : Exception)
+VerificarUsuario(entrada nombreUsuario : String, entrada contrasenaUsuario : String) : Integer
+Estado() : EstadoServicio
+ServicioID() : String
+New(entrada tokenSeguridad : String)
+AgregarUsuario(entrada usuarioID : Integer, entrada nombreUsuario : String, entrada contrasenaUsuario : String, entrada empleadoID : Integer = SIN_PARAMETRO_OPCIONAL) : Integer
+EliminarUsuario(entrada usuarioID : Integer) : Boolean
+New()
#Finalize()

Servicios::AdministradorServicios
-_ListaServicios : ArrayList = New System.Collections.ArrayList
-_ServiciosHashtable : Hashtable = New System.Collections.Hashtable
-AdministradorServiciosPorDefecto : AdministradorServicios = New Servicios.AdministradorServicios

Servicios::ServicioEventArg
-_NombreServicio : String
+NombreServicio() : String
+New(entrada nombreServicio : String)
+New()

+Servicios() : AdministradorServicios
-New()
+InicializarTodosServicios()
+FinalizarTodosServicios()
+AgregarServicio(entrada servicio : IServicio) : IServicio
+AgregarServicios(entrada servicios() : IServicio) : IServicio
+ObtenerServicio(entrada tipoServicio : Type) : IServicio
+AsignarTokenSeguridad(entrada tokenSeguridad : String)

Servicios::EstadoServicioArgs
+Estado : EstadoServicio
+NombreEstadoServicio() : String

enumeracinServicios::EstadoServicio
+Iniciado = 1
+Iniciando = 0
+Detenido = 3
+Deteniendo = 2

B37 Diagrama de estructura esttica para el servicio de administracin de usuarios.

Servicios::AdministradorServicios
-_ListaServicios : ArrayList = New System.Collections.ArrayList
-_ServiciosHashtable : Hashtable = New System.Collections.Hashtable
-AdministradorServiciosPorDefecto : AdministradorServicios = New Servicios.AdministradorServicios

Servicios::ServicioAbstracto
-_TokenSeguridad : String
#_EstadoServicio : EstadoServicio = Servicios.EstadoServicio.Detenido
-_HoraInicio : Date

+Servicios() : AdministradorServicios
-New()
+InicializarTodosServicios()
+FinalizarTodosServicios()
+AgregarServicio(entrada servicio : IServicio) : IServicio
+AgregarServicios(entrada servicios() : IServicio) : IServicio
+ObtenerServicio(entrada tipoServicio : Type) : IServicio
+AsignarTokenSeguridad(entrada tokenSeguridad : String)

+Nombre() : String
+InicializarServicio()
+FinalizarServicio()
+Inicializado(entrada origen : Object, entrada args : ServicioEventArgs)
+Finalizado(entrada origen : Object, entrada args : ServicioEventArgs)
+Inicializando(entrada origen : Object, entrada args : ServicioEventArgs)
+Finalizando(entrada origen : Object, entrada args : ServicioEventArgs)
+ErrorServicio(entrada origen : Object, entrada e : Exception)
+HoraInicio() : Date
#GenerarServicioID() : String
#OnInicializando(entrada e : ServicioEventArgs)
#OnInicializado(entrada e : ServicioEventArgs)
#OnFinalizando(entrada e : ServicioEventArgs)
#OnFinalizado(entrada e : ServicioEventArgs)
#OnErrorServicio(entrada ex : Exception)
+New()

Servicios::ServicioEventArgs
-_NombreServicio : String
+NombreServicio() : String
+New(entrada nombreServicio : String)
+New()

IServicio

Servicios::EstadoServicioArgs
+Estado : EstadoServicio
+NombreEstadoServicio() : String

Locales::ServicioPeriodosPago
-_PeriodoActual : CPeriodo

enumeracinServicios::EstadoServicio
+Iniciado = 1
+Iniciando = 0
+Detenido = 3
+Deteniendo = 2

+Nombre() : String
+InicializarServicio()
+FinalizarServicio()
+Inicializado(entrada origen : Object, entrada args : ServicioEventArgs)
+Finalizado(entrada origen : Object, entrada args : ServicioEventArgs)
+Inicializando(entrada origen : Object, entrada args : ServicioEventArgs)
+Finalizando(entrada origen : Object, entrada args : ServicioEventArgs)
+ErrorServicio(entrada origen : Object, entrada e : Exception)
+GenerarPeriodosPagoNomina(entrada nominaID : Integer, entrada frecuencia : Frecuencias) : IColPeriodo
+CargarPeriodosPago(entrada nominaID : Integer, entrada tipo : PeriodosPago = ModeloComponentes.Base.Tipos.PeriodosPago.Todos) : IColPeriodo
+CrearNuevoPeriodoPago(entrada nominaID : Integer) : ICPeriodo
+ObtenerPeriodo(entrada periodoID : Integer) : ICPeriodo
+ObtenerPeriodoActual(entrada nominaID : Integer) : ICPeriodo
+ObtenerUltimoPeriodoPagoCerrado(entrada nominaID : Integer, entrada frecuencia : Frecuencias) : ICPeriodo
+CerrarPeriodoPago(entrada fechaInicio : Date, entrada fechaFinal : Date) : Boolean
+CerrarPeriodoPago(entrada nominaID : Integer, entrada periodoID : Integer) : Boolean
+PeriodoActual() : CPeriodo
+Estado() : EstadoServicio
+ServicioID() : String
+New(entrada tokenSeguridad : String)
+New()
#Finalize()

B38 Diagrama de estructura esttica para el servicio de administracin de perodos de pago de nmina.

APNDICE C
Artefactos de diseo del Subsistema Ingresos

Iniciar sesin
uses
uses

Agregar
departamento

Seleccionar nodo
de facturacin
extends Agregar persona
uses
Asignar cliente

agregar cliente al
sistema

extends
Agregar empresa

uses
Asignar paciente

uses
Secretaria de departamento
o unidad hospitalaria

Asignar concepto a
factura

Agregar paciente
al sistema

Agregar concepto
de facturacin

uses
Agregar categora
de facturacin

Asignar forma de
pago

Registrar ingreso
de caja

uses
Agregar banco

extends

Imprimir Recibo de
Ingreso

Cliente
Registrar
Presupuesto

extends

Imprimir
Presupuesto

Imprimir relacin
de ingresos

Persona

Secretaria de pagos

C1 Diagrama de casos de uso para el Subsistema Ingresos.

Empresa

C2 Descripcin de los casos de uso del Subsistema Registro de Ingresos por


Departamento.
Nombre del caso de uso: Iniciar sesin.
Actores: Secretaria de departamento.
Resumen:
Permite iniciar la sesin en el sistema de nmina.
Pre-condiciones:
Curso normal de los eventos
Accin de los actores
Respuesta del sistema
1. Muestra la ventana de inicio de sesin.
2. La secretaria ingresa su nombre de
usuario y su contrasea para iniciar la
sesin.
3. Selecciona la opcin aceptar.
a) Si selecciona la opcin cancelar ver
seccin 1.
4. Busca el nombre y la contrasea del
usuario en la base de datos para verificar
que es vlido.
5. Si el nombre y contrasea del usuario
son vlidos se habilita la ventana
principal y los controles de la aplicacin.
a) Si con incorrectos los datos de inicio
de sesin ver seccin 2.
Flujos alternativos
Seccin 1:
1. Selecciona la opcin cancelar.
2. Cancela el inicio de sesin y se
deshabilitan la ventana principal y los
controles de la aplicacin.
Seccin 2:
1. Selecciona la opcin aceptar.
2. Si el nombre y la contrasea de
usuario no son vlidos el sistema muestra
un mensaje indicando que son
incorrectos.
3. Muestra la ventana de inicio de sesin
nuevamente para que el usuario lo intente
nuevamente.
Nombre del caso de uso: Seleccionar Nodo de Facturacin.
Actores: Secretaria de departamento.
Resumen: Selecciona el departamento (nodo) en el cual se va a registrar el ingreso.

Pre-condiciones:
1. Se debe haber iniciado una sesin en el sistema.
2. No debe haber otra nmina o pool abierto.
Curso normal de los eventos
Accin de los actores
Respuesta del sistema
1. Verifica si existe un nodo de
facturacin fijo definido en la aplicacin.
A) Si hay un nodo definido ver seccin 1.
1. Muestra la ventana de seleccin de
departamento.
3. Selecciona un departamento de la lista.
4. Carga el listado de departamentos del
sistema.
5. Selecciona la opcin iniciar siempre la
aplicacin en este nodo.
6. Selecciona la opcin aceptar.
a) Si selecciona la opcin cancelar ver
seccin 2.
7. Define el nodo seleccionado como el
nodo fijo de facturacin para la
aplicacin.
8. Cierra la ventana de seleccin y activa
la ventana principal de la aplicacin.
Flujos alternativos
Seccin 1:
1. Carga la informacin del nodo
definido.
2. Cierra la ventana de seleccin y activa
la ventana principal de la aplicacin.
Seccin 2:
1. Seleccionar la opcin cancelar
2. Cancela la operacin y se deshabilitan
la ventana principal y los controles de la
aplicacin.
Nombre del caso de uso: Asignar cliente.
Actores: Secretaria de departamento.
Resumen: Asignar el cliente que se registrar en el ingreso o en el presupuesto.
Pre-condiciones:
1. Se debe haber iniciado una sesin en el sistema.
Curso normal de los eventos
Accin de los actores
Respuesta del sistema

1. Ingresa la cdula o parte del nombre


del cliente en el campo de texto cliente.
a) Si la informacin suministrada son
slo cifras ver seccin 1.
b) Si la informacin suministrada es una
combinacin de letras y nmeros ver
seccin 2.
2. Selecciona la opcin cliente (botn) o
presiona la tecla ENTER.
3. Muestra la ventana de seleccin de
cliente con los clientes que corresponden
con la informacin de nmero de cdula
o nombre que se ingreso.
4. Selecciona el cliente de la lista de
personas.
a) Si Selecciona la opcin empresas
(pestaa) ver seccin 3.
5. Selecciona la opcin aceptar.
a) Si selecciona la opcin cancelar ver
seccin 4.
6. Cierra la ventana de seleccin de
clientes.
7. Asigna el cliente al ingreso o
presupuesto que se esta editando.
8. Activa el campo de texto paciente.
Flujos alternativos
Seccin 1:
1. Realiza una bsqueda en el sistema por
nmero de cdula de cliente.
Seccin 2:
1. Realiza una bsqueda en el sistema por
el nombre del cliente.
2. Se muestra la ventana de seleccin de
clientes y se muestran los clientes cuyo
nombre coincide con el ingresado.
Seccin 3:
1. Se cargan los clientes (empresas) que
coinciden con valor ingresado.
Seccin 4:
1. Muestra las empresas que coinciden
con la bsqueda del usuario.
Post-condiciones: Debe haber un cliente asignado al ingreso o presupuesto que se
esta editando.

Nombre del caso de uso: Agregar persona al sistema.


Actores: Secretaria de departamento.
Resumen: Agrega un nuevo cliente al sistema.
Pre-condiciones:
1. Se debe haber iniciado sesin en el sistema.
Curso normal de los eventos
Accin de los actores
Respuesta del sistema
1. Muestra la ventana de ingreso de
nuevo cliente (persona) al sistema.
2. Ingresa la cdula del cliente.
3. Cambia de campo de texto o presiona
la tecla ENTER.
4. Realiza una bsqueda en todo el
sistema por un cliente (persona) con la
cdula ingresada.
5. Si encuentra un cliente (persona) con
el nmero cdula ingresado muestra un
mensaje en pantalla indicando que el
cliente existe en el sistema.
a) Si no encuentra ninguna persona con
la cdula suministrada cambia al campo
de texto nombres.
6. Ingresa la informacin del nuevo
cliente.
7. Seleccionar la opcin Aceptar.
a) Si selecciona la opcin cancelar ver
seccin 1.
8. Agrega el cliente (persona) al sistema.
9. Pregunta al usuario si desea agregar el
cliente al ingreso o presupuesto que se
esta editando.
10. Selecciona la opcin S.
a) Si selecciona la opcin No ver seccin
2.
11. Cierre la ventana de ingreso de nuevo
cliente (persona).
12. Coloca el nombre del cliente en el
campo de texto cliente.
13. El foco (cursor) pasa al campo de
texto paciente.
Flujos alternativos

Seccin 1:
1. Se cancela la operacin y se cierra la
ventana de insercin de nuevo cliente.
Seccin 2:
1. Cierra la ventana de insercin de
nuevo cliente.
Nombre del caso de uso: Agregar empresa al sistema.
Actores: Secretaria de departamento.
Resumen: Permite agregar un nuevo cliente empresa al sistema.
Pre-condiciones:
1. Debe haber iniciado una sesin en el sistema.
Curso normal de los eventos
Accin de los actores
Respuesta del sistema
1. Muestra la ventana ingreso de nuevo
cliente (empresa).
2. Ingresa la informacin del nuevo
cliente (empresa).
3. Selecciona la opcin aceptar.
a) Si selecciona la opcin cancelar ver
seccin 1.
4. Agrega el nuevo cliente en el sistema.
5. Pregunta al usuario si desea agregar el
cliente al ingreso o presupuesto que se
esta editando.
6. Selecciona la opcin S.
a) Si selecciona la opcin No ver la
seccin 2.
7. Cierre la ventana de ingreso de nuevo
cliente (empresa).
8. Coloca el nombre del cliente en el
campo de texto cliente.
9. El foco (cursor) pasa al campo de texto
paciente.bre del cliente en el campo de
texto empresa.
10. El foco (cursor) pasa al campo de
texto concepto.
Flujos alternativos
Seccin 1:
1. Selecciona la opcin cancelar.
1. Se cancela la operacin y se cierra la
ventana de insercin de nuevo cliente
(empresa).
Seccin 2:
1. Selecciona la opcin No.
1. Cierra la ventana de insercin de

nuevo cliente (empresa).


Post-condiciones: Debe haber un cliente seleccionado al ingreso o presupuesto que
se esta editando.

Nombre del caso de uso: Asignar paciente.


Actores: Secretaria de departamento.
Resumen: Asignar el paciente que se registrar en el ingreso o en el presupuesto.
Pre-condiciones:
1. Se debe haber iniciado una sesin en el sistema.
Curso normal de los eventos
Accin de los actores
Respuesta del sistema
1. Ingresa la cdula o parte del nombre
del paciente en el campo de texto
paciente.
2. Selecciona la opcin paciente (botn)
o presiona la tecla ENTER.
a) Si la informacin suministrada son
slo cifras ver seccin 1.
b) Si la informacin suministrada es una
combinacin de letras y nmeros ver
seccin 2.
3. Muestra la ventana
pacientes con los
corresponden con la
nmero de cdula o
ingreso.

de seleccin de
pacientes que
informacin de
nombre que se

4. Selecciona la opcin aceptar.


a) Si selecciona la opcin cancelar ver
seccin 4.
5. Cierra la ventana de seleccin de
pacientes.
6. Asigna el paciente al ingreso o
presupuesto que se esta editando.
7. Activa el campo de texto concepto.
Flujos alternativos
Seccin 1:
1. Realiza una bsqueda en el sistema por
nmero de cdula de cliente.
2. Se muestra la ventana de seleccin de
pacientes y se muestran los pacientes

cuyo nombre coincide con el ingresado.


Seccin 2:
1. Realiza una bsqueda en el sistema por
el nombre del paciente.
2. Se muestra la ventana de seleccin de
pacientes y se muestran los pacientes
cuyo nombre coincide con el ingresado.
Post-condiciones: Debe haber un paciente asignado al ingreso o presupuesto que se
esta editando.

Nombre del caso de uso: Agregar paciente al sistema.


Actores: Secretaria de departamento.
Resumen: Agrega un nuevo paciente al sistema.
Pre-condiciones:
1. Se debe haber iniciado una sesin en el sistema.
Curso normal de los eventos
Accin de los actores
Respuesta del sistema
1. Muestra la ventana (formulario) de
ingreso de nuevo paciente.
2. Ingresa la cdula del paciente y
presiona la tecla ENTER.
3. Busca en el sistema un paciente con el
nmero de cdula ingresado.
a) Si existe un paciente en ese nmero de
cdula ver seccin 1.
4. Cambia al campo de texto nombres.
5. Ingresa los datos del paciente.
6. Selecciona la opcin Aceptar.
a) Si selecciona la opcin Cancelar ver
seccin 2.
7. Ingresa el nuevo paciente en el sistema
y cierra le ventana (formulario) de
ingreso de nuevo paciente.
Flujos alternativos
Seccin 1:
1. Muestra un mensaje indicando que el
paciente ya existe en el sistema.
Seccin 2:
1. Cancela la operacin y cierra la
ventana (formulario)
de ingreso de
nuevo paciente.
Post-condiciones: Debe haber un paciente asignado al ingreso o presupuesto que se
est editando.

Nombre del caso de uso: Asignar concepto a factura.


Actores: Secretaria de departamento.
Resumen: Asigna un concepto al ingreso o presupuesto.
Pre-condiciones:
1. Se debe haber iniciado una sesin en el sistema.
Curso normal de los eventos
Accin de los actores
Respuesta del sistema
1. Ingresa parte del nombre del concepto
en el campo de texto concepto.
2. Muestra la ventana de seleccin de
conceptos.
3. Carga los conceptos que coinciden con
el nombre del concepto ingresado.
4. Selecciona una categora de la lista de
categoras de conceptos.
5. Actualiza la lista de conceptos con los
conceptos de la categora seleccionada
que coinciden con el nombre de concepto
ingresado.
6. Selecciona un concepto de la lista.
7. Ingresa la cantidad del concepto.
8. Selecciona la opcin Aceptar.
a) Si selecciona la opcin Cancelar ver
seccin 1.
9. Verifica si el cliente es una persona o
una empresa y asigna el monto
correspondiente.
10. Agrega el concepto en la lista de
conceptos de la ventana principal de la
aplicacin y actualiza los totales del
ingreso o presupuesto.
11. Cambio el foco (cursor) en el campo
de texto Concepto para ingresar uno
nuevo.
Flujos alternativos
Seccin 1:
1. Cancela la operacin y cierra la
ventana de seleccin de conceptos.
Post-condiciones: Debe haber un paciente asignado al ingreso o presupuesto que se
esta editando.

Nombre del caso de uso: Agregar concepto de facturacin.


Actores: Secretaria de departamento.
Resumen: Agrega un nuevo concepto de facturacin al sistema.
Pre-condiciones:
1. Se debe haber iniciado una sesin en el sistema.
2. Se debe haber seleccionado una categora de facturacin.
Curso normal de los eventos
Accin de los actores
Respuesta del sistema
1. Muestra la ventana (formulario) de
ingreso de nuevo concepto de
facturacin.
2. Ingresa la informacin para el nuevo
concepto.
3. Selecciona la opcin Aceptar.
a) Si selecciona la opcin Cancelar ver
seccin 1.
4. Agrega el nuevo
facturacin al sistema.

concepto

de

5. Cierra la ventana (formulario) de


ingreso de nueva categora de
facturacin.
Flujos alternativos
Seccin 1:
1. Cancela la operacin y cierra la
ventana de ingreso de nuevo concepto de
facturacin.

Nombre del caso de uso: Agregar categora de facturacin.


Actores: Secretaria de departamento.
Resumen: Agrega un nuevo concepto de facturacin al sistema.
Pre-condiciones:
1. Se debe haber iniciado una sesin en el sistema.
2. Se debe haber seleccionado y categora de facturacin.
Curso normal de los eventos
Accin de los actores
Respuesta del sistema
1. Muestra la ventana (formulario) de
ingreso de nueva categora de
facturacin.
2. Ingresa la informacin para la nueva
categora de facturacin.
3. Selecciona la opcin Aceptar.
a) Si selecciona la opcin Cancelar ver
seccin 1.
4.

Agrega

la

nueva

categora

de

facturacin al sistema.
5. Cierra la ventana (formulario) de
ingreso de nueva categora de
facturacin.
Flujos alternativos
Seccin 1:
1. Cancela la operacin y cierra la
ventana de ingreso de nueva categora de
facturacin.
Nombre del caso de uso: Asignar forma de pago.
Actores: Secretaria de departamento.
Resumen: Asigna la forma (mtodo) de pago del Ingreso.
Pre-condiciones:
1. Se debe haber iniciado una sesin en el sistema.
2. Se debe haber seleccionado y categora de facturacin.
Curso normal de los eventos
Accin de los actores
Respuesta del sistema
1. Selecciona la forma de pago del
listado de formas de pago.
2. Si la forma de pago requiere detalles
de pago como banco, nmero de
comprobante de pago y/o monto de otra
forma de pago, requiere esta informacin.
1. Selecciona el banco, ingresa el nmero
de comprobante e ingresa el monto.
3. Selecciona la opcin Aceptar.
a) Si selecciona la opcin Cancelar ver
seccin 1.
Flujos alternativos
Seccin 1:
1. Cancela la operacin y cierra la
ventana de ingreso de nueva categora de
facturacin.

Nombre del caso de uso: Asignar banco.


Actores: Secretaria de departamento.
Resumen: Agrega un nuevo banco al sistema.
Pre-condiciones:
1. Se debe haber iniciado una sesin en el sistema.
Curso normal de los eventos
Accin de los actores
Respuesta del sistema

1. Muestra la ventana (formulario) de


ingreso de nuevo banco.
1. Ingresa el nombre del banco.
3. Selecciona la opcin Aceptar.
a) Si selecciona la opcin Cancelar ver
seccin 1.
4. Agrega el nuevo banco al sistema.
5. Cierra la ventana (formulario) de
ingreso de nuevo banco.
Flujos alternativos
Seccin 1:
1. Cancela la operacin y cierra la
ventana (formulario) de ingreso de nuevo
banco.

Nombre del caso de uso: Registrar ingreso de caja.


Actores: Secretaria de departamento.
Resumen: Registra un ingreso de caja en el sistema.
Pre-condiciones:
1. Se debe haber iniciado una sesin en el sistema.
2. Se deben haber suministrado todos los datos para el ingreso de caja.
Curso normal de los eventos
Accin de los actores
Respuesta del sistema
1. Selecciona la opcin imprimir recibo.
2. Verifica que se hayan ingresado todos
los datos necesarios para registrar el
ingreso.
3. Registra el ingreso de caja en el
sistema.
4. Imprime en papel un recibo de ingreso
de caja.
5. Limpia todos los campos de texto de la
ventana de aplicacin y cambia el foco
(el cursor) al campo de texto nombre de
cliente.

Nombre del caso de uso: Registrar presupuesto.


Actores: Secretaria de departamento.
Resumen: Registra un presupuesto en el sistema.
Pre-condiciones:
1. Se debe haber iniciado una sesin en el sistema.

2. Se deben haber suministrados todos los datos para el presupuesto.


Curso normal de los eventos
Accin de los actores
Respuesta del sistema
1. Selecciona la opcin imprimir
presupuesto.
2. Verifica que se hayan ingresado todos
los datos necesarios para registrar el
presupuesto.
3. Registra el presupuesto en el sistema.
4. Imprime en papel un presupuesto.
5. Limpia todos los campos de texto de la
ventana de aplicacin y cambia el foco
(el cursor) al campo de texto nombre de
cliente.

Nombre del caso de uso: Imprimir relacin de ingresos.


Actores: Secretaria de departamento.
Resumen: Imprime la relacin de ingresos de perodo de tiempo determinado..
Pre-condiciones:
1. Se debe haber iniciado una sesin en el sistema.
2. Se deben haber suministrados todos los datos para el presupuesto.
Curso normal de los eventos
Accin de los actores
Respuesta del sistema
1. Selecciona la opcin imprimir relacin
de ingresos.
2. Verifica que se hayan ingresado el
perodo de tiempo necesario para generar
la relacin
3. Imprime en papel la relacin de
ingresos.

Departamento
CategoriaConcepto

FormaPago
PK

PK

DepartamentoID
PK

FormaPagoID

Descripcion
Observaciones
NoControlIngreso
NoControlEgreso
NoControlPresupuesto
DeleteFlag
CreateDateTime
ModifyDateTime

Nombre
Descripcion
RequiereDetallesPago
DeleteFlag
CreateDateTime
ModifyDateTime

FK1

CategoriaConceptoID
Nombre
Descripcion
DepartamentoID
DeleteFlag
CreateDateTime
ModifyDateTime

Paciente
PK

PacienteID

FK1

PersonaID
HistoriaID
Observaciones
DeleteFlag
CreateDateTime
ModifyDateTime

ConceptoFactura
PartidaIngresoCaja
PK
PK
PK,FK2

PartidaIngresoCajaID
IngresoCajaID

FK1

ConceptoFacturaID
Nombre
Descripcion
Cantidad
ImporteUnitario
DeleteFlag
CreateDateTime
ModifyDateTime

IngresoCaja
Persona
PK

PK

PersonaID
Cedula
Nombres
Apellidos
FechaNacimiento
Fotografia
Direccion
TelefonoHabitacion
TelefonoMovil
Sexo
EstadoCivil
Extranjero
Observaciones
DeleteFlag
CreateDateTime
ModifyDateTime

FK4
FK6
FK2
FK5
FK1
Banco
PK

BancoID
Nombre
DeleteFlag
CreateDateTime
ModifyDateTime

IngresoCajaID
ReciboCajaID
DepartamentoID
PacienteID
ClienteID
Concepto
FormaPagoID
BancoID
ChequeNo
CreditoNo
DebitoNo
DepositoNo
MontoOtroPago
MontoEfectivo
Observaciones
DeleteFlag
CreateDateTime
ModifyDateTime

FK3

PresupuestoID
PresupuestoNo
DepartamentoID
ClienteID
PacienteID
Observaciones
DeleteFlag
CreateDateTime
ModifyDateTime

PartidaPresupuesto

PK

ClienteID

PK

PartidaPresupuestoID

FK2
FK1

PersonaID
EmpresaID
DeleteFlag
CreateDateTime
ModifyDateTime

FK2
FK1

PresupuestoID
ConceptoFacturaID
Nombre
Descripcion
Cantidad
ImporteUnitario
DeleteFlag
CreateDateTime
ModifyDateTime

Empresa
PK

EmpresaID
RIF
NIT
Nombre
Direccion
Telefonos
Correo
DeleteFlag
CreateDateTime
ModifyDateTime

Nombre
Descripcion
Abreviatura
PrecioParticular
PrecioSeguro
CategoriaConceptoID
DeleteFlag
CreateDateTime
ModifyDateTime

Presupuesto
PK

FK1,FK2

Cliente

FK1

ConceptoFacturaID

C3 Modelo fsico de la base de datos del Subsistema Registro de Ingresos por Departamento.

C4 - Diccionario de datos para el Subsistema Ingresos.


Tabla 1. Ingresocaja
Campo
IngresoCajaID
ReciboIngresoID
DepartamentoID
PacienteID
ClienteID
Concepto
FormaPagoID
BancoID
ChequeNo
CreditoNo
DebitoNo
DepositoNo
MontoOtroPago
MontoEfectivo
Observaciones

TABLA INGRESOCAJA
Tipo
Longitud
integer
4
integer
4
integer
4
integer
4
integer
4
varchar
255
integer
4
integer
4
varchar
20
varchar
20
varchar
20
varchar
20
decimal
9
decimal
9
varchar
255

Obligatorio
S
S
S
S
S
S

Tabla 2. Banco
Campo
BancoID
Nombre

TABLA BANCO
Tipo
Longitud
integer
4
varchar
50

Obligatorio
S

Tabla 3. Paciente
Campo
PacienteID
PersonaID
HistoriaID
Observaciones

TABLA PACIENTE
Tipo
Longitud
integer
4
integer
4
integer
4
varchar
255

Obligatorio
S
S

Tabla 4. Cliente
Campo
ClienteID
PersonaID
EmpresaID

TABLA CLIENTE
Tipo
Longitud
integer
4
integer
4
integer
4

Obligatorio
S
S
S

TABLA PERSONA
Tipo
Longitud
integer
4

Obligatorio
S

Tabla 5. Persona
Campo
PersonaID

Cedula
Nombres
Apellidos
FechaNacimiento
Fotografia
Direccion
TelefonoHabitacion
TelefonoMovil
Sexo
EstadoCivil
Extranjero
Observaciones

integer
varchar
varchar
datetime
image
varchar
varchar
varchar
integer
integer
bit
varchar

4
50
50
8
16
255
15
15
4
4
1
255

Tabla 6. Partidaingreso
Campo
PartidaIngresoID
IngresoCajaID
ConceptoFacturaID
Nombre
Descripcion
Cantidad
ImporteUnitario

TABLA PARTIDAINGRESO
Tipo
Longitud
integer
4
integer
4
integer
4
varchar
50
varchar
255
integer
4
money
8

Obligatorio
S
S
S

Tabla 7. Conceptofactura
Campo
ConceptoFactuaID
Nombre
Descripcion
Abreviatura
PrecioParticular
PrecioSeguro
CategoriaConceptoID

TABLA CONCEPTOFACTURA
Tipo
Longitud
integer
4
varchar
50
varchar
255
varchar
10
decimal
decimal
integer
4

Tabla 8. Categoriaconcepto
TABLA CATEGORIACONCEPTO
Campo
Tipo
Longitud
CategoriaConceptoID
integer
4
Tabla 8. Continuacin
Nombre
varchar
50
Descripcion
varchar
255
DepartamentoID
Integer
4

Obligatorio
S

Obligatorio
S

Tabla 9. Presupuesto
Campo

TABLA PRESUPUESTO
Tipo
Longitud

Obligatorio

PresupuestoID
PresupuestoNo
DepartamentoID
ClienteID
PacienteID
Observaciones

integer
integer
integer
integer
integer
varchar

4
4
4
4
4
255

Tabla 10. Partidapresupuesto


TABLA PARTIDAPRESUPUESTO
Campo
Tipo
Longitud
PartidaPresupuestoID
integer
4
PresupuestoID
integer
4
ConceptoFacturaID
integer
4
Nombre
varchar
50
Descripcion
varchar
255
Cantidad
integer
4
ImporteUnitario
money
4

Obligatorio
S
S
S

Ventana aplicacin

Ventana seleccin nodo


Facturacin

Secretaria de departamento
Seleccionar nodo Facturacin
Mostrar ventana de seleccin de nodo

Cargar listado de nodos disponibles

Seleccionar departamento

Selecciona la opcin aceptar


Asignar Nodo de Facturacin

Selecciona opcin cancelar

C5 Diagrama de secuencia Seleccionar nodo de facturacin.

Ventana aplicacin

Ventana Seleccionar Cliente

Secretaria de departamento
Ingresar informacin de bsqueda de cliente

Seleccionar asignar cliente


Mostrar ventana seleccin de cliente

Selecciona el cliente
Selecciona la opcin aceptar
Asignar cliente a ingreso

Cargar informacin cliente asignado

Selecciona la opcin cancelar

C6 - Diagrama de secuencia asignar cliente.

Ventana persona

Ventana aplicacin

Secretaria de departamento
Agregar persona
Mostrar ventana para agregar persona
Ingresa informacin de persona

Selecciona la opcin aceptar


Agregar un nueva persona al sistema

Notificar empleado agregado al sistema

Selecciona opcin cancelar

C7 - Diagrama de secuencia agregar persona.

Ventana empresa

Ventana aplicacin

Secretaria de departamento
Agregar empresa
Mostrar ventana para agregar empresa
Ingresa informacin de empresa

Selecciona la opcin aceptar


Agregar un nueva empresa al sistema

Preguntar si se asigna al ingreso

Selecciona opcin cancelar

C8 - Diagrama de secuencia agregar empresa.

Ventana aplicacin

Ventana asignar paciente

Secretaria de departamento

Ingresar informacin de bsqueda de paciente

Seleccionar asignar paciente


Mostrar ventana asignar paciente
Cargar listado de pacientes
Seleccionar paciente

Selecciona la opcin aceptar


Asignar paciente a ingreso

Selecciona la opcin cancelar

C9 Diagrama de secuencia de asignar paciente.

Ventana aplicacin

Ventana paciente

Secretaria de departamento
Agregar paciente
Mostrar ventana agregar paciente
Ingresa cdula de paciente
Ingresa datos del paciente
Selecciona la opcin aceptar

Verificar cdula
Cargar datos de la persona

Agregar paciente

Selecciona la opcin cancelar

C10 Diagrama de secuencia agregar paciente.

Ventana aplicacin

Ventana seleccionar concepto

Secretaria de departamento
Agregar concepto
Mostrar ventana agregar concepto
Cargar categorias de facturacin
Seleccionar categoria de facturacin

Cargar conceptos de facturacin


Cargar conceptos pertenecientes a categora seleccionada

Seleccionar concepto
Selecciona la opcin aceptar
Agregar concepto

Selecciona la opcin cancelar

C11 Diagrama de secuencia asignar concepto a factura.

Ventana aplicacin

Ventana seleccionar concepto


facturacin

Ventana concepto de facturaci


n

Secretaria de departamento

Seleccionar asignar concepto de facturacin


Mostrar ventana seleccionar conceptos de faccturacin
Agregar concepto de facturacin

Buscar conceptos
Mostrar ventana concepto de facturacin

Ingresar informacin de concepto de facturacin


Seleccionar la opcin aceptar
Agregar concepto de facturacin al sistema

Seleccionar la opcin cancelar


Asignar paciente a ingreso

C12 Diagrama de secuencia agregar concepto de facturacin al sistema.

Ventana aplicacin

Ventana seleccionar concepto


facturacin

Ventana categora de
facturacin

Secretaria de departamento

Seleccionar asignar concepto de facturacin


Mostrar ventana seleccionar concepto de facturacin
Agregar concepto de facturacin

Buscar conceptos de facturacin


Mostrar ventana categora de facturacin

Ingresar informacin de categora de facturacin


Seleccionar la opcin aceptar
Agregar categora de facturacin al sistema

Seleccionar la opcin cancelar

C13 Diagrama de secuencia Agregar categora de facturacin.

Ventana aplicacin

Ventana forma de pago

Secretaria de departamento
Agregar forma de pago
Mostrar ventana agregar paciente
Ingresa datos del pago
Selecciona la opcin aceptar
Agregar forma de pago

Selecciona la opcin cancelar

C14 - Diagrama de secuencia asignar forma de pago.

Ventana aplicacin

Ventana banco

Secretaria de departamento
Agregar banco
Mostrar ventana agregar banco
Ingresa datos del banco
Selecciona la opcin aceptar
Agregar banco

Selecciona la opcin cancelar

C15 - Diagrama de secuencia agregar banco.

Ventana opciones de impresin

Ventana aplicacin

Secretaria de departamento
Registrar ingreso de caja
Actualizar nmero de facturacin de departamento

Guardar detalles del ingreso

Imprimir recibo de ingreso


Selecciona la opcin aceptar
Imprimir recibo de ingreso

Selecciona la opcin cancelar

C16 - Diagrama de secuencia registrar ingreso de caja.

Ventana opciones de impresin

Ventana aplicacin

Secretaria de departamento
Registrar presupuesto
Actualizar nmero de presupuesto de departamento

Guardar detalles del presupuesto

Imprimir presupuesto
Selecciona la opcin aceptar
Imprimir presupuesto

Selecciona la opcin cancelar

C17 - Diagrama de secuencia registrar presupuesto.

ColBanco

CBanco
-_BancoID : Integer
-_Nombre : String

-_IndiceSeleccionado : Integer = ModeloComponentes.Compartidos.IOBPBanco.modBanco.NO_HAY_SELECCIONADO


-_Ordenada : Integer

+OnNotificar(entrada descripcion : String)


+OnNotificarError(entrada origen : String, entrada descripcion : String)
+OnNotificarErrorControlado(entrada origen : String, entrada descripcion : String)
+OnNotificarErrorNoControlado(entrada origen : String, entrada descripcion : String)
+Notificar(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+NotificarError(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+NotificarErrorControlado(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+NotificarErrorNoControlado(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+BancoID() : Integer
+Nombre() : String
+Hierarchy() : ColBanco
+New()
+OnCambiandoPropiedad()
+OnPropiedadCambio()
+CambiandoPropiedad(entrada origen : Object, entrada e : EventArgs)
+PropiedadCambio(entrada origen : Object, entrada e : EventArgs)
+BancoIDCambion()
+NombreCambio()

+Progreso(entrada args : ProgresoEventArgs)


+OnNotificar(entrada descripcion : String)
+OnNotificarError(entrada origen : String, entrada descripcion : String)
+OnNotificarErrorControlado(entrada origen : String, entrada descripcion : String)
+OnNotificarErrorNoControlado(entrada origen : String, entrada descripcion : String)
+Notificar(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+NotificarError(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+NotificarErrorControlado(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+NotificarErrorNoControlado(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+Comparar(entrada obj1 : Object, entrada obj2 : Object, entrada campo : Integer) : Integer
+OrdenarElementos(entrada elemento1 : Integer, entrada elemento2 : Integer)
+Ordenar()
+ProgresoOrdenamiento(entrada progreso : Integer, entrada total : Integer)
+Count() : Integer
+GetEnumerator() : IEnumerator
+Agregar(entrada bancoID : Integer, entrada nombre : String) : Integer
+MarcarParaBorrar(entrada bancoID : Integer) : Boolean
+Recuperar(entrada bancoID : Integer) : Boolean
+Remover(entrada indice : Integer) : Boolean
+OrdenadoPor() : OrdenadoPor
+Elementos(entrada Indice : Integer) : CBanco
+Agregar(entrada Banco : CBanco) : Integer
+Buscar(entrada bancoID : Integer) : CBanco
+New()
+FinalizarProceso(entrada args : ProgresoEventArgs)
+IniciarProceso(entrada args : ProgresoEventArgs)

utilitymodBanco

+NO_HAY_SELECCIONADO : Integer = 0
+PA_SELECCIONAR_BANCO : String = "spSBanco"
+PA_INSERTAR_BANCO : String = "spIBanco"
+PA_ELIMINAR_BANCO : String = "spDBanco"
+PA_ACTUALIZAR_BANCO : String = "spUBanco"
+FN_BANCOID : String = "BancoID"
+PARAMNOM_BANCOID : String = "@BancoID"
+PARAMNUM_BANCOID : Integer = 0
+PARAMTIP_BANCOID : SqlDbType = System.Data.SqlDbType.Intinstance
+FN_NOMBRE : String = "Nombre"
+PARAMNOM_NOMBRE : String = "@Nombre"
+PARAMNUM_NOMBRE : Integer = 1
+PARAMTIP_NOMBRE : SqlDbType = System.Data.SqlDbType.VarChar
+PARAMNUM_DELETEFLAG : Integer = 2
+PARAMNUM_CREATEDATE : Integer = 3
enumeracinOrdenadoPor
+PARAMNUM_MODIFYDATE : Integer = 4
+SinOrden = -1
+BancoID = 0
+Nombre = 1

instance

BancoPersistente

#ActualizarColeccion_Con_DatosDevueltos(entrada reader : SqlDataReader, entrada y salida entidad : Entidad)


#PrepararDatos_Para_Insertar(entrada entidad : Entidad, entrada y salida comandoSQL : SqlCommand) : Object
#ProcAlmacenado_Insertar() : String
#ProcAlmacenado_Eliminar() : String
#ProcAlmacenado_Actualizar() : String
#PrepararDatos_para_Borrar(entrada oEntidad : Entidad, entrada y salida oComandoSQL : SqlCommand) : Object
#PrepararDatos_para_Actualizar(entrada oEntidad : Entidad, entrada y salida oComandoSQL : SqlCommand) : Object
+New(entrada y salida coleccion : ColBanco)

IOBPFabricaBanco

#CrearInstanciaDeClase() : Entidad
#CrearInstanciaDeColeccion() : ColeccionEntidades
#ProcAlmacenadoSeleccionar() : String
#AsignarDatosAClase(entrada y salida entidad : Entidad, entrada y salida reader : SqlDataReader)
+Obtener(entrada tokenSeguridad : String, entrada BancoID : Integer = SIN_PARAMETRO_OPCIONAL) : ColBanco
+Buscar(entrada tokenSeguridad : String, entrada bancoID : Integer = SIN_PARAMETRO_OPCIONAL, entrada recuperarRegistros : Registros = Tipos.Registros.NoBorrados) : ColBanco
+Nuevo(entrada tokenSeguridad : String) : ColBanco
+New()

C18 - Diagrama de estructura esttica para el Componente Banco.

IOBPCategoriaConcepto::CCategoriaConcepto

IOBPCategoriaConcepto::ColCategoriaConcepto

-_CategoriaID : Integer
-_Nombre : String
-_Descripcion : String
-_DepartamentoID : Integer
-_Departamentos : ColDepartamento

-_IndiceSeleccionado : Integer = ModeloComponentes.Facturacion.IOBPCategoriaConcepto.modCategoriaConcepto.NO_HAY_SELECCIONADO


-_Ordenada : Integer

+OnNotificar(entrada descripcion : String)


+OnNotificarError(entrada origen : String, entrada descripcion : String)
+OnNotificarErrorControlado(entrada origen : String, entrada descripcion : String)
+OnNotificarErrorNoControlado(entrada origen : String, entrada descripcion : String)
+Notificar(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+NotificarError(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+NotificarErrorControlado(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+NotificarErrorNoControlado(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+Descripcion() : String
+DepartamentoID() : Integer
+Departamento() : ICDepartamento
+New()
+OnCambiandoPropiedad()
+OnPropiedadCambio()
+CambiandoPropiedad(entrada origen : Object, entrada e : EventArgs)
+PropiedadCambio(entrada origen : Object, entrada e : EventArgs)
+CategoriaIDCambio()
+NombreCambio()
+DescripcionCambio()
+DepartamentoIDCambio()

+Progreso(entrada args : ProgresoEventArgs)


+OnNotificar(entrada descripcion : String)
+OnNotificarError(entrada origen : String, entrada descripcion : String)
+OnNotificarErrorControlado(entrada origen : String, entrada descripcion : String)
+OnNotificarErrorNoControlado(entrada origen : String, entrada descripcion : String)
+Notificar(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+NotificarError(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+NotificarErrorControlado(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+NotificarErrorNoControlado(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+Comparar(entrada obj1 : Object, entrada obj2 : Object, entrada campo : Integer) : Integer
+OrdenarElementos(entrada elemento1 : Integer, entrada elemento2 : Integer)
+Ordenar()
+ProgresoOrdenamiento(entrada progreso : Integer, entrada total : Integer)
+Count() : Integer
+GetEnumerator() : IEnumerator
+Agregar(entrada categoriaID : Integer, entrada nombre : String, entrada descripcion : String, entrada departamentoID : Integer = 0) : Integer
+MarcarParaBorrar(entrada clienteID : Integer) : Boolean
+Recuperar(entrada clienteID : Integer) : Boolean
+Remover(entrada indice : Integer) : Boolean
+OrdenadoPor() : OrdenadoPor
+ElementoSeleccionado() : CCategoriaConcepto
+Elementos(entrada Indice : Integer) : CCategoriaConcepto
+Agregar(entrada CategoriaConcepto : CCategoriaConcepto) : Integer
+Buscar(entrada CategoriaID : Integer) : CCategoriaConcepto
+New()
+FinalizarProceso(entrada args : ProgresoEventArgs)
+IniciarProceso(entrada args : ProgresoEventArgs)

instance

IOBPCategoriaConcepto::CategoriaConceptoPersistente
enumeracinIOBPCategoriaConcepto::OrdenadoPor

instance

+SinOrden = -1
+CategoriaID
+Nombre
+Descripcion
+DepartamentoID
+DescripcionDepartamento

#ActualizarColeccion_Con_DatosDevueltos(entrada reader : SqlDataReader, entrada y salida entidad : Entidad)


#PrepararDatos_Para_Insertar(entrada entidad : Entidad, entrada y salida comandoSQL : SqlCommand) : Object
#ProcAlmacenado_Insertar() : String
#ProcAlmacenado_Eliminar() : String
#ProcAlmacenado_Actualizar() : String
#PrepararDatos_para_Borrar(entrada oEntidad : Entidad, entrada y salida oComandoSQL : SqlCommand) : Object
#PrepararDatos_para_Actualizar(entrada oEntidad : Entidad, entrada y salida oComandoSQL : SqlCommand) : Object
+New(entrada y salida coleccion : ColCategoriaConcepto)
IOBPCategoriaConcepto::IOBPFabricaCategoriaConcepto

#CrearInstanciaDeClase() : Entidad
#CrearInstanciaDeColeccion() : ColeccionEntidades
#ProcAlmacenadoSeleccionar() : String
#AsignarDatosAClase(entrada y salida entidad : Entidad, entrada y salida reader : SqlDataReader)
+Obtener(entrada tokenSeguridad : String, entrada CategoriaConceptoID : Integer = SIN_PARAMETRO_OPCIONAL) : ColCategoriaConcepto
+Buscar(entrada tokenSeguridad : String, entrada categoriaConceptoID : Integer = SIN_PARAMETRO_OPCIONAL, entrada departamentoID : Integer = SIN_PARAMETRO_OPCIONAL, entrada recuperarRegistros : Registros = Tipos.Registros.NoBorrados) : ColCategoriaConcepto
+Nuevo(entrada tokenSeguridad : String) : ColCategoriaConcepto
+New()

C19 Diagrama de estructura esttica para el componente categora de concepto de facturacin.

IOBPCliente::ColCliente

IOBPCliente::CCliente

-_IndiceSeleccionado : Integer = ModeloComponentes.Compartidos.IOBPCliente.modCliente.NO_HAY_SELECCIONADO


-_Ordenada : Integer

-_ClienteID : Integer
-_PersonaID : String
-_Personas : ColPersona
-_EmpresaID : String
-_Empresas : ColEmpresa
-_TipoClienteID : Clientes

+Progreso(entrada args : ProgresoEventArgs)


+OnNotificar(entrada descripcion : String)
+OnNotificarError(entrada origen : String, entrada descripcion : String)
+OnNotificarErrorControlado(entrada origen : String, entrada descripcion : String)
+OnNotificarErrorNoControlado(entrada origen : String, entrada descripcion : String)
+Notificar(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+NotificarError(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+NotificarErrorControlado(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+NotificarErrorNoControlado(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+Comparar(entrada obj1 : Object, entrada obj2 : Object, entrada campo : Integer) : Integer
+OrdenarElementos(entrada elemento1 : Integer, entrada elemento2 : Integer)
+Ordenar()
+ProgresoOrdenamiento(entrada progreso : Integer, entrada total : Integer)
+Count() : Integer
+GetEnumerator() : IEnumerator
+Agregar(entrada personaID : Integer, entrada empresaID : Integer) : Integer
+MarcarParaBorrar(entrada clienteID : Integer) : Boolean
+Recuperar(entrada clienteID : Integer) : Boolean
+Remover(entrada indice : Integer) : Boolean
+OrdenadoPor() : OrdenadoPor
+ElementoSeleccionado() : CCliente
+Elementos(entrada Indice : Integer) : CCliente
+Agregar(entrada Cliente : CCliente) : Integer
+Buscar(entrada clienteID : Integer) : CCliente
+New()
+FinalizarProceso(entrada args : ProgresoEventArgs)
+IniciarProceso(entrada args : ProgresoEventArgs)

+OnNotificar(entrada descripcion : String)


+OnNotificarError(entrada origen : String, entrada descripcion : String)
+OnNotificarErrorControlado(entrada origen : String, entrada descripcion : String)
+OnNotificarErrorNoControlado(entrada origen : String, entrada descripcion : String)
+Notificar(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+NotificarError(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+NotificarErrorControlado(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+NotificarErrorNoControlado(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+Persona() : ICPersona
+EmpresaID() : Integer
+Empresa() : ICEmpresa
+TipoCliente() : Clientes
+Nombre() : String
+Hierarchy() : ColCliente
+New()
+OnCambiandoPropiedad()
+OnPropiedadCambio()
+CambiandoPropiedad(entrada origen : Object, entrada e : EventArgs)
+PropiedadCambio(entrada origen : Object, entrada e : EventArgs)
+ClienteIDCambio()
+PersonaIDCambio()
+EmpresaIDCambio()

instance
enumeracinIOBPCliente::OrdenadoPor

instance

+SinOrden = -1
+ClienteID
+PersonaID
+EmpresaID
+Nombre

IOBPCliente::ClientePersistente

#ActualizarColeccion_Con_DatosDevueltos(entrada reader : SqlDataReader, entrada y salida entidad : Entidad)


#PrepararDatos_Para_Insertar(entrada entidad : Entidad, entrada y salida comandoSQL : SqlCommand) : Object
#ProcAlmacenado_Insertar() : String
#ProcAlmacenado_Eliminar() : String
#ProcAlmacenado_Actualizar() : String
#PrepararDatos_para_Borrar(entrada oEntidad : Entidad, entrada y salida oComandoSQL : SqlCommand) : Object
#PrepararDatos_para_Actualizar(entrada oEntidad : Entidad, entrada y salida oComandoSQL : SqlCommand) : Object
+New(entrada y salida coleccion : ColCliente)

IOBPCliente::IOBPFabricaCliente

#CrearInstanciaDeClase() : Entidad
#CrearInstanciaDeColeccion() : ColeccionEntidades
#ProcAlmacenadoSeleccionar() : String
#AsignarDatosAClase(entrada y salida entidad : Entidad, entrada y salida reader : SqlDataReader)
+Obtener(entrada tokenSeguridad : String, entrada clienteID : Integer = SIN_PARAMETRO_OPCIONAL) : ColCliente
+Buscar(entrada tokenSeguridad : String, entrada clienteID : Integer = SIN_PARAMETRO_OPCIONAL, entrada personaID : Integer = SIN_PARAMETRO_OPCIONAL, entrada empresaID : Integer = SIN_PARAMETRO_OPCIONAL, entrada recuperarRegistros : Registros = Tipos.Registros.NoBorrados) : ColCliente
+Nuevo(entrada tokenSeguridad : String) : ColCliente
+New()

C20 Diagrama de estructura esttica para el componente Cliente.

IOBPConceptoFactura::CConceptoFactura

IOBPConceptoFactura::ColConceptoFactura

-_ConceptoFacturaID : Integer
-_Nombre : String
-_Descripcion : String
-_PrecioParticular : Decimal
-_PrecioSeguro : Decimal
-_CategoriaConceptoID : Integer
-_CategoriasConceptos : ColCategoriaConcepto

-_IndiceSeleccionado : Integer = ModeloComponentes.Facturacion.IOBPConceptoFactura.modConceptoFactura.NO_HAY_SELECCIONADO


-_Ordenada : Integer
+Progreso(entrada args : ProgresoEventArgs)
+OnNotificar(entrada descripcion : String)
+OnNotificarError(entrada origen : String, entrada descripcion : String)
+OnNotificarErrorControlado(entrada origen : String, entrada descripcion : String)
+OnNotificarErrorNoControlado(entrada origen : String, entrada descripcion : String)
+Notificar(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+NotificarError(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+NotificarErrorControlado(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+NotificarErrorNoControlado(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+Comparar(entrada obj1 : Object, entrada obj2 : Object, entrada campo : Integer) : Integer
+OrdenarElementos(entrada elemento1 : Integer, entrada elemento2 : Integer)
+Ordenar()
+ProgresoOrdenamiento(entrada progreso : Integer, entrada total : Integer)
+Count() : Integer
+GetEnumerator() : IEnumerator
+Agregar(entrada conceptoID : Integer, entrada nombre : String, entrada descripcion : String, entrada precioParticular : Decimal, entrada precioSeguro : Decimal, entrada categoriaID : Integer = 1) : Integer
+MarcarParaBorrar(entrada conceptoID : Integer) : Boolean
+Recuperar(entrada conceptoID : Integer) : Boolean
+Remover(entrada indice : Integer) : Boolean
+OrdenadoPor() : OrdenadoPor
+ElementoSeleccionado() : CConceptoFactura
+Elementos(entrada Indice : Integer) : CConceptoFactura
+Agregar(entrada ConceptoFactura : CConceptoFactura) : Integer
+Buscar(entrada ConceptoID : Integer) : CConceptoFactura
+New()
+FinalizarProceso(entrada args : ProgresoEventArgs)
+IniciarProceso(entrada args : ProgresoEventArgs)

+OnNotificar(entrada descripcion : String)


+OnNotificarError(entrada origen : String, entrada descripcion : String)
+OnNotificarErrorControlado(entrada origen : String, entrada descripcion : String)
+OnNotificarErrorNoControlado(entrada origen : String, entrada descripcion : String)
+Notificar(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+NotificarError(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+NotificarErrorControlado(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+NotificarErrorNoControlado(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+Descripcion() : String
+PrecioSeguro() : Decimal
+CategoriaID() : Integer
+Categoria() : ICCategoriaConcepto
+Hierarchy() : ColConceptoFactura
+New()
+OnCambiandoPropiedad()
+OnPropiedadCambio()
+CambiandoPropiedad(entrada origen : Object, entrada e : EventArgs)
+PropiedadCambio(entrada origen : Object, entrada e : EventArgs)
+ConceptoFacturaIDCambio()
+NombreCambio()
+DescripcionCambio()
+PrecioParticularCambio()
+PrecioSeguroCambio()
+CategoriaConceptoIDCambio()

instance
IOBPConceptoFactura::ConceptoFacturaPersistente

utilityIOBPCliente::modCliente
+NO_HAY_SELECCIONADO : Integer
+OBPUserError : Integer
+OBPClienteErrorBase : Integer
+ERR_CLIENTEINVALIDDIRTY : Decimal
+ERR_CLIENTEPROPIEDADNEWINVALIDA : Decimal
+ERR_CLIENTEPROPIEDADPADREINVALIDA : Decimal
+ERR_CLIENTECLASEMARCADAPARABORRADO : Decimal
+ERR_CLIENTEINDICEFUERARANGO : Decimal
+ERR_CLIENTETOKENSEGURIDADINVALIDO : Decimal
+ERR_CLIENTECOLECCIONVACIA : Decimal
+ERR_NOHAYSELECCION : Decimal
+PA_SELECCIONAR_CLIENTE : String
+PA_INSERTAR_CLIENTE : String
+PA_ELIMINAR_CLIENTE : String
+PA_ACTUALIZAR_CLIENTE : String
+FN_CLIENTEID : String
+PARAMNOM_CLIENTEID : String
+PARAMNUM_CLIENTEID : Integer
+PARAMTIP_CLIENTEID : SqlDbType
+FN_PERSONAID : String
+PARAMNOM_PERSONAID : String
+PARAMNUM_PERSONAID : Integer
+PARAMTIP_PERSONAID : SqlDbType
+FN_EMPRESAID : String
+PARAMNOM_EMPRESAID : String
+PARAMNUM_EMPRESAID : Integer
+PARAMTIP_EMPRESAID : SqlDbType
+PARAMNUM_DELETEFLAG : Integer
+PARAMNUM_CREATEDATE : Integer
+PARAMNUM_MODIFYDATE : Integer

enumeracinIOBPConceptoFactura::OrdenadoPor

instance

+SinOrden = -1
+ConceptoFacturaID = 0
+Nombre = 1

#ActualizarColeccion_Con_DatosDevueltos(entrada reader : SqlDataReader, entrada y salida entidad : Entidad)


#PrepararDatos_Para_Insertar(entrada entidad : Entidad, entrada y salida comandoSQL : SqlCommand) : Object
#ProcAlmacenado_Insertar() : String
#ProcAlmacenado_Eliminar() : String
#ProcAlmacenado_Actualizar() : String
#PrepararDatos_para_Borrar(entrada oEntidad : Entidad, entrada y salida oComandoSQL : SqlCommand) : Object
#PrepararDatos_para_Actualizar(entrada oEntidad : Entidad, entrada y salida oComandoSQL : SqlCommand) : Object
+New(entrada y salida coleccion : ColConceptoFactura)

IOBPConceptoFactura::IOBPFabricaConceptoFactura

#CrearInstanciaDeClase()
#CrearInstanciaDeColeccion()
#ProcAlmacenadoSeleccionar()
#AsignarDatosAClase()
+Obtener()
+Buscar()
+Nuevo()
+New()

C21 Diagrama de estructura esttica del componente Concepto de Factura.

IOBPEmpresa::CEmpresa
IOBPEmpresa::ColEmpresa
-_EmpresaID : Integer
-_Nombre : String
-_Rif : String
-_Nit : String
-_Direccion : String
-_Telefonos : String

-_IndiceSeleccionado : Integer = ModeloComponentes.Facturacion.IOBPEmpresa.modEmpresa.NO_HAY_SELECCIONADO


-_Ordenada : Integer
+Progreso(entrada args : ProgresoEventArgs)
+OnNotificar(entrada descripcion : String)
+OnNotificarError(entrada origen : String, entrada descripcion : String)
+OnNotificarErrorControlado(entrada origen : String, entrada descripcion : String)
+OnNotificarErrorNoControlado(entrada origen : String, entrada descripcion : String)
+Notificar(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+NotificarError(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+NotificarErrorControlado(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+NotificarErrorNoControlado(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+Comparar(entrada obj1 : Object, entrada obj2 : Object, entrada campo : Integer) : Integer
+OrdenarElementos(entrada elemento1 : Integer, entrada elemento2 : Integer)
+Ordenar()
+ProgresoOrdenamiento(entrada progreso : Integer, entrada total : Integer)
+Count() : Integer
+GetEnumerator() : IEnumerator
+Agregar(entrada nombre : String, entrada rif : String, entrada nit : String, entrada direccion : String, entrada telefonos : String) : Integer
+MarcarParaBorrar(entrada bancoID : Integer) : Boolean
+Recuperar(entrada bancoID : Integer) : Boolean
+Remover(entrada indice : Integer) : Boolean
+OrdenadoPor() : OrdenadoPor
+ElementoSeleccionado() : CEmpresa
+Elementos(entrada Indice : Integer) : CEmpresa
+Buscar(entrada EmpresaID : Integer) : CEmpresa
+Agregar(entrada Empresa : CEmpresa) : Integer
+New()
+FinalizarProceso(entrada args : ProgresoEventArgs)
+IniciarProceso(entrada args : ProgresoEventArgs)

+OnNotificar(entrada descripcion : String)


+OnNotificarError(entrada origen : String, entrada descripcion : String)
+OnNotificarErrorControlado(entrada origen : String, entrada descripcion : String)
+OnNotificarErrorNoControlado(entrada origen : String, entrada descripcion : String)
+Notificar(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+NotificarError(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+NotificarErrorControlado(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+NotificarErrorNoControlado(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+EmpresaID() : Integer
+Telefonos() : String
+New()
+OnCambiandoPropiedad()
+OnPropiedadCambio()
+CambiandoPropiedad(entrada origen : Object, entrada e : EventArgs)
+PropiedadCambio(entrada origen : Object, entrada e : EventArgs)
+EmpresaIDCambio()
+NombreCambio()
+RifCambio()
+NitCambio()
+DireccionCambio()
+TelefonosCambio()

utilityIOBPEmpresa::modEmpresa
+NO_HAY_SELECCIONADO : Integer
+OBPUserError : Integer
+OBPEmpresaErrorBase : Integer
+ERR_EMPRESAINVALIDDIRTY : Decimal
+ERR_EMPRESAPROPIEDADNEWINVALIDA : Decimal
+ERR_EMPRESAPROPIEDADPADREINVALIDA : Decimal
+ERR_EMPRESACLASEMARCADAPARABORRADO : Decimal
+ERR_EMPRESAINDICEFUERARANGO : Decimal
+ERR_EMPRESATOKENSEGURIDADINVALIDO : Decimal
+ERR_EMPRESACOLECCIONVACIA : Decimal
+ERR_NOHAYSELECCION : Decimal
+PA_SELECCIONAR_EMPRESA : String
+PA_INSERTAR_EMPRESA : String
+PA_ELIMINAR_EMPRESA : String
+PA_ACTUALIZAR_EMPRESA : String
+FN_EMPRESAID : String
+PARAMNOM_EMPRESAID : String
+PARAMNUM_EMPRESAID : Integer
+PARAMTIP_EMPRESAID : SqlDbType
+FN_NOMBRE : String
+PARAMNOM_NOMBRE : String
+PARAMNUM_NOMBRE : Integer
+PARAMTIP_NOMBRE : SqlDbType
+FN_RIF : String
+PARAMNOM_RIF : String
+PARAMNUM_RIF : Integer
+PARAMTIP_RIF : SqlDbType
+FN_NIT : String
+PARAMNOM_NIT : String
+PARAMNUM_NIT : Integer
+PARAMTIP_NIT : SqlDbType
+FN_DIRECCION : String
+PARAMNOM_DIRECCION : String
+PARAMNUM_DIRECCION : Integer
+PARAMTIP_DIRECCION : SqlDbType
+FN_TELEFONOS : String
+PARAMNOM_TELEFONOS : String
+PARAMNUM_TELEFONOS : Integer
+PARAMTIP_TELEFONOS : SqlDbType
+PARAMNUM_DELETEFLAG : Integer
+PARAMNUM_CREATEDATE : Integer
+PARAMNUM_MODIFYDATE : Integer

IOBPEmpresa::EmpresaPersistente

enumeracinIOBPEmpresa::OrdenadoPor
+SinOrden = -1
+EmpresaID = 0
+NombrePaciente

instance

#ActualizarColeccion_Con_DatosDevueltos(entrada reader : SqlDataReader, entrada y salida entidad : Entidad)


#PrepararDatos_Para_Insertar(entrada entidad : Entidad, entrada y salida comandoSQL : SqlCommand) : Object
#ProcAlmacenado_Insertar() : String
#ProcAlmacenado_Eliminar() : String
#ProcAlmacenado_Actualizar() : String
#PrepararDatos_para_Borrar(entrada oEntidad : Entidad, entrada y salida oComandoSQL : SqlCommand) : Object
#PrepararDatos_para_Actualizar(entrada oEntidad : Entidad, entrada y salida oComandoSQL : SqlCommand) : Object
+New(entrada y salida coleccion : ColEmpresa)

instance

IOBPEmpresa::IOBPFabricaEmpresa

#CrearInstanciaDeClase() : Entidad
#CrearInstanciaDeColeccion() : ColeccionEntidades
#ProcAlmacenadoSeleccionar() : String
#AsignarDatosAClase(entrada y salida entidad : Entidad, entrada y salida reader : SqlDataReader)
+Obtener(entrada tokenSeguridad : String, entrada cargoID : Integer = SIN_PARAMETRO_OPCIONAL) : ColEmpresa
+Buscar(entrada tokenSeguridad : String, entrada empresaID : Integer = SIN_PARAMETRO_OPCIONAL, entrada nombre : String = "", entrada RIF : String = "", entrada NIT : String = "", entrada recuperarRegistros : Registros = Tipos.Registros.NoBorrados) : ColEmpresa
+Nuevo(entrada tokenSeguridad : String) : ColEmpresa
+New()

C22 Diagrama de estructura esttica del componente Empresa.

ColFormaPago

CFormaPago

-_IndiceSeleccionado : Integer = ModeloComponentes.Compartidos.IOBPFormaPago.modFormaPago.NO_HAY_SELECCIONADO


-_Ordenada : Integer

-_FormaPagoID : Integer
-_Nombre : String
-_Descripcion : String
-_RequiereDetallesPago : Boolean

+Progreso(entrada args : ProgresoEventArgs)


+OnNotificar(entrada descripcion : String)
+OnNotificarError(entrada origen : String, entrada descripcion : String)
+OnNotificarErrorControlado(entrada origen : String, entrada descripcion : String)
+OnNotificarErrorNoControlado(entrada origen : String, entrada descripcion : String)
+Notificar(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+NotificarError(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+NotificarErrorControlado(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+NotificarErrorNoControlado(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+Comparar(entrada obj1 : Object, entrada obj2 : Object, entrada campo : Integer) : Integer
+OrdenarElementos(entrada elemento1 : Integer, entrada elemento2 : Integer)
+Ordenar()
+ProgresoOrdenamiento(entrada progreso : Integer, entrada total : Integer)
+Count() : Integer
+GetEnumerator() : IEnumerator
+Agregar(entrada nombre : String, entrada descripcion : String, entrada requiereDetallesPago : Boolean) : Integer
+MarcarParaBorrar(entrada formaPagoID : Integer) : Boolean
+Recuperar(entrada formaPagoID : Integer) : Boolean
+Remover(entrada indice : Integer) : Boolean
+OrdenadoPor() : OrdenadoPor
+ElementoSeleccionado() : CFormaPago
+Elementos(entrada Indice : Integer) : CFormaPago
+Agregar(entrada FormaPago : CFormaPago) : Integer
+Buscar(entrada formaPagoID : Integer) : CFormaPago
+New()
+FinalizarProceso(entrada args : ProgresoEventArgs)
+IniciarProceso(entrada args : ProgresoEventArgs)

+OnNotificar(entrada descripcion : String)


+OnNotificarError(entrada origen : String, entrada descripcion : String)
+OnNotificarErrorControlado(entrada origen : String, entrada descripcion : String)
+OnNotificarErrorNoControlado(entrada origen : String, entrada descripcion : String)
+Notificar(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+NotificarError(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+NotificarErrorControlado(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+NotificarErrorNoControlado(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+FormaPagoID() : Integer
+Descripcion() : String
+RequiereDetallesPago() : Boolean
+Hierarchy() : ColFormaPago
+New()
+OnCambiandoPropiedad()
+OnPropiedadCambio()
+CambiandoPropiedad(entrada origen : Object, entrada e : EventArgs)
+PropiedadCambio(entrada origen : Object, entrada e : EventArgs)
+FormaPagoIDCambio()
+NombreCambio()
+DescripcionCambio()
+RequiereDetallesPagoCambio()

utilitymodFormaPago
+NO_HAY_SELECCIONADO : Integer
+OBPUserError : Integer
+OBPFormaPagoErrorBase : Integer
+ERR_FORMAPAGOINVALIDDIRTY : Decimal
+ERR_FORMAPAGOPROPIEDADNEWINVALIDA : Decimal
+ERR_FORMAPAGOPROPIEDADPADREINVALIDA : Decimal
+ERR_FORMAPAGOCLASEMARCADAPARABORRADO : Decimal
+ERR_FORMAPAGOINDICEFUERARANGO : Decimal
+ERR_FORMAPAGOTOKENSEGURIDADINVALIDO : Decimal
+ERR_FORMAPAGOCOLECCIONVACIA : Decimal
+ERR_NOHAYSELECCION : Decimal
+PA_SELECCIONAR_FORMAPAGO : String
+PA_INSERTAR_FORMAPAGO : String
+PA_ELIMINAR_FORMAPAGO : String
+PA_ACTUALIZAR_FORMAPAGO : String
+FN_FORMAPAGOID : String
+PARAMNOM_FORMAPAGOID : String
+PARAMNUM_FORMAPAGOID : Integer
+PARAMTIP_FORMAPAGOID : SqlDbType
+FN_NOMBRE : String
+PARAMNOM_NOMBRE : String
+PARAMNUM_NOMBRE : Integer
+PARAMTIP_NOMBRE : SqlDbType
+FN_DESCRIPCION : String
+PARAMNOM_DESCRIPCION : String
+PARAMNUM_DESCRIPCION : Integer
+PARAMTIP_DESCRIPCION : SqlDbType
+FN_REQUIEREDETALLESPAGO : String
+PARAMNOM_REQUIEREDETALLESPAGO : String
+PARAMNUM_REQUIEREDETALLESPAGO : Integer
+PARAMTIP_REQUIEREDETALLESPAGO : SqlDbType
+PARAMNUM_DELETEFLAG : Integer
+PARAMNUM_CREATEDATE : Integer
+PARAMNUM_MODIFYDATE : Integer

FormaPagoPersistente
enumeracinOrdenadoPor
+SinOrden = -1
+FormaPagoID
+Nombre
+Descripcion

#ActualizarColeccion_Con_DatosDevueltos(entrada reader : SqlDataReader, entrada y salida entidad : Entidad)


#PrepararDatos_Para_Insertar(entrada entidad : Entidad, entrada y salida comandoSQL : SqlCommand) : Object
#ProcAlmacenado_Insertar() : String
instance#ProcAlmacenado_Eliminar() : String
#ProcAlmacenado_Actualizar() : String
#PrepararDatos_para_Borrar(entrada oEntidad : Entidad, entrada y salida oComandoSQL : SqlCommand) : Object
#PrepararDatos_para_Actualizar(entrada oEntidad : Entidad, entrada y salida oComandoSQL : SqlCommand) : Object
+New(entrada y salida coleccion : ColFormaPago)

instance

IOBPFabricaFormaPago

#CrearInstanciaDeClase() : Entidad
#CrearInstanciaDeColeccion() : ColeccionEntidades
#ProcAlmacenadoSeleccionar() : String
#AsignarDatosAClase(entrada y salida entidad : Entidad, entrada y salida reader : SqlDataReader)
+Obtener(entrada tokenSeguridad : String, entrada formaPagoID : Integer = SIN_PARAMETRO_OPCIONAL) : ColFormaPago
+Buscar(entrada tokenSeguridad : String, entrada formaPagoID : Integer = ModeloComponentes.Base.SIN_PARAMETRO_OPCIONAL, entrada recuperarRegistros : Registros = Tipos.Registros.NoBorrados) : ColFormaPago
+Nuevo(entrada TokenSeguridad : String) : ColFormaPago
+New()

C23 Diagrama de estructura esttica del componente Forma de Pago.

IOBPIngresoCaja::ColIngresoCaja
-_IndiceSeleccionado : Integer
-_Ordenada : Integer
+Progreso(entrada args : ProgresoEventArgs)
+OnNotificar(entrada descripcion : String)
+OnNotificarError(entrada origen : String, entrada descripcion : String)
+OnNotificarErrorControlado(entrada origen : String, entrada descripcion : String)
+OnNotificarErrorNoControlado(entrada origen : String, entrada descripcion : String)
+Notificar(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+NotificarError(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+NotificarErrorControlado(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+NotificarErrorNoControlado(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+Comparar(entrada obj1 : Object, entrada obj2 : Object, entrada campo : Integer) : Integer
+OrdenarElementos(entrada elemento1 : Integer, entrada elemento2 : Integer)
+Ordenar()
+ProgresoOrdenamiento(entrada progreso : Integer, entrada total : Integer)
+Count() : Integer
+GetEnumerator() : IEnumerator
+Agregar(entrada ingresoCajaID : Integer, entrada reciboCajaID : Integer, entrada departamentoID : String, entrada pacienteID : String, entrada clienteID : Decimal, entrada conceptoFacturaID : Integer, entrada formaPagoID : Integer, entrada bancoID : Integer, entrada chequeNo : String, entrada creditoNo : String, entrada debitoNo : String, entrada depositoNo : String, entrada montoOtroPago : Decimal, entrada montoEfectivo : Decimal, entrada observaciones : String = "") : Integer
+Agregar(entrada ingresoCajaID : Integer, entrada reciboCajaID : Integer, entrada departamentoID : String, entrada pacienteID : String, entrada clienteID : Decimal, entrada cuentaSeguroID : Integer, entrada conceptoFacturaID : Integer, entrada formaPagoID : Integer, entrada bancoID : Integer, entrada chequeNo : String, entrada creditoNo : String, entrada debitoNo : String, entrada depositoNo : String, entrada montoOtroPago : Decimal, entrada montoEfectivo : Decimal, entrada observaciones : String = "") : Integer
+MarcarParaBorrar(entrada bancoID : Integer) : Boolean
+Recuperar(entrada bancoID : Integer) : Boolean
+Remover(entrada indice : Integer) : Boolean
+OrdenadoPor() : OrdenadoPor
+ElementoSeleccionado() : CIngresoCaja
+Elementos(entrada Indice : Integer) : CIngresoCaja
+Agregar(entrada ingresoCaja : CIngresoCaja) : Integer
+Buscar(entrada ingresoCajaID : Integer) : CIngresoCaja
+New()
+FinalizarProceso(entrada args : ProgresoEventArgs)
+IniciarProceso(entrada args : ProgresoEventArgs)

IOBPIngresoCaja::CIngresoCaja
-_IngresoCajaID : Integer
-_ReciboCajaID : Integer
-_DepartamentoID : String
-_Departamento : ColDepartamento
-_PacienteID : String
-_Paciente : ColPaciente
-_ClienteID : Integer
-_Cliente : ColCliente
-_CuentaSeguroID : Integer
-_CuentaSeguro : ColCuentaSeguro
-_Concepto : String
-_PartidasIngresoCaja : ColPartidaIngresoCaja
-_ConceptoFacturaID : Decimal
-_FormaPagoID : Integer
-_FormaPago : ColFormaPago
-_BancoID : Integer
-_Banco : ColBanco
-_ChequeNo : String
-_CreditoNo : String
-_DebitoNo : String
-_DepositoNo : String
-_MontoOtroPago : Decimal
-_MontoEfectivo : Decimal
-_Observaciones : String
+OnNotificar(entrada descripcion : String)
+OnNotificarError(entrada origen : String, entrada descripcion : String)
+OnNotificarErrorControlado(entrada origen : String, entrada descripcion : String)
+OnNotificarErrorNoControlado(entrada origen : String, entrada descripcion : String)
+Notificar(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+NotificarError(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+NotificarErrorControlado(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+NotificarErrorNoControlado(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+Departamento() : ICDepartamento
+Paciente() : ICPaciente
+Cliente() : ICCliente
+CuentaSeguro() : ICCuentaSeguro
+PartidasIngresoCaja() : IColPartidaIngresoCaja
+FormaPago() : ICFormaPago
+BancoID() : Integer
+Banco() : ICBanco
+MontoEfectivo() : Decimal
+Observaciones() : String
+Anulado() : Boolean
+Modificado() : Date
+Hierarchy() : ColIngresoCaja
+New()
+OnCambiandoPropiedad()
+OnPropiedadCambio()
+CambiandoPropiedad(entrada origen : Object, entrada e : EventArgs)
+PropiedadCambio(entrada origen : Object, entrada e : EventArgs)
+IngresoCajaIDCambio()
+ReciboCajaIDCambio()
+DepartamentoIDCambio()
+PacienteIDCambio()
+ClienteIDCambio()
+ConceptoCambio()
+FormaPagoIDCambio()
+BancoIDCambio()
+ChequeNoCambio()
+CreditoNoCambio()
+DebitoNoCambio()
+DepositoNoCambio()
+MontoOtroPagoCambio()
+MontoEfectivoCambio()
+ObservacionesCambio()

enumeracin
IOBPIngresoCaja::OrdenadoPor
+SinOrden = -1
+IngresoCajaID
+DepartamentoID
+PacienteID
+ClienteID
+FormaPagoID
+BancoID

IOBPIngresoCaja::IngresoCajaPersistente

#ActualizarColeccion_Con_DatosDevueltos(entrada reader : SqlDataReader, entrada y salida entidad : Entidad)


#PrepararDatos_Para_Insertar(entrada entidad : Entidad, entrada y salida comandoSQL : SqlCommand) : Object
#ProcAlmacenado_Insertar() : String
#ProcAlmacenado_Eliminar() : String
#ProcAlmacenado_Actualizar() : String
#PrepararDatos_para_Borrar(entrada oEntidad : Entidad, entrada y salida oComandoSQL : SqlCommand) : Object
#PrepararDatos_para_Actualizar(entrada oEntidad : Entidad, entrada y salida oComandoSQL : SqlCommand) : Object
+New(entrada y salida coleccion : ColIngresoCaja)

instance

instance

IOBPIngresoCaja::IOBPFabricaIngresoCaja

#CrearInstanciaDeClase() : Entidad
#CrearInstanciaDeColeccion() : ColeccionEntidades
#ProcAlmacenadoSeleccionar() : String
#AsignarDatosAClase(entrada y salida entidad : Entidad, entrada y salida reader : SqlDataReader)
+Obtener(entrada tokenSeguridad : String, entrada ingresoCajaID : Integer = SIN_PARAMETRO_OPCIONAL) : ColIngresoCaja
+Buscar(entrada tokenSeguridad : String, entrada DesdeReciboIngresoID : Integer, entrada HastaReciboIngresoID : Integer, entrada departamentoID : Integer, entrada recuperarRegistros : Registros = Tipos.Registros.Todos) : ColIngresoCaja
+Buscar(entrada tokenSeguridad : String, entrada fechaInicio : Date, entrada fechaFinal : Date, entrada departamentoID : Integer, entrada recuperarRegistros : Registros = Tipos.Registros.Todos) : ColIngresoCaja
+BuscarRecibosCaja(entrada tokenSeguridad : String, entrada ReciboCajaID : Integer = SIN_PARAMETRO_OPCIONAL, entrada departamentoID : Integer = SIN_PARAMETRO_OPCIONAL, entrada recuperarRegistros : Registros = Tipos.Registros.NoBorrados) : ColIngresoCaja
+BuscarRecibo(entrada tokenSeguridad : String, entrada ReciboCajaID : Integer = SIN_PARAMETRO_OPCIONAL, entrada departamentoID : Integer = SIN_PARAMETRO_OPCIONAL, entrada recuperarRegistros : Registros = Tipos.Registros.NoBorrados) : ColIngresoCaja
+Buscar(entrada tokenSeguridad : String, entrada ingresoCajaID : Integer = SIN_PARAMETRO_OPCIONAL, entrada departamentoID : Integer = SIN_PARAMETRO_OPCIONAL, entrada recuperarRegistros : Registros = Tipos.Registros.NoBorrados) : ColIngresoCaja
+Nuevo(entrada tokenSeguridad : String) : ColIngresoCaja
+New()

C24 Diagrama de estructura esttica para el componente Ingreso de Caja.

IOBPPaciente::ColPaciente

IOBPPaciente::CPaciente

-_IndiceSeleccionado : Integer = ModeloComponentes.Compartidos.IOBPPaciente.modPaciente.NO_HAY_SELECCIONADO


-_Ordenada : Integer

-_PacienteID : Integer
-_PersonaID : Integer
-_Personas : ColPersona
-_HistoriaID : Integer
-_Observaciones : String
+OnNotificar(entrada descripcion : String)
+OnNotificarError(entrada origen : String, entrada descripcion : String)
+OnNotificarErrorControlado(entrada origen : String, entrada descripcion : String)
+OnNotificarErrorNoControlado(entrada origen : String, entrada descripcion : String)
+Notificar(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+NotificarError(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+NotificarErrorControlado(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+NotificarErrorNoControlado(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+PersonaID() : Integer
+Persona() : ICPersona
+Observaciones() : String
+Hierarchy() : ColPaciente
+New()
+OnCambiandoPropiedad()
+OnPropiedadCambio()
+CambiandoPropiedad(entrada origen : Object, entrada e : EventArgs)
+PropiedadCambio(entrada origen : Object, entrada e : EventArgs)
+PacienteIDCambio()
+PersonaIDCambio()
+HistoriaIDCambio()
+ObservacionesCambio()

+Progreso(entrada args : ProgresoEventArgs)


+OnNotificar(entrada descripcion : String)
+OnNotificarError(entrada origen : String, entrada descripcion : String)
+OnNotificarErrorControlado(entrada origen : String, entrada descripcion : String)
+OnNotificarErrorNoControlado(entrada origen : String, entrada descripcion : String)
+Notificar(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+NotificarError(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+NotificarErrorControlado(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+NotificarErrorNoControlado(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+Comparar(entrada obj1 : Object, entrada obj2 : Object, entrada campo : Integer) : Integer
+OrdenarElementos(entrada elemento1 : Integer, entrada elemento2 : Integer)
+Ordenar()
+ProgresoOrdenamiento(entrada progreso : Integer, entrada total : Integer)
+Count() : Integer
+GetEnumerator() : IEnumerator
+Agregar(entrada personaID : Integer, entrada observacionesMedicas : String) : Integer
+MarcarParaBorrar(entrada bancoID : Integer) : Boolean
+Recuperar(entrada bancoID : Integer) : Boolean
+Remover(entrada indice : Integer) : Boolean
+OrdenadoPor() : OrdenadoPor
+ElementoSeleccionado() : CPaciente
+Elementos(entrada Indice : Integer) : CPaciente
+Agregar(entrada Persona : CPaciente) : Integer
+Buscar(entrada personaID : Integer) : CPaciente
+New()
+FinalizarProceso(entrada args : ProgresoEventArgs)
+IniciarProceso(entrada args : ProgresoEventArgs)

IOBPPaciente::PacientePersistente

enumeracinIOBPPaciente::OrdenadoPor

instance

+SinOrden = -1
+PacienteID
+PersonaID
+Cedula
+NombreCompletoFormal
+NombreCompletoInformal

instance

#ActualizarColeccion_Con_DatosDevueltos(entrada reader : SqlDataReader, entrada y salida entidad : Entidad)


#PrepararDatos_Para_Insertar(entrada entidad : Entidad, entrada y salida comandoSQL : SqlCommand) : Object
#ProcAlmacenado_Insertar() : String
#ProcAlmacenado_Eliminar() : String
#ProcAlmacenado_Actualizar() : String
+New(entrada y salida coleccion : ColPaciente)
#PrepararDatos_para_Borrar(entrada oEntidad : Entidad, entrada y salida oComandoSQL : SqlCommand) : Object
#PrepararDatos_para_Actualizar(entrada oEntidad : Entidad, entrada y salida oComandoSQL : SqlCommand) : Object

IOBPPaciente::IOBPFabricaPaciente

#CrearInstanciaDeClase() : Entidad
#CrearInstanciaDeColeccion() : ColeccionEntidades
#ProcAlmacenadoSeleccionar() : String
#AsignarDatosAClase(entrada y salida entidad : Entidad, entrada y salida reader : SqlDataReader)
+ObtenerPersona(entrada tokenSeguridad : String, entrada pacienteID : Integer = SIN_PARAMETRO_OPCIONAL) : ColPaciente
+Buscar(entrada tokenSeguridad : String, entrada pacienteID : Integer = SIN_PARAMETRO_OPCIONAL, entrada personaID : Integer = SIN_PARAMETRO_OPCIONAL, entrada historiaID : Integer = SIN_PARAMETRO_OPCIONAL, entrada recuperarRegistros : Registros = Tipos.Registros.NoBorrados) : ColPaciente
+Existe(entrada tokenSeguridad : String, entrada personaID : Integer = SIN_PARAMETRO_OPCIONAL, entrada recuperarRegistros : Registros = Tipos.Registros.NoBorrados) : Boolean
+Nuevo(entrada tokenSeguridad : String) : ColPaciente
+New()

C25 Diagrama de estructura esttica del componente Paciente.

IOBPPartidaIngresoCaja::ColPartidaIngresoCaj

IOBPPartidaIngresoCaja::CPartidaIngresoCaj

-_IndiceSeleccionado : Integer = ModeloComponentes.Facturacion.IOBPPartidaIngresoCaja.modPartidaIngresoCaja.NO_HAY_SELECCIONADO


-_Ordenada : Integer

-_PartidaIngresoCajaID : Integer
-_IngresoCajaID : Integer
-_ConceptoFacturaID : Integer
-_ConceptoFactura : ColConceptoFactura
-_Nombre : String
-_Descripcion : String
-_Cantidad : Integer
-_ImporteUnitario : Decimal
+OnNotificar(entrada descripcion : String)
+OnNotificarError(entrada origen : String, entrada descripcion : String)
+OnNotificarErrorControlado(entrada origen : String, entrada descripcion : String)
+OnNotificarErrorNoControlado(entrada origen : String, entrada descripcion : String)
+Notificar(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+NotificarError(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+NotificarErrorControlado(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+NotificarErrorNoControlado(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+ConceptoFactura() : ICConceptoFactura
+Descripcion() : String
+Cantidad() : Integer
+Total() : Decimal
+Hierarchy() : ColPartidaIngresoCaja
+New()
+OnCambiandoPropiedad()
+OnPropiedadCambio()
+CambiandoPropiedad(entrada origen : Object, entrada e : EventArgs)
+PropiedadCambio(entrada origen : Object, entrada e : EventArgs)
+PartidaIngresoCajaIDCambio()
+IngresoCajaIDCambio()
+ConceptoFacturaIDCambio()
+NombreCambio()
+DescripcionCambio()
+CantidadCambio()
+ImporteUnitarioCambio()

instance

+Progreso(entrada args : ProgresoEventArgs)


+OnNotificar(entrada descripcion : String)
+OnNotificarError(entrada origen : String, entrada descripcion : String)
+OnNotificarErrorControlado(entrada origen : String, entrada descripcion : String)
+OnNotificarErrorNoControlado(entrada origen : String, entrada descripcion : String)
+Notificar(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+NotificarError(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+NotificarErrorControlado(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+NotificarErrorNoControlado(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+Comparar(entrada obj1 : Object, entrada obj2 : Object, entrada campo : Integer) : Integer
+OrdenarElementos(entrada elemento1 : Integer, entrada elemento2 : Integer)
+Ordenar()
+ProgresoOrdenamiento(entrada progreso : Integer, entrada total : Integer)
+Count() : Integer
+GetEnumerator() : IEnumerator
+Agregar(entrada partidaIngresoCajaID : Integer, entrada ingresoCajaID : Integer, entrada conceptoFacturaID : Integer, entrada nombre : String, entrada descripcion : String, entrada cantidad : Integer, entrada importeUnitario : Decimal) : Integer
+MarcarParaBorrar(entrada partidaIngresoCajaID : Integer) : Boolean
+Recuperar(entrada partidaIngresoCajaID : Integer) : Boolean
+Remover(entrada indice : Integer) : Boolean
+OrdenadoPor() : OrdenadoPor
+ElementoSeleccionado() : CPartidaIngresoCaja
+Elementos(entrada Indice : Integer) : CPartidaIngresoCaja
+Agregar(entrada Cargo : CPartidaIngresoCaja) : Integer
+Buscar(entrada partidaIngresoCajaID : Integer) : CPartidaIngresoCaja
+New()
+FinalizarProceso(entrada args : ProgresoEventArgs)
+IniciarProceso(entrada args : ProgresoEventArgs)

instance
enumeracin
IOBPPartidaIngresoCaja::OrdenadoPor
+SinOrden = -1
+PartidaIngresoCajaID = 0
+Nombre = 1
+Descripcion = 2
+Salario = 3
+HorasJornada = 4
+CategoriaFacturacionID

IOBPPartidaIngresoCaja::PartidaIngresoCajaPersistent

#ActualizarColeccion_Con_DatosDevueltos(entrada reader : SqlDataReader, entrada y salida entidad : Entidad)


#PrepararDatos_Para_Insertar(entrada entidad : Entidad, entrada y salida comandoSQL : SqlCommand) : Object
#ProcAlmacenado_Insertar() : String
#ProcAlmacenado_Eliminar() : String
#ProcAlmacenado_Actualizar() : String
#PrepararDatos_para_Borrar(entrada oEntidad : Entidad, entrada y salida oComandoSQL : SqlCommand) : Object
#PrepararDatos_para_Actualizar(entrada oEntidad : Entidad, entrada y salida oComandoSQL : SqlCommand) : Object
+New(entrada y salida coleccion : ColPartidaIngresoCaja)

IOBPPartidaIngresoCaja::IOBPFabricaPartidaIngresoCaj

#CrearInstanciaDeClase() : Entidad
#CrearInstanciaDeColeccion() : ColeccionEntidades
#ProcAlmacenadoSeleccionar() : String
#AsignarDatosAClase(entrada y salida entidad : Entidad, entrada y salida reader : SqlDataReader)
+Obtener(entrada tokenSeguridad : String, entrada PartidaIngresoCajaID : Integer = SIN_PARAMETRO_OPCIONAL) : ColPartidaIngresoCaja
+Buscar(entrada tokenSeguridad : String, entrada partidaIngresoCajaID : Integer = SIN_PARAMETRO_OPCIONAL, entrada ingresoCajaID : Integer = SIN_PARAMETRO_OPCIONAL, entrada recuperarRegistros : Registros = Tipos.Registros.NoBorrados) : ColPartidaIngresoCaja
+Nuevo(entrada tokenSeguridad : String) : ColPartidaIngresoCaja
+New()

C26 Diagrama de estructura esttica para el componente Ingreso de Caja.

IOBPPartidaPresupuesto::CPartidaPresupuesto
-_PartidaPresupuestoID : Integer
-_PresupuestoID : Integer
-_ConceptoFacturaID : Integer
-_ConceptoFactura : ColConceptoFactura
-_Nombre : String
-_Descripcion : String
-_Cantidad : Integer
-_ImporteUnitario : Decimal

IOBPPartidaPresupuesto::ColPartidaPresupuesto
-_IndiceSeleccionado : Integer = ModeloComponentes.Facturacion.IOBPPartidaPresupuesto.modPartidaPresupuesto.NO_HAY_SELECCIONADO
-_Ordenada : Integer

+OnNotificar(entrada descripcion : String)


+OnNotificarError(entrada origen : String, entrada descripcion : String)
+OnNotificarErrorControlado(entrada origen : String, entrada descripcion : String)
+OnNotificarErrorNoControlado(entrada origen : String, entrada descripcion : String)
+Notificar(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+NotificarError(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+NotificarErrorControlado(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+NotificarErrorNoControlado(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+ConceptoFactura() : ICConceptoFactura
+Descripcion() : String
+Cantidad() : Integer
+Total() : Decimal
+Hierarchy() : ColPartidaPresupuesto
+New()
+OnCambiandoPropiedad()
+OnPropiedadCambio()
+CambiandoPropiedad(entrada origen : Object, entrada e : EventArgs)
+PropiedadCambio(entrada origen : Object, entrada e : EventArgs)
+PartidaPresupuestoIDCambio()
+PresupuestoNoCambio()
+ConceptoFacturaIDCambio()
+NombreCambio()
+DescripcionCambio()
+CantidadCambio()
+ImporteUnitarioCambio()

+Progreso(entrada args : ProgresoEventArgs)


+OnNotificar(entrada descripcion : String)
+OnNotificarError(entrada origen : String, entrada descripcion : String)
+OnNotificarErrorControlado(entrada origen : String, entrada descripcion : String)
+OnNotificarErrorNoControlado(entrada origen : String, entrada descripcion : String)
+Notificar(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+NotificarError(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+NotificarErrorControlado(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+NotificarErrorNoControlado(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+Comparar(entrada obj1 : Object, entrada obj2 : Object, entrada campo : Integer) : Integer
+OrdenarElementos(entrada elemento1 : Integer, entrada elemento2 : Integer)
+Ordenar()
+ProgresoOrdenamiento(entrada progreso : Integer, entrada total : Integer)
+Count() : Integer
+GetEnumerator() : IEnumerator
+Agregar(entrada partidaPresupuestoID : Integer, entrada presupuestoID : Integer, entrada conceptoFacturaID : Integer, entrada Nombre : String, entrada descripcion : String, entrada cantidad : Integer, entrada importeUnitario : Decimal) : Integer
+MarcarParaBorrar(entrada bancoID : Integer) : Boolean
+Recuperar(entrada bancoID : Integer) : Boolean
+Remover(entrada indice : Integer) : Boolean
+OrdenadoPor() : OrdenadoPor
+ElementoSeleccionado() : CPartidaPresupuesto
+Elementos(entrada Indice : Integer) : CPartidaPresupuesto
+Agregar(entrada Cargo : CPartidaPresupuesto) : Integer
+Buscar(entrada partidaIngresoCajaID : Integer) : CPartidaPresupuesto
+New()
+FinalizarProceso(entrada args : ProgresoEventArgs)
+IniciarProceso(entrada args : ProgresoEventArgs)

enumeracin
IOBPPartidaPresupuesto::OrdenadoPor

instance

+SinOrden = -1
+PartidaPresupuestoID = 0
+Nombre = 1
+Descripcion = 2
+Salario = 3
+HorasJornada = 4
+CategoriaFacturacionID

instance

IOBPPartidaPresupuesto::PartidaPresupuestoPersistente

#ActualizarColeccion_Con_DatosDevueltos(entrada reader : SqlDataReader, entrada y salida entidad : Entidad)


#PrepararDatos_Para_Insertar(entrada entidad : Entidad, entrada y salida comandoSQL : SqlCommand) : Object
#ProcAlmacenado_Insertar() : String
#ProcAlmacenado_Eliminar() : String
#ProcAlmacenado_Actualizar() : String
#PrepararDatos_para_Borrar(entrada oEntidad : Entidad, entrada y salida oComandoSQL : SqlCommand) : Object
#PrepararDatos_para_Actualizar(entrada oEntidad : Entidad, entrada y salida oComandoSQL : SqlCommand) : Object
+New(entrada y salida coleccion : ColPartidaPresupuesto)

IOBPPartidaPresupuesto::IOBPFabricaPartidaPresupuesto

#CrearInstanciaDeClase() : Entidad
#CrearInstanciaDeColeccion() : ColeccionEntidades
#ProcAlmacenadoSeleccionar() : String
#AsignarDatosAClase(entrada y salida entidad : Entidad, entrada y salida reader : SqlDataReader)
+Obtener(entrada tokenSeguridad : String, entrada PartidaPresupuestoID : Integer = SIN_PARAMETRO_OPCIONAL) : ColPartidaPresupuesto
+Buscar(entrada tokenSeguridad : String, entrada partidaIngresoCajaID : Integer = SIN_PARAMETRO_OPCIONAL, entrada presupuestoID : Integer = SIN_PARAMETRO_OPCIONAL, entrada recuperarRegistros : Registros = Tipos.Registros.NoBorrados) : ColPartidaPresupuesto
+Nuevo(entrada tokenSeguridad : String) : ColPartidaPresupuesto
+New()

C27 Diagrama de estructura esttica para el componente Partida de Presupuesto.

IOBPPresupuesto::CPresupuesto

IOBPPresupuesto::ColPresupuesto

-_PresupuestoID : Integer
-_PresupuestoNo : Integer
-_DepartamentoID : String
-_Departamento : ColDepartamento
-_ClienteID : Integer
-_Cliente : ColCliente
-_PacienteID : Integer
-_Paciente : ColPaciente
-_PartidasPresupuesto : ColPartidaPresupuesto
-_Observaciones : String

-_IndiceSeleccionado : Integer = ModeloComponentes.Facturacion.IOBPPresupuesto.modPresupuesto.NO_HAY_SELECCIONADO


-_Ordenada : Integer

+OnNotificar(entrada descripcion : String)


+OnNotificarError(entrada origen : String, entrada descripcion : String)
+OnNotificarErrorControlado(entrada origen : String, entrada descripcion : String)
+OnNotificarErrorNoControlado(entrada origen : String, entrada descripcion : String)
+Notificar(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+NotificarError(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+NotificarErrorControlado(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+NotificarErrorNoControlado(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+Departamento() : ICDepartamento
+Cliente() : ICCliente
+PacienteID() : Integer
+Paciente() : ICPaciente
+PartidasPresupuesto() : IColPartidaPresupuesto
+Observaciones() : String
+Anulado() : Boolean
+Modificado() : Date
+Monto() : Decimal
+Hierarchy() : ColPresupuesto
+New()
+OnCambiandoPropiedad()
+OnPropiedadCambio()
+CambiandoPropiedad(entrada origen : Object, entrada e : EventArgs)
+PropiedadCambio(entrada origen : Object, entrada e : EventArgs)
+PresupuestoIDCambio()
+PresupuestoNoCambio()
+DepartamentoIDCambio()
+ClienteIDCambio()
+PacienteIDCambio()
+ConceptoCambio()
+ObservacionesCambio()

+Progreso(entrada args : ProgresoEventArgs)


+OnNotificar(entrada descripcion : String)
+OnNotificarError(entrada origen : String, entrada descripcion : String)
+OnNotificarErrorControlado(entrada origen : String, entrada descripcion : String)
+OnNotificarErrorNoControlado(entrada origen : String, entrada descripcion : String)
+Notificar(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+NotificarError(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+NotificarErrorControlado(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+NotificarErrorNoControlado(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+Comparar(entrada obj1 : Object, entrada obj2 : Object, entrada campo : Integer) : Integer
+OrdenarElementos(entrada elemento1 : Integer, entrada elemento2 : Integer)
+Ordenar()
+ProgresoOrdenamiento(entrada progreso : Integer, entrada total : Integer)
+Count() : Integer
+GetEnumerator() : IEnumerator
+Agregar(entrada presupuestoID : Integer, entrada presupuestoNo : Integer, entrada departamentoID : Integer, entrada clienteID : Integer, entrada pacienteID : Integer, entrada observaciones : String = "") : Integer
+MarcarParaBorrar(entrada partidaIngresoCajaID : Integer) : Boolean
+Recuperar(entrada partidaIngresoCajaID : Integer) : Boolean
+Remover(entrada indice : Integer) : Boolean
+OrdenadoPor() : OrdenadoPor
+ElementoSeleccionado() : CPresupuesto
+Elementos(entrada Indice : Integer) : CPresupuesto
+Agregar(entrada Presupuesto : CPresupuesto) : Integer
+Buscar(entrada PresupuestoID : Integer) : CPresupuesto
+New()
+FinalizarProceso(entrada args : ProgresoEventArgs)
+IniciarProceso(entrada args : ProgresoEventArgs)

IOBPPresupuesto::PresupuestoPersistente
enumeracinIOBPPresupuesto::OrdenadoPor
+SinOrden = -1
+PresupuestoID
+PresupuestoNo
+DepartamentoID
+ClienteID

instance

instance

#ActualizarColeccion_Con_DatosDevueltos(entrada reader : SqlDataReader, entrada y salida entidad : Entidad)


#PrepararDatos_Para_Insertar(entrada entidad : Entidad, entrada y salida comandoSQL : SqlCommand) : Object
#ProcAlmacenado_Insertar() : String
#ProcAlmacenado_Eliminar() : String
#ProcAlmacenado_Actualizar() : String
#PrepararDatos_para_Borrar(entrada oEntidad : Entidad, entrada y salida oComandoSQL : SqlCommand) : Object
#PrepararDatos_para_Actualizar(entrada oEntidad : Entidad, entrada y salida oComandoSQL : SqlCommand) : Object
+New(entrada y salida coleccion : ColPresupuesto)

IOBPPresupuesto::IOBPFabricaPresupuesto

#CrearInstanciaDeClase() : Entidad
#CrearInstanciaDeColeccion() : ColeccionEntidades
#ProcAlmacenadoSeleccionar() : String
#AsignarDatosAClase(entrada y salida entidad : Entidad, entrada y salida reader : SqlDataReader)
+Obtener(entrada tokenSeguridad : String, entrada presupuestoID : Integer = SIN_PARAMETRO_OPCIONAL) : ColPresupuesto
+Buscar(entrada tokenSeguridad : String, entrada DesdePresupuestoNo : Integer, entrada HastaPresupuestoNo : Integer, entrada departamentoID : Integer, entrada recuperarRegistros : Registros = Tipos.Registros.Todos) : ColPresupuesto
+Buscar(entrada tokenSeguridad : String, entrada fechaInicio : Date, entrada fechaFinal : Date, entrada departamentoID : Integer, entrada recuperarRegistros : Registros = Tipos.Registros.Todos) : ColPresupuesto
+BuscarRecibosCaja(entrada tokenSeguridad : String, entrada ReciboCajaID : Integer = SIN_PARAMETRO_OPCIONAL, entrada departamentoID : Integer = SIN_PARAMETRO_OPCIONAL, entrada recuperarRegistros : Registros = Tipos.Registros.NoBorrados) : ColPresupuesto
+BuscarRecibo(entrada tokenSeguridad : String, entrada ReciboCajaID : Integer = SIN_PARAMETRO_OPCIONAL, entrada departamentoID : Integer = SIN_PARAMETRO_OPCIONAL, entrada recuperarRegistros : Registros = Tipos.Registros.NoBorrados) : ColPresupuesto
+Buscar(entrada tokenSeguridad : String, entrada presupuestoID : Integer = SIN_PARAMETRO_OPCIONAL, entrada departamentoID : Integer = SIN_PARAMETRO_OPCIONAL, entrada recuperarRegistros : Registros = Tipos.Registros.NoBorrados) : ColPresupuesto
+Nuevo(entrada tokenSeguridad : String) : ColPresupuesto
+New()

C28 Diagrama de estructura esttica para el componente Presupuesto.

Servicios::ServicioAbstracto
Servicios::AdministradorServicios

-_TokenSeguridad : String
#_EstadoServicio : EstadoServicio = Servicios.EstadoServicio.Detenido
-_HoraInicio : Date

-_ListaServicios : ArrayList = New System.Collections.ArrayList


-_ServiciosHashtable : Hashtable = New System.Collections.Hashtable
-AdministradorServiciosPorDefecto : AdministradorServicios = New Servicios.AdministradorServicios

+Nombre() : String
+InicializarServicio()
+FinalizarServicio()
+Inicializado(entrada origen : Object, entrada args : ServicioEventArgs)
+Finalizado(entrada origen : Object, entrada args : ServicioEventArgs)
+Inicializando(entrada origen : Object, entrada args : ServicioEventArgs)
+Finalizando(entrada origen : Object, entrada args : ServicioEventArgs)
+ErrorServicio(entrada origen : Object, entrada e : Exception)
+HoraInicio() : Date
#GenerarServicioID() : String
#OnInicializando(entrada e : ServicioEventArgs)
#OnInicializado(entrada e : ServicioEventArgs)
#OnFinalizando(entrada e : ServicioEventArgs)
#OnFinalizado(entrada e : ServicioEventArgs)
#OnErrorServicio(entrada ex : Exception)
+New()

+Servicios() : AdministradorServicios
-New()
+InicializarTodosServicios()
+FinalizarTodosServicios()
+AgregarServicio(entrada servicio : IServicio) : IServicio
+AgregarServicios(entrada servicios() : IServicio) : IServicio
+ObtenerServicio(entrada tipoServicio : Type) : IServicio
+AsignarTokenSeguridad(entrada tokenSeguridad : String)

Locales::ServicioClientes

+Nombre() : String
+InicializarServicio()
+FinalizarServicio()
+Inicializado(entrada origen : Object, entrada args : ServicioEventArgs)
+Finalizado(entrada origen : Object, entrada args : ServicioEventArgs)
+Inicializando(entrada origen : Object, entrada args : ServicioEventArgs)
+Finalizando(entrada origen : Object, entrada args : ServicioEventArgs)
+ErrorServicio(entrada origen : Object, entrada e : Exception)
+ObtenerTodosClientes() : IColCliente
+ObtenerClientePorID(entrada clienteID : Integer) : IColCliente
+ObtenerClientesPorRIF(entrada rif : String) : IColCliente
+ObtenerTodosClientesPersonales() : IColCliente
+ObtenerTodosClientesEmpresariales() : IColCliente
+ObtenerClientesPersonalesPorNombre(entrada nombre : String) : IColCliente
+ObtenerClientesEmpresarialesPorNombre(entrada nombre : String) : IColCliente
+ObtenerClientesPersonalesPorRIF(entrada rif : Integer) : IColCliente
+AgregarNuevoClienteEmpresa(entrada nombre : String, entrada rif : String, entrada nit : String, entrada direccion : String, entrada telefonos : String) : Integer
+AgregarNuevoClientePersona(entrada cedula : Integer, entrada nombres : String, entrada apellidos : String, entrada direccion : String, entrada telefonoHabitacion : String, entrada telefonoMovil : String, entrada observaciones : String = "") : Integer
+ClienteEsEmpresa(entrada clienteID : Integer) : Boolean
+ModificarClientePersona(entrada clienteID : Integer, entrada cedula : Integer, entrada nombres : String, entrada apellidos : String, entrada direccion : String, entrada telefonoHabitacin : String, entrada telefonoMovil : String) : Boolean
+ModificarClienteEmpresa(entrada clienteID : Integer, entrada rif : String, entrada nit : String, entrada nombres : String, entrada direccion : String, entrada telefonos : String) : Boolean
+Estado() : EstadoServicio
+ServicioID() : String
+New(entrada tokenSeguridad : String)
+New()
+ObtenerClientesPorNombre(entrada nombre : String) : IColCliente
+ObtenerClientesEmpresarialesPorRIF(entrada rif : String) : IColCliente
+EliminarPersonaCliente(entrada clienteID : Integer) : Boolean
#Finalize()

IServicio

Servicios::ServicioEventArgs
-_NombreServicio : String
+NombreServicio() : String
+New(entrada nombreServicio : String)
+New()
Servicios::EstadoServicioArgs
+Estado : EstadoServicio

enumeracinServicios::EstadoServicio

+NombreEstadoServicio() : String

+Iniciado = 1
+Iniciando = 0
+Detenido = 3
+Deteniendo = 2

C29 Diagrama de estructura esttica para el servicio de administracin de clientes.

Servicios::ServicioAbstracto
-_TokenSeguridad : String
#_EstadoServicio : EstadoServicio = Servicios.EstadoServicio.Detenido
-_HoraInicio : Date

Servicios::AdministradorServicios
-_ListaServicios : ArrayList = New System.Collections.ArrayList
-_ServiciosHashtable : Hashtable = New System.Collections.Hashtable
-AdministradorServiciosPorDefecto : AdministradorServicios = New Servicios.AdministradorServicios
+Servicios() : AdministradorServicios
-New()
+InicializarTodosServicios()
+FinalizarTodosServicios()
+AgregarServicio(entrada servicio : IServicio) : IServicio
+AgregarServicios(entrada servicios() : IServicio) : IServicio
+ObtenerServicio(entrada tipoServicio : Type) : IServicio
+AsignarTokenSeguridad(entrada tokenSeguridad : String)

+Nombre() : String
+InicializarServicio()
+FinalizarServicio()
+Inicializado(entrada origen : Object, entrada args : ServicioEventArgs)
+Finalizado(entrada origen : Object, entrada args : ServicioEventArgs)
+Inicializando(entrada origen : Object, entrada args : ServicioEventArgs)
+Finalizando(entrada origen : Object, entrada args : ServicioEventArgs)
+ErrorServicio(entrada origen : Object, entrada e : Exception)
+HoraInicio() : Date
#GenerarServicioID() : String
#OnInicializando(entrada e : ServicioEventArgs)
#OnInicializado(entrada e : ServicioEventArgs)
#OnFinalizando(entrada e : ServicioEventArgs)
#OnFinalizado(entrada e : ServicioEventArgs)
#OnErrorServicio(entrada ex : Exception)
+New()

Locales::ServicioConceptos

+Nombre() : String
+InicializarServicio()
+FinalizarServicio()
+Inicializado(entrada origen : Object, entrada args : ServicioEventArgs)
+Finalizado(entrada origen : Object, entrada args : ServicioEventArgs)
+Inicializando(entrada origen : Object, entrada args : ServicioEventArgs)
+Finalizando(entrada origen : Object, entrada args : ServicioEventArgs)
+ErrorServicio(entrada origen : Object, entrada e : Exception)
+AgregarConceptoFacturacion(entrada nombre : String, entrada descripcion : String, entrada precioParticular : Decimal, entrada precioSeguro : Decimal, entrada categoriaID : Integer) : Boolean
+ObtenerConceptoPorID(entrada conceptoID : Integer) : IColConceptoFactura
+ObtenerTodosConceptosFacturacion() : IColConceptoFactura
+ObtenerConceptosFacturacionPorCategoria(entrada categoriaID : Integer) : IColConceptoFactura
+ObtenerConceptosFacturacionPorNombreYCategoria(entrada nombre : String, entrada categoriaID : Integer, entrada ordenarPorNombre : Boolean = False) : IColConceptoFactura
+ModificarConceptoFacturacion(entrada conceptoID : Integer, entrada nombre : String, entrada descripcion : String, entrada precioParticular : Decimal, entrada precioSeguro : Decimal, entrada categoriaID : Integer) : Boolean
+EliminarConceptoFacturacion(entrada conceptoID : Integer) : Boolean
+Estado() : EstadoServicio
+ServicioID() : String
+New(entrada tokenSeguridad : String)
+New()
#Finalize()

IServicio

enumeracinServicios::EstadoServicio
Servicios::ServicioEventArgs

Servicios::EstadoServicioArgs

-_NombreServicio : String

+Estado : EstadoServicio

+NombreServicio() : String
+New(entrada nombreServicio : String)
+New()

+NombreEstadoServicio() : String

+Iniciado = 1
+Iniciando = 0
+Detenido = 3
+Deteniendo = 2

C30 Diagrama de estructura esttica para el servicio de administracin de conceptos de facturacin.

Servicios::ServicioAbstracto
-_TokenSeguridad : String
#_EstadoServicio : EstadoServicio = Servicios.EstadoServicio.Detenido
-_HoraInicio : Date

Servicios::AdministradorServicios

+Nombre() : String
+InicializarServicio()
+FinalizarServicio()
+Inicializado(entrada origen : Object, entrada args : ServicioEventArgs)
+Finalizado(entrada origen : Object, entrada args : ServicioEventArgs)
+Inicializando(entrada origen : Object, entrada args : ServicioEventArgs)
+Finalizando(entrada origen : Object, entrada args : ServicioEventArgs)
+ErrorServicio(entrada origen : Object, entrada e : Exception)
+HoraInicio() : Date
#GenerarServicioID() : String
#OnInicializando(entrada e : ServicioEventArgs)
#OnInicializado(entrada e : ServicioEventArgs)
#OnFinalizando(entrada e : ServicioEventArgs)
#OnFinalizado(entrada e : ServicioEventArgs)
#OnErrorServicio(entrada ex : Exception)
+New()

-_ListaServicios : ArrayList = New System.Collections.ArrayList


-_ServiciosHashtable : Hashtable = New System.Collections.Hashtable
-AdministradorServiciosPorDefecto : AdministradorServicios = New Servicios.AdministradorServicios
+Servicios() : AdministradorServicios
-New()
+InicializarTodosServicios()
+FinalizarTodosServicios()
+AgregarServicio(entrada servicio : IServicio) : IServicio
+AgregarServicios(entrada servicios() : IServicio) : IServicio
+ObtenerServicio(entrada tipoServicio : Type) : IServicio
+AsignarTokenSeguridad(entrada tokenSeguridad : String)

Locales::ServicioPacientes

+Nombre() : String
+InicializarServicio()
+FinalizarServicio()
+Inicializado(entrada origen : Object, entrada args : ServicioEventArgs)
+Finalizado(entrada origen : Object, entrada args : ServicioEventArgs)
+Inicializando(entrada origen : Object, entrada args : ServicioEventArgs)
+Finalizando(entrada origen : Object, entrada args : ServicioEventArgs)
+ErrorServicio(entrada origen : Object, entrada e : Exception)
+ObtenerTodosPacientes() : IColPaciente
+ObtenerPacientePorHistoriaID(entrada PacienteID : Integer) : IColPaciente
+ObtenerPacientePorCedula(entrada cedula : Integer) : IColPaciente
+ObtenerPacientePorID(entrada pacienteID : Integer) : IColPaciente
+ObtenerPacientePorNombre(entrada nombre : String) : IColPaciente
+AgregarNuevoPaciente(entrada clienteID : Integer) : Integer
+AgregarNuevoPaciente(entrada HistoriaID : Integer, entrada cedula : Integer, entrada nombres : String, entrada apellidos : String, entrada fotografia : Image, entrada direccion : String, entrada fechaNacimiento : Date, entrada tlfnoHabitacion : String, entrada tlfnoMovil : String, entrada Sexo : Integer, entrada EstadoCivil : Integer, entrada observacionesPersonales : String, entrada observacionesMedicas : String) : Integer
+ModificarPaciente(entrada pacienteID : Integer, entrada HistoriaID : Integer, entrada cedula : Integer, entrada nombres : String, entrada apellidos : String, entrada fotografia : Image, entrada direccion : String, entrada fechaNacimiento : Date, entrada tlfnoHabitacion : String, entrada tlfnoMovil : String, entrada Sexo : Integer, entrada EstadoCivil : Integer, entrada observacionesPersonales : String, entrada observacionesMedicas : String) : Boolean
+EliminarPaciente(entrada pacienteID : Integer) : Boolean
+Estado() : EstadoServicio
+ServicioID() : String
+New(entrada tokenSeguridad : String)
+New()
#Finalize()

IServicio

Servicios::ServicioEventArgs

Servicios::ServicioException

-_NombreServicio : String
+NombreServicio() : String
+New(entrada nombreServicio : String)
+New()

+New(entrada mensaje : String, entrada excepcionOriginal : Exception)


+New(entrada mensaje : String)
+New()

enumeracinServicios::EstadoServicio
+Iniciado = 1
+Iniciando = 0
+Detenido = 3
+Deteniendo = 2

C31 Diagrama de estructura esttica para el servicio de administracin de pacientes.

Servicios::ServicioAbstracto

Servicios::AdministradorServicios
-_ListaServicios : ArrayList = New System.Collections.ArrayList
-_ServiciosHashtable : Hashtable = New System.Collections.Hashtable
-AdministradorServiciosPorDefecto : AdministradorServicios = New Servicios.AdministradorServicios
+Servicios() : AdministradorServicios
-New()
+InicializarTodosServicios()
+FinalizarTodosServicios()
+AgregarServicio(entrada servicio : IServicio) : IServicio
+AgregarServicios(entrada servicios() : IServicio) : IServicio
+ObtenerServicio(entrada tipoServicio : Type) : IServicio
+AsignarTokenSeguridad(entrada tokenSeguridad : String)

-_TokenSeguridad : String
#_EstadoServicio : EstadoServicio = Servicios.EstadoServicio.Detenido
-_HoraInicio : Date
+Nombre() : String
+InicializarServicio()
+FinalizarServicio()
+Inicializado(entrada origen : Object, entrada args : ServicioEventArgs)
+Finalizado(entrada origen : Object, entrada args : ServicioEventArgs)
+Inicializando(entrada origen : Object, entrada args : ServicioEventArgs)
+Finalizando(entrada origen : Object, entrada args : ServicioEventArgs)
+ErrorServicio(entrada origen : Object, entrada e : Exception)
+HoraInicio() : Date
#GenerarServicioID() : String
#OnInicializando(entrada e : ServicioEventArgs)
#OnInicializado(entrada e : ServicioEventArgs)
#OnFinalizando(entrada e : ServicioEventArgs)
#OnFinalizado(entrada e : ServicioEventArgs)
#OnErrorServicio(entrada ex : Exception)
+New()

Locales::ServicioPresupuestos
+Nombre() : String
+InicializarServicio()
+FinalizarServicio()
+Inicializado(entrada origen : Object, entrada args : ServicioEventArgs)
+Finalizado(entrada origen : Object, entrada args : ServicioEventArgs)
+Inicializando(entrada origen : Object, entrada args : ServicioEventArgs)
+Finalizando(entrada origen : Object, entrada args : ServicioEventArgs)
+ErrorServicio(entrada origen : Object, entrada e : Exception)
+ObtenerPresupuesto(entrada ingresoCajaID : Integer) : ICPresupuesto
+ObtenerPresupuestosEntreFechas(entrada departamentoID : Integer, entrada fechaInicio : Date, entrada fechaFinal : Date) : IColPresupuesto
+ObtenerPresupuestosEnRango(entrada departamentoID : Integer, entrada ingresoCajaIDInicio : Integer, entrada ingresoCajaIDFinal : Integer) : IColPresupuesto
+NuevoPresupuesto(entrada departamentoID : Integer, entrada clienteID : Integer, entrada pacienteID : Integer, entrada observaciones : String) : Integer
+AgregarPartidaPresupuesto(entrada ingresocajaID : Integer, entrada conceptoFacturaID : Integer, entrada nombre : String, entrada descripcion : String, entrada cantidad : Integer, entrada precioUnitario : Decimal) : Object
+RecuperarPresupuesto(entrada recibiCajaID : Integer, entrada departamentoID : Integer) : Boolean
+AnularPresupuesto(entrada reciboCajaID : Integer, entrada departamentoID : Integer) : Boolean
+Estado() : EstadoServicio
+ServicioID() : String
+New(entrada tokenSeguridad : String)
+New()
+NuevaColeccionPartidasIngresos() : IColPartidaPresupuesto
#Finalize()

IServicio
Servicios::ServicioEventArgs
enumeracinServicios::EstadoServicio
+Iniciado = 1
+Iniciando = 0
+Detenido = 3
+Deteniendo = 2

Servicios::EstadoServicioArgs
+Estado : EstadoServicio
+NombreEstadoServicio() : String

-_NombreServicio : String
+NombreServicio() : String
+New(entrada nombreServicio : String)
+New()

C32 Diagrama de estructura esttica para el servicio de administracin de presupuestos.

Servicios::ServicioAbstracto
-_TokenSeguridad : String
#_EstadoServicio : EstadoServicio = Servicios.EstadoServicio.Detenido
-_HoraInicio : Date

Servicios::AdministradorServicios
-_ListaServicios : ArrayList = New System.Collections.ArrayList
-_ServiciosHashtable : Hashtable = New System.Collections.Hashtable
-AdministradorServiciosPorDefecto : AdministradorServicios = New Servicios.AdministradorServicios
+Servicios() : AdministradorServicios
-New()
+InicializarTodosServicios()
+FinalizarTodosServicios()
+AgregarServicio(entrada servicio : IServicio) : IServicio
+AgregarServicios(entrada servicios() : IServicio) : IServicio
+ObtenerServicio(entrada tipoServicio : Type) : IServicio
+AsignarTokenSeguridad(entrada tokenSeguridad : String)

+Nombre() : String
+InicializarServicio()
+FinalizarServicio()
+Inicializado(entrada origen : Object, entrada args : ServicioEventArgs)
+Finalizado(entrada origen : Object, entrada args : ServicioEventArgs)
+Inicializando(entrada origen : Object, entrada args : ServicioEventArgs)
+Finalizando(entrada origen : Object, entrada args : ServicioEventArgs)
+ErrorServicio(entrada origen : Object, entrada e : Exception)
+HoraInicio() : Date
#GenerarServicioID() : String
#OnInicializando(entrada e : ServicioEventArgs)
#OnInicializado(entrada e : ServicioEventArgs)
#OnFinalizando(entrada e : ServicioEventArgs)
#OnFinalizado(entrada e : ServicioEventArgs)
#OnErrorServicio(entrada ex : Exception)
+New()

IServicio

Locales::ServicioRegistroIngresos

+Nombre() : String
+InicializarServicio()
+FinalizarServicio()
+Inicializado(entrada origen : Object, entrada args : ServicioEventArgs)
+Finalizado(entrada origen : Object, entrada args : ServicioEventArgs)
+Inicializando(entrada origen : Object, entrada args : ServicioEventArgs)
+Finalizando(entrada origen : Object, entrada args : ServicioEventArgs)
+ErrorServicio(entrada origen : Object, entrada e : Exception)
+ObtenerIngresoCaja(entrada ingresoCajaID : Integer) : ICIngresoCaja
+ObtenerIngresosCajaEntreFechas(entrada departamentoID : Integer, entrada fechaInicio : Date, entrada fechaFinal : Date) : IColIngresoCaja
+ObtenerIngresosCajaEnRango(entrada departamentoID : Integer, entrada ingresoCajaIDInicio : Integer, entrada ingresoCajaIDFinal : Integer) : IColIngresoCaja
+NuevoIngresoCaja(entrada departamentoID : Integer, entrada clienteID : Integer, entrada pacienteID : Integer, entrada fecha : Date, entrada formaPagoID : Integer, entrada BancoID : Integer, entrada chequeNo : String, entrada creditoNo : String, entrada debitoNo : String, entrada depositoNo : String, entrada montoOtroPago : Decimal, entrada montoEfectivo : Decimal, entrada observaciones : String) : Integer
+AgregarPartidaIngresoCaja(entrada ingresocajaID : Integer, entrada conceptoFacturaID : Integer, entrada nombre : String, entrada descripcion : String, entrada cantidad : Integer, entrada precioUnitario : Decimal) : Object
+ObtenerPartidasIngresoCaja(entrada IngresoCajaID : Integer, entrada categoriaID : Integer) : IColPartidaIngresoCaja
+RecuperarIngresoCaja(entrada recibiCajaID : Integer, entrada departamentoID : Integer) : Boolean
+Estado() : EstadoServicio
+ServicioID() : String
+New(entrada tokenSeguridad : String)
+New()
+NuevaColeccionPartidasIngresos() : IColPartidaIngresoCaja
+AnularIngresoCaja(entrada reciboCajaID : Integer, entrada departamentoID : Integer) : Boolean
#Finalize()

enumeracinServicios::EstadoServicio
Servicios::EstadoServicioArgs
+Iniciado = 1
+Iniciando = 0
+Detenido = 3
+Deteniendo = 2

+Estado : EstadoServicio
+NombreEstadoServicio() : String

Servicios::ServicioEventArgs
-_NombreServicio : String
+NombreServicio() : String
+New(entrada nombreServicio : String)
+New()

C33 Diagrama de estructura esttica para el servicio de administracin de Registro de Ingresos de Caja.

APNDICE D
Artefactos de diseo del Subsistema Presupuestos para Hospitalizacin

Crear Presupuesto en
base a una plantilla

Iniciar sesin
uses

extends
Crear nuevo
presupuesto

Modificar
presupuesto

extends Agregar persona


uses

Agregar cliente al
sistema

extends

Asignar cliente
Agregar empresa

uses

Agregar paciente
al sistema

Asignar paciente

Secretaria Presupuestos

uses

Agregar
diagnstico al sistema

uses

Agregar concepto
Facturacin al sistema

Asignar diagnstico
al Presupuesto

Agregar concepto
al Presupuesto

uses
Agregar categora
de facturacin

Guardar presupuesto
Cliente
uses

Imprimir
presupuesto
Persona

Empresa

D1 Diagrama de casos de uso del Subsistema Presupuestos para Hospitalizacin.

D2 Descripciones de los casos de uso del Subsistema Presupuestos para


Hospitalizacin.
Nombre del caso de uso: Iniciar sesin.
Actores: Secretaria de presupuestos.
Resumen:
Permite iniciar la sesin en el sistema de presupuestos.
Pre-condiciones:
Curso normal de los eventos
Accin de los actores
Respuesta del sistema
1. Muestra la ventana de inicio de sesin.
2. La secretaria ingresa su nombre de
usuario y su contrasea para iniciar la
sesin.
3. Selecciona la opcin aceptar.
a) Si selecciona la opcin cancelar ver
seccin 1.
4. Busca el nombre y la contrasea del
usuario en la base de datos para verificar
que es vlido.
5. Si el nombre y contrasea del usuario
son vlidos se habilita la ventana
principal y los controles de la aplicacin.
a) Si con incorrectos los datos de inicio
de sesin ver seccin 2.
Flujos alternativos
Seccin 1:
1. Selecciona la opcin cancelar.
2. Cancela el inicio de sesin y se
deshabilitan la ventana principal y los
controles de la aplicacin.
Seccin 2:
1. Selecciona la opcin aceptar.
2. Si el nombre y la contrasea de
usuario no son vlidos el sistema muestra
un mensaje indicando que son
incorrectos.
3. Muestra la ventana de inicio de sesin
nuevamente para que el usuario lo intente
nuevamente.
Nombre del caso de uso: Crear nuevo presupuesto.
Actores: Secretaria de presupuestos.
Resumen: Crea un nuevo presupuesto en el sistema.
Pre-condiciones:

1. Se debe haber iniciado una sesin en el sistema.


2. No debe haber otra nmina o pool abierto.
Curso normal de los eventos
Accin de los actores
Respuesta del sistema
1. Verifica si se ha guardado el
presupuesto actual. Si no se ha guardado
el presupuesto ver seccin 1.
1. Limpia el formulario en pantalla para
crear un nuevo presupuesto.
3. Activa la ventana principal de la
aplicacin.
Flujos alternativos
Seccin 1:
1. Muestra un mensaje notificando al
usuario que hay cambios no guardados en
el presupuesto actual y que si contina
perder los ltimos cambios.
2. Selecciona la opcin S. Si selecciona
la opcin No ver seccin 2.
3. Cierra la ventana de notificacin,
limpia la ventana y se inicia un nuevo
presupuesto.
Seccin 2:
1. Selecciona la opcin No.
2. Cancela la operacin y se deshabilitan
la ventana principal y los controles de la
aplicacin.
Nombre del caso de uso: Crear presupuesto en base a una plantilla.
Actores: Secretaria de presupuestos.
Resumen:
Crea un nuevo presupuesto en base a una plantilla creada por el usuario.
Pre-condiciones:
1. Se debe haber iniciado una sesin en el sistema.
Curso normal de los eventos
Accin de los actores
Respuesta del sistema
1. Muestra la ventana de seleccin de
plantillas para crear un presupuesto.
2. Se selecciona una plantilla para crear
un nuevo presupuesto.
3. Selecciona la opcin aceptar.
a) Si selecciona la opcin cancelar ver
seccin 1.
4. Cierra la ventana de seleccin de

plantillas para presupuesto.


5. Crea un nuevo presupuesto y asigna
todos los conceptos de facturacin de la
plantilla en el nuevo presupuesto.
6. El foco (cursor) pasa al campo de texto
Cliente para que el usuario complete la
informacin del presupuesto
Flujos alternativos
Seccin 1:
1. Selecciona la opcin cancelar.
2. Cancela el inicio de sesin y se
deshabilitan la ventana principal y los
controles de la aplicacin.
Nombre del caso de uso: Modificar presupuesto.
Actores: Secretaria de presupuestos.
Resumen: Carga un presupuesto existente en el sistema para ser modificado.
Pre-condiciones:
1. Se debe haber iniciado una sesin en el sistema.
Curso normal de los eventos
Accin de los actores
Respuesta del sistema
1. Muestra la ventana de bsqueda de
presupuestos existentes en el sistema.
2. Ingresa la informacin necesaria para
realizar la bsqueda del presupuesto.
3. Selecciona la opcin Buscar.
4. Carga todos los presupuestos que
coinciden
con
la
informacin
suministrada para la bsqueda.
5. Selecciona la opcin Aceptar.
a) Si selecciona la opcin Cancelar ver
seccin 1.
5. Cierra la ventana y seleccin de
presupuesto.
6. Carga los datos del presupuesto en la
ventana principal de la aplicacin.
Flujos alternativos
Seccin 1:
1. Cancela la operacin y cierra la
ventana de ingreso de nueva categora de
facturacin.

Nombre del caso de uso: Asignar cliente.

Actores: Secretaria de presupuestos.


Resumen: Asignar el cliente que se registrar en el ingreso o en el presupuesto.
Pre-condiciones:
1. Se debe haber iniciado una sesin en el sistema.
Curso normal de los eventos
Accin de los actores
Respuesta del sistema
1. Ingresa la cdula o parte del nombre
del cliente en el campo de texto cliente.
a) Si la informacin suministrada son
slo cifras ver seccin 1.
b) Si la informacin suministrada es una
combinacin de letras y nmeros ver
seccin 2.
2. Selecciona la opcin cliente (botn) o
presiona la tecla ENTER.
3. Muestra la ventana de seleccin de
cliente con los clientes que corresponden
con la informacin de nmero de cdula
o nombre que se ingreso.
4. Selecciona el cliente de la lista de
personas.
a) Si Selecciona la opcin empresas
(pestaa) ver seccin 3.
5. Selecciona la opcin aceptar.
a) Si selecciona la opcin cancelar ver
seccin 4.
6. Cierra la ventana de seleccin de
clientes.
7. Asigna el cliente al ingreso o
presupuesto que se esta editando.
8. Activa el campo de texto paciente.
Flujos alternativos
Seccin 1:
1. Realiza una bsqueda en el sistema por
nmero de cdula de cliente.
Seccin 2:
1. Realiza una bsqueda en el sistema por
el nombre del cliente.
2. Se muestra la ventana de seleccin de
clientes y se muestran los clientes cuyo
nombre coincide con el ingresado.
Seccin 3:
1. Se cargan los clientes (empresas) que

coinciden con valor ingresado.


Seccin 4:
1. Muestra las empresas que coinciden
con la bsqueda del usuario.
Post-condiciones: Debe haber un cliente asignado al ingreso o presupuesto que se
esta editando.

Nombre del caso de uso: Agregar persona al sistema.


Actores: Secretaria de presupuestos.
Resumen: Agrega un nuevo cliente al sistema.
Pre-condiciones:
1. Se debe haber iniciado sesin en el sistema.
Curso normal de los eventos
Accin de los actores
Respuesta del sistema
1. Muestra la ventana de ingreso de
nuevo cliente (persona) al sistema.
2. Ingresa la cdula del cliente.
3. Cambia de campo de texto o presiona
la tecla ENTER.
4. Realiza una bsqueda en todo el
sistema por un cliente (persona) con la
cdula ingresada.
5. Si encuentra un cliente (persona) con
el nmero cdula ingresado muestra un
mensaje en pantalla indicando que el
cliente existe en el sistema.
a) Si no encuentra ninguna persona con
la cdula suministrada cambia al campo
de texto nombres.
6. Ingresa la informacin del nuevo
cliente.
7. Seleccionar la opcin Aceptar.
a) Si selecciona la opcin cancelar ver
seccin 1.
8. Agrega el cliente (persona) al sistema.
9. Pregunta al usuario si desea agregar el
cliente al ingreso o presupuesto que se
esta editando.
10. Selecciona la opcin S.
a) Si selecciona la opcin No ver seccin
2.
11. Cierre la ventana de ingreso de nuevo
cliente (persona).

12. Coloca el nombre del cliente en el


campo de texto cliente.
13. El foco (cursor) pasa al campo de
texto paciente.
Flujos alternativos
Seccin 1:
1. Se cancela la operacin y se cierra la
ventana de insercin de nuevo cliente.
Seccin 2:
1. Cierra la ventana de insercin de
nuevo cliente.
Nombre del caso de uso: Agregar empresa al sistema.
Actores: Secretaria de presupuestos.
Resumen: Permite agregar un nuevo cliente empresa al sistema.
Pre-condiciones:
1. Debe haber iniciado una sesin en el sistema.
Curso normal de los eventos
Accin de los actores
Respuesta del sistema
1. Muestra la ventana ingreso de nuevo
cliente (empresa).
2. Ingresa la informacin del nuevo
cliente (empresa).
3. Selecciona la opcin aceptar.
a) Si selecciona la opcin cancelar ver
seccin 1.
4. Agrega el nuevo cliente en el sistema.
5. Pregunta al usuario si desea agregar el
cliente al ingreso o presupuesto que se
esta editando.
6. Selecciona la opcin S.
a) Si selecciona la opcin No ver la
seccin 2.
7. Cierre la ventana de ingreso de nuevo
cliente (empresa).
8. Coloca el nombre del cliente en el
campo de texto cliente.
9. El foco (cursor) pasa al campo de texto
paciente.bre del cliente en el campo de
texto empresa.
10. El foco (cursor) pasa al campo de
texto concepto.
Flujos alternativos
Seccin 1:
1. Selecciona la opcin cancelar.
1. Se cancela la operacin y se cierra la

ventana de insercin de nuevo cliente


(empresa).
Seccin 2:
1. Selecciona la opcin No.
1. Cierra la ventana de insercin de
nuevo cliente (empresa).
Post-condiciones: Debe haber un cliente seleccionado al ingreso o presupuesto que
se esta editando.

Nombre del caso de uso: Asignar paciente.


Actores: Secretaria de presupuestos.
Resumen: Asignar el paciente que se registrar en el ingreso o en el presupuesto.
Pre-condiciones:
1. Se debe haber iniciado una sesin en el sistema.
Curso normal de los eventos
Accin de los actores
Respuesta del sistema
1. Ingresa la cdula o parte del nombre
del paciente en el campo de texto
paciente.
2. Selecciona la opcin paciente (botn)
o presiona la tecla ENTER.
a) Si la informacin suministrada son
slo cifras ver seccin 1.
b) Si la informacin suministrada es una
combinacin de letras y nmeros ver
seccin 2.
3. Muestra la ventana
pacientes con los
corresponden con la
nmero de cdula o
ingreso.

de seleccin de
pacientes que
informacin de
nombre que se

4. Selecciona la opcin aceptar.


a) Si selecciona la opcin cancelar ver
seccin 4.
5. Cierra la ventana de seleccin de
pacientes.
6. Asigna el paciente al ingreso o
presupuesto que se esta editando.
7. Activa el campo de texto concepto.
Flujos alternativos

Seccin 1:
1. Realiza una bsqueda en el sistema por
nmero de cdula de cliente.
2. Se muestra la ventana de seleccin de
pacientes y se muestran los pacientes
cuyo nombre coincide con el ingresado.
Seccin 2:
1. Realiza una bsqueda en el sistema por
el nombre del paciente.
2. Se muestra la ventana de seleccin de
pacientes y se muestran los pacientes
cuyo nombre coincide con el ingresado.
Post-condiciones: Debe haber un paciente asignado al ingreso o presupuesto que se
esta editando.

Nombre del caso de uso: Agregar paciente al sistema.


Actores: Secretaria de presupuestos.
Resumen: Agrega un nuevo paciente al sistema.
Pre-condiciones:
1. Se debe haber iniciado una sesin en el sistema.
Curso normal de los eventos
Accin de los actores
Respuesta del sistema
1. Muestra la ventana (formulario) de
ingreso de nuevo paciente.
2. Ingresa la cdula del paciente y
presiona la tecla ENTER.
3. Busca en el sistema un paciente con el
nmero de cdula ingresado.
a) Si existe un paciente en ese nmero de
cdula ver seccin 1.
4. Cambia al campo de texto nombres.
5. Ingresa los datos del paciente.
6. Selecciona la opcin Aceptar.
a) Si selecciona la opcin Cancelar ver
seccin 2.
7. Ingresa el nuevo paciente en el sistema
y cierra le ventana (formulario) de
ingreso de nuevo paciente.
Flujos alternativos
Seccin 1:
1. Muestra un mensaje indicando que el
paciente ya existe en el sistema.
Seccin 2:

1. Cancela la operacin y cierra la


ventana (formulario)
de ingreso de
nuevo paciente.
Post-condiciones: Debe haber un paciente asignado al ingreso o presupuesto que se
esta editando.

Nombre del caso de uso: Asignar concepto a factura.


Actores: Secretaria de departamento.
Resumen: Asigna un concepto al ingreso o presupuesto.
Pre-condiciones:
1. Se debe haber iniciado una sesin en el sistema.
Curso normal de los eventos
Accin de los actores
Respuesta del sistema
1. Ingresa parte del nombre del concepto
en el campo de texto concepto.
2. Muestra la ventana de seleccin de
conceptos.
3. Carga los conceptos que coinciden con
el nombre del concepto ingresado.
4. Selecciona una categora de la lista de
categoras de conceptos.
5. Actualiza la lista de conceptos con los
conceptos de la categora seleccionada
que coinciden con el nombre de concepto
ingresado.
6. Selecciona un concepto de la lista.
7. Ingresa la cantidad del concepto.
8. Selecciona la opcin Aceptar.
a) Si selecciona la opcin Cancelar ver
seccin 1.
9. Verifica si el cliente es una persona o
una empresa y asigna el monto
correspondiente.
10. Agrega el concepto en la lista de
conceptos de la ventana principal de la
aplicacin y actualiza los totales del
ingreso o presupuesto.
11. Cambio el foco (cursor) en el campo
de texto Concepto para ingresar uno
nuevo.
Flujos alternativos

Seccin 1:
1. Cancela la operacin y cierra la
ventana de seleccin de conceptos.
Post-condiciones: Debe haber un paciente asignado al ingreso o presupuesto que se
esta editando.

Nombre del caso de uso: Agregar concepto de facturacin.


Actores: Secretaria de presupuestos.
Resumen: Agrega un nuevo concepto de facturacin al sistema.
Pre-condiciones:
3. Se debe haber iniciado una sesin en el sistema.
4. Se debe haber seleccionado y categora de facturacin.
Curso normal de los eventos
Accin de los actores
Respuesta del sistema
1. Muestra la ventana (formulario) de
ingreso de nuevo concepto de
facturacin.
2. Ingresa la informacin para el nuevo
concepto.
3. Selecciona la opcin Aceptar.
a) Si selecciona la opcin Cancelar ver
seccin 1.
4. Agrega el nuevo
facturacin al sistema.

concepto

de

5. Cierra la ventana (formulario) de


ingreso de nueva categora de
facturacin.
Flujos alternativos
Seccin 1:
1. Cancela la operacin y cierra la
ventana de ingreso de nuevo concepto de
facturacin.

Nombre del caso de uso: Agregar categora de facturacin.


Actores: Secretaria de presupuestos.
Resumen: Agrega un nuevo concepto de facturacin al sistema.
Pre-condiciones:
2. Se debe haber iniciado una sesin en el sistema.
3. Se debe haber seleccionado y categora de facturacin.
Curso normal de los eventos
Accin de los actores
Respuesta del sistema
1. Muestra la ventana (formulario) de
ingreso de nueva categora de

facturacin.
2. Ingresa la informacin para la nueva
categora de facturacin.
3. Selecciona la opcin Aceptar.
a) Si selecciona la opcin Cancelar ver
seccin 1.
4. Agrega la nueva
facturacin al sistema.

categora

de

5. Cierra la ventana (formulario) de


ingreso de nueva categora de
facturacin.
Flujos alternativos
Seccin 1:
1. Cancela la operacin y cierra la
ventana de ingreso de nueva categora de
facturacin.

Nombre del caso de uso: Registrar ingreso de caja.


Actores: Secretaria de departamento.
Resumen: Registra un ingreso de caja en el sistema.
Pre-condiciones:
3. Se debe haber iniciado una sesin en el sistema.
4. Se deben haber suministrado todos los datos para el ingreso de caja.
Curso normal de los eventos
Accin de los actores
Respuesta del sistema
1. Selecciona la opcin imprimir recibo.
2. Verifica que se hayan ingresado todos
los datos necesarios para registrar el
ingreso.
3. Registra el ingreso de caja en el
sistema.
4. Imprime en papel un recibo de ingreso
de caja.
Flujos alternativos

Paciente

PartidaPreHospitalizacion

PresupuestoHospitalizacion
PK
FK1
FK3
FK2

PK

PacienteID

FK1

PersonaID
HistoriaID
Observaciones
DeleteFlag
CreateDateTime
ModifyDateTime

PresupuestoHospitalizacionID
ClienteID
PacienteID
DiagnosticoID
Fecha
Observaciones
DeleteFlag
CreateDateTime
ModifyDateTime

Diagnostico
PK

Persona
PK

PersonaID
Cedula
Nombres
Apellidos
FechaNacimiento
Fotografia
Direccion
TelefonoHabitacion
TelefonoMovil
Sexo
EstadoCivil
Extranjero
Observaciones
DeleteFlag
CreateDateTime
ModifyDateTime

DiagnosticoID

ClienteID

FK2
FK1

PersonaID
EmpresaID
DeleteFlag
CreateDateTime
ModifyDateTime

Nombre
Descripcion
DeleteFlag
CreateDateTime
ModifyDateTime

PartidaPreHospitalizacionID
PresupuestoHospitalizacionID

FK1
FK2
FK3

ConceptoFacturaID
IntervencionID
MedicamentoID
Nombre
Descripcion
Cantidad
ImporteUnitario
DeleteFlag
CreateDateTime
ModifyDateTime

IntervencionPreHospitalizacion

Cliente
PK

PK
PK,FK4

PK

IntervencionPreHospitalizacionID

FK1
FK2

ActoMedicoID
MedicoID
RolMedicoID
Precio
DeleteFlag
CreateDateTime
ModifyDateTime

PK

PlantillaPresupuestoID
Nombre
Descripcion
DeleteFlag
CreateDateTime
ModifyDateTime

MedicamentoID
Nombre
Descripcion
Precio1
Precio2
Precio3
Existencia
DeleteFlag
CreateDateTime
ModifyDateTime

Medico
PK

MedicoID

FK2
FK1

PersonaID
EspecialidadID
DeleteFlag
CreateDateTime
ModifyDateTime

ActoMedico

PartidaPlantillaPresupuesto

PlantillaPresupuesto

Medicamento
PK

PK

PartidaPlantillaPresupuestoID

FK4
FK1
FK2
FK3

PlantillaPresupuestoID
ConceptoFacturaID
IntervencionID
MedicamentoID
Nombre
Descripcion
Cantidad
ImporteUnitario
DeleteFlag
CreateDateTime
ModifyDateTime

ConceptoFactura
PK

FK1

PK

ActoMedicoID

FK1

TipoActoMedicoID
Nombre
Descripcion
NoAyudantes
PrecioParticular
PrecioSeguro
DeleteFlag
CreateDateTime
ModifyDateTime

ConceptoFacturaID
Nombre
Descripcion
Abreviatura
PrecioParticular
PrecioSeguro
CategoriaConceptoID
DeleteFlag
CreateDateTime
ModifyDateTime

D3 Modelo fsico de la base de datos del Subsistema Presupuesto para Hospitalizacin.

D4 Diccionario de datos del Subsistema Presupuestos para Hospitalizacin.


Tabla 1. PresupuestoHospitalizacion
TABLA PRESUPUESTOHOSPITALIZACION
Campo
Tipo
Longitud
PresupuestoHospitalizacionID
Integer
4
ClienteID
Integer
4
PacienteID
Integer
4
DiagnosticoID
Integer
50
Descripcion
Varchar
255
Fecha
Datetime
4
Observaciones
Varchar
255
Tabla 2. Partidapresupuestohospitalizacin
TABLA PARTIDAPREHOSPITALIZACION
Campo
Tipo
Longitud
PartidaPreHospitalizacionID
integer
4
PresupuestoHospitalizacionID
integer
4
ConceptoFacturaID
integer
4
IntervencionID
varchar
50
MedicamentoID
varchar
255
Nombre
integer
50
Descripcion
money
255
Cantidad
integer
4
ImporteUnitario
money
8

Obligatorio
S
S
S
S

Obligatorio
S
S

Tabla 3. Medicamento
Campo
MedicamentoID
Nombre
Descripcion
Precio1
Precio2
Precio3
Existencia

TABLA MEDICAMENTO
Tipo
Longitud
integer
4
varchar
50
varchar
255
money
8
money
8
money
8
integer
4

Tabla 4. Intervencinprehospitalizacin
TABLA INTERVENCIONPREHOSPITALIZACION
Campo
Tipo
Longitud
IntervencionPreHospitalizacionID
integer
4
ActoMedicoID
integer
4
MedicoID
integer
4
Tabla 4. Continuacin
RolMedicoID
integer
4
Precio
money
8

Obligatorio
S
S

Obligatorio
S
S
S
S

Tabla 5. Tipoactomedico
Campo
TipoActoMedicoID
Nombre
Descripcion
Nombre
Descripcion

TABLA TIPOACTOMEDICO
Tipo
Longitud
integer
4
integer
4
integer
4
varchar
50
varchar
255

Obligatorio
S
S
S

Tabla 6. Medico
Campo
MedicoID
PersonaID
EspecialidadID

TABLA MEDICO
Tipo
Longitud
integer
4
integer
4
integer
4

Obligatorio
S
S
S

Tabla 7. Actomedico
Campo
ActoMedicoID
TipoActoMedicoID
Nombre
Descripcion
NoAyudantes
PrecioParticular
PrecioSeguro

TABLA ACTOMEDICO
Tipo
Longitud
integer
4
integer
4
varchar
50
varchar
255
Integer
4
money
8
money
8

Tabla 8. Plantillapresupuesto
TABLA PLANTILLAPRESUPUESTO
Campo
Tipo
Longitud
PlantillaPresupuestoID
integer
4
Nombre
varchar
50
Descripcion
varchar
255
Tabla 9. Partidaplantillapresupuesto
TABLA PARTIDAPLANTILLAPRESUPUESTO
Campo
Tipo
Longitud
PartidaPlantillaPresupuestoID
integer
4
PlantillaPresupuestoID
integer
4
Tabla 9. Continuacin
ConceptoFacturaID
integer
4
IntervencionID
integer
4
MedicamentoID
integer
4
Nombre
varchar
50
Descripcion
varchar
255
Cantidad
integer
4
ImporteUnitario
money
8

Obligatorio
S
S

Obligatorio
S
S

Obligatorio
S
S

Tabla 10. Diagnstico


Campo
DiagnosticoID
Nombre
Descripcion

TABLA DIAGNOSTICO
Tipo
Longitud
integer
4
varchar
50
varchar
255

Obligatorio
S
S

Ventana aplicacin

Secretaria de presupuestos
Seleccionar crear nuevo presupuesto

Verificar si se ha guardado el presupuesto actual

Notificar presupuesto no guardado


Selecciona la opcin aceptar

Nuevo presupuesto

Selecciona opcin cancelar

D5 - Diagrama de secuencia crear nuevo presupuesto.

Ventana aplicacin

Ventana Seleccionar plantilla


de presupuesto

Secretaria de presupuesto

Seleccionar crear presupuesto en base a una plantilla


Mostrar ventana seleccin de plantilla

Selecciona la plantilla
Selecciona la opcin aceptar
Crear presupuesto desde plantilla seleccionada

Selecciona la opcin cancelar

D6 - Diagrama de secuencia crear presupuesto en base a una plantilla.

Ventana aplicacin

Ventana seleccionar presupuest


o existente

Secretaria de presupuestos

Seleccionar asignar modificar presupuesto


Mostrar ventana seleccionar presupuesto
Agregar informacin para buscar presupuesto
Seleccionar la opcin buscar
Selecciona presupuesto de la lista
Seleccionar la opcin aceptar
Carga el presupuesto seleccionado

Seleccionar la opcin cancelar

D7 - Diagrama de secuencia modificar presupuesto.

Buscar presupuesto

Ventana aplicacin

Ventana empresa

Secretaria de departamento
Agregar informacin del diagnostico para buscar
Mostrar ventana para seleccionar diagnstico
Selecciona un diagnstico de la lista

Selecciona la opcin aceptar


Asignar diagnstico al presupuesto

Selecciona opcin cancelar

D8 - Diagrama de secuencia asignar diagnstico al presupuesto.

Ventana diagnstico

Ventana aplicacin
Secretaria de presupuestos

Seleccionar agregar diagnstico


Mostrar ventana agregar diagnstico
Ingresa datos del diagnstico
Selecciona la opcin aceptar
Agrega diagnstico al sistema

Pregunta al usuario si desea agregar el diagnstico al presupuesto

Selecciona la opcin cancelar

D9 - Diagrama de secuencia agregar diagnstico al sistema.

Ventana aplicacin

Secretaria de presupuestos
Agregar paciente
Verifica si el presupuesto existe

Guarda los detalles del presupuesto

Actualiza numeracin de presupuestos

Selecciona la opcin cancelar

D10 - Diagrama de secuencia guardar presupuesto.

Ventana aplicacin

Ventana opciones de impresin

Secretaria de presupuestos
Imprimir presupuesto
Mostrar ventana opciones de impresin
Selecciona las opciones de impresin

Selecciona la opcin aceptar


Imprime presupuesto

Selecciona la opcin cancelar

D11 - Diagrama de secuencia imprimir presupuesto.

IOBPActoMedico::ColActoMedico

IOBPActoMedico::CActoMedico

-_IndiceSeleccionado : Integer = ModeloComponentes.Compartidos.IOBPActoMedico.modActoMedico.NO_HAY_SELECCIONADO


-_Ordenada : Integer

-_ActoMedicoID : Integer
-_Nombre : String
-_Descripcion : String
-_TipoActoMedicoID : Integer
-_TipoActoMedicos : ColTipoActoMedico
-_NoAyudantes : Integer
-_PrecioParticular : Decimal
-_PrecioSeguro : Decimal
+OnNotificar(entrada descripcion : String)
+OnNotificarError(entrada origen : String, entrada descripcion : String)
+OnNotificarErrorControlado(entrada origen : String, entrada descripcion : String)
+OnNotificarErrorNoControlado(entrada origen : String, entrada descripcion : String)
+Notificar(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+NotificarError(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+NotificarErrorControlado(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+NotificarErrorNoControlado(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+Descripcion() : String
+TipoActoMedico() : ICTipoActoMedico
+NoAyudantes() : Integer
+PrecioSeguro() : Decimal
+New()
+OnCambiandoPropiedad()
+OnPropiedadCambio()
+CambiandoPropiedad(entrada origen : Object, entrada e : EventArgs)
+PropiedadCambio(entrada origen : Object, entrada e : EventArgs)
+ActoMedicoIDCambio()
+NombreCambio()
+DescripcionCambio()
+TipoActoMedicoIDCambio()
+NoAyudantesCambio()
+PrecioParticularCambio()
+PrecioSeguroCambio()

+Progreso(entrada args : ProgresoEventArgs)


+OnNotificar(entrada descripcion : String)
+OnNotificarError(entrada origen : String, entrada descripcion : String)
+OnNotificarErrorControlado(entrada origen : String, entrada descripcion : String)
+OnNotificarErrorNoControlado(entrada origen : String, entrada descripcion : String)
+Notificar(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+NotificarError(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+NotificarErrorControlado(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+NotificarErrorNoControlado(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+Comparar(entrada obj1 : Object, entrada obj2 : Object, entrada campo : Integer) : Integer
+OrdenarElementos(entrada elemento1 : Integer, entrada elemento2 : Integer)
+Ordenar()
+ProgresoOrdenamiento(entrada progreso : Integer, entrada total : Integer)
+Count() : Integer
+GetEnumerator() : IEnumerator
+Agregar(entrada nombre : String, entrada descripcion : String, entrada especialidadID : Integer, entrada noAyudantes : Integer, entrada precioParticular : Decimal, entrada precioSeguro : Decimal) : Integer
+MarcarParaBorrar(entrada actoMedicoID : Integer) : Boolean
+Recuperar(entrada actoMedicoID : Integer) : Boolean
+Remover(entrada indice : Integer) : Boolean
+OrdenadoPor() : OrdenadoPor
+ElementoSeleccionado() : CActoMedico
+Elementos(entrada Indice : Integer) : CActoMedico
+Buscar(entrada ActoMedicoID : Integer) : CActoMedico
+Agregar(entrada ActoMedico : CActoMedico) : Integer
+New()
+FinalizarProceso(entrada args : ProgresoEventArgs)
+IniciarProceso(entrada args : ProgresoEventArgs)

enumeracin
IOBPActoMedico::OrdenadoPor
+SinOrden = -1
+ActoMedicoID = 0
+Nombre

IOBPActoMedico::IOBPFabricaActoMedico

#CrearInstanciaDeClase()
#CrearInstanciaDeColeccion()
#ProcAlmacenadoSeleccionar()
#AsignarDatosAClase()
+Obtener()
+Buscar()
+Nuevo()
+New()

IOBPActoMedico::ActoMedicoPersistente

#ActualizarColeccion_Con_DatosDevueltos(entrada reader : SqlDataReader, entrada y salida entidad : Entidad)


#PrepararDatos_Para_Insertar(entrada entidad : Entidad, entrada y salida comandoSQL : SqlCommand) : Object
#ProcAlmacenado_Insertar() : String
#ProcAlmacenado_Eliminar() : String
#ProcAlmacenado_Actualizar() : String
#PrepararDatos_para_Borrar(entrada oEntidad : Entidad, entrada y salida oComandoSQL : SqlCommand) : Object
#PrepararDatos_para_Actualizar(entrada oEntidad : Entidad, entrada y salida oComandoSQL : SqlCommand) : Object
+New(entrada y salida coleccion : ColActoMedico)

D12 Diagrama de estructura esttica para el componente Acto Mdico.

IOBPDiagnostico::ColDiagnostico

IOBPDiagnostico::CDiagnostico

-_IndiceSeleccionado : Integer = ModeloComponentes.Facturacion.IOBPDiagnostico.modDiagnostico.NO_HAY_SELECCIONADO


-_Ordenada : Integer

-_DiagnosticoID : Integer
-_Nombre : String
-_Descripcion : String
+OnNotificar(entrada descripcion : String)
+OnNotificarError(entrada origen : String, entrada descripcion : String)
+OnNotificarErrorControlado(entrada origen : String, entrada descripcion : String)
+OnNotificarErrorNoControlado(entrada origen : String, entrada descripcion : String)
+Notificar(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+NotificarError(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+NotificarErrorControlado(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+NotificarErrorNoControlado(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+DiagnosticoID() : Integer
+Descripcion() : String
+New()
+OnCambiandoPropiedad()
+OnPropiedadCambio()
+CambiandoPropiedad(entrada origen : Object, entrada e : EventArgs)
+PropiedadCambio(entrada origen : Object, entrada e : EventArgs)
+DiagnosticoIDCambio()
+NombreCambio()
+DescripcionCambio()

+Progreso(entrada args : ProgresoEventArgs)


+OnNotificar(entrada descripcion : String)
+OnNotificarError(entrada origen : String, entrada descripcion : String)
+OnNotificarErrorControlado(entrada origen : String, entrada descripcion : String)
+OnNotificarErrorNoControlado(entrada origen : String, entrada descripcion : String)
+Notificar(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+NotificarError(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+NotificarErrorControlado(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+NotificarErrorNoControlado(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+Comparar(entrada obj1 : Object, entrada obj2 : Object, entrada campo : Integer) : Integer
+OrdenarElementos(entrada elemento1 : Integer, entrada elemento2 : Integer)
+Ordenar()
+ProgresoOrdenamiento(entrada progreso : Integer, entrada total : Integer)
+Count() : Integer
+GetEnumerator() : IEnumerator
+Agregar(entrada nombre : String, entrada descripcion : String) : Integer
+MarcarParaBorrar(entrada diagnosticoID : Integer) : Boolean
+Recuperar(entrada diagnosticoID : Integer) : Boolean
+Remover(entrada indice : Integer) : Boolean
+OrdenadoPor() : OrdenadoPor
+ElementoSeleccionado() : CDiagnostico
+Elementos(entrada Indice : Integer) : CDiagnostico
+Buscar(entrada diagnosticoID : Integer) : CDiagnostico
+Agregar(entrada Diagnostico : CDiagnostico) : Integer
+New()
+FinalizarProceso(entrada args : ProgresoEventArgs)
+IniciarProceso(entrada args : ProgresoEventArgs)

*
instance
instance

-Fin10

enumeracin
IOBPDiagnostico::OrdenadoPor
+SinOrden = -1
+DiagnosticoID = 0
+Nombre

-Fin9
IOBPDiagnostico::DiagnosticoPersistente

#ActualizarColeccion_Con_DatosDevueltos(entrada reader : SqlDataReader, entrada y salida entidad : Entidad)


#PrepararDatos_Para_Insertar(entrada entidad : Entidad, entrada y salida comandoSQL : SqlCommand) : Object
#ProcAlmacenado_Insertar() : String
#ProcAlmacenado_Eliminar() : String
#ProcAlmacenado_Actualizar() : String
#PrepararDatos_para_Borrar(entrada oEntidad : Entidad, entrada y salida oComandoSQL : SqlCommand) : Object
#PrepararDatos_para_Actualizar(entrada oEntidad : Entidad, entrada y salida oComandoSQL : SqlCommand) : Object
+New(entrada y salida coleccion : ColDiagnostico)

IOBPDiagnostico::IOBPFabricaDiagnostico

#CrearInstanciaDeClase() : Entidad
#CrearInstanciaDeColeccion() : ColeccionEntidades
#ProcAlmacenadoSeleccionar() : String
#AsignarDatosAClase(entrada y salida entidad : Entidad, entrada y salida reader : SqlDataReader)
+Obtener(entrada tokenSeguridad : String, entrada cargoID : Integer = SIN_PARAMETRO_OPCIONAL) : ColDiagnostico
+Buscar(entrada tokenSeguridad : String, entrada diagnosticoID : Integer = SIN_PARAMETRO_OPCIONAL, entrada nombre : String = "", entrada descripcion : String = "", entrada recuperarRegistros : Registros = Tipos.Registros.NoBorrados) : ColDiagnostico
+Nuevo(entrada tokenSeguridad : String) : ColDiagnostico
+New()

D13 Diagrama de estructura esttica para el componente Diagnstico.

IOBPPEspecialidad::ColEspecialidad

IOBPPEspecialidad::CEspecialidad
-_EspecialidadID : Integer
-_Nombre : String
-_Descripcion : String
+OnNotificar(entrada descripcion : String)
+OnNotificarError(entrada origen : String, entrada descripcion : String)
+OnNotificarErrorControlado(entrada origen : String, entrada descripcion : String)
+OnNotificarErrorNoControlado(entrada origen : String, entrada descripcion : String)
+Notificar(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+NotificarError(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+NotificarErrorControlado(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+NotificarErrorNoControlado(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+EspecialidadID() : Integer
+Descripcion() : String
+Hierarchy() : ColEspecialidad
+New()
+OnCambiandoPropiedad()
+OnPropiedadCambio()
+CambiandoPropiedad(entrada origen : Object, entrada e : EventArgs)
+PropiedadCambio(entrada origen : Object, entrada e : EventArgs)
+EspecialidadIDCambio()
+NombreCambio()
+DescripcionCambio()

-_IndiceSeleccionado : Integer = ModeloComponentes.Compartidos.IOBPPEspecialidad.modEspecialidad.NO_HAY_SELECCIONADO


-_Ordenada : Integer
+Progreso(entrada args : ProgresoEventArgs)
+OnNotificar(entrada descripcion : String)
+OnNotificarError(entrada origen : String, entrada descripcion : String)
+OnNotificarErrorControlado(entrada origen : String, entrada descripcion : String)
+OnNotificarErrorNoControlado(entrada origen : String, entrada descripcion : String)
+Notificar(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+NotificarError(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+NotificarErrorControlado(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+NotificarErrorNoControlado(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+Comparar(entrada obj1 : Object, entrada obj2 : Object, entrada campo : Integer) : Integer
+OrdenarElementos(entrada elemento1 : Integer, entrada elemento2 : Integer)
+Ordenar()
+ProgresoOrdenamiento(entrada progreso : Integer, entrada total : Integer)
+Count() : Integer
+GetEnumerator() : IEnumerator
+Agregar(entrada nombre : String, entrada descripcion : String) : Integer
+MarcarParaBorrar(entrada especialidadID : Integer) : Boolean
+Recuperar(entrada especialidadID : Integer) : Boolean
+Remover(entrada indice : Integer) : Boolean
+OrdenadoPor() : OrdenadoPor
+ElementoSeleccionado() : CEspecialidad
+Elementos(entrada Indice : Integer) : CEspecialidad
+Agregar(entrada Especialidad : CEspecialidad) : Integer
+Buscar(entrada departamentoID : Integer) : CEspecialidad
+New()
+FinalizarProceso(entrada args : ProgresoEventArgs)
+IniciarProceso(entrada args : ProgresoEventArgs)

IOBPPEspecialidad::EspecialidadPersistente
enumeracinIOBPPEspecialidad::OrdenadoPor

instance

+SinOrden = -1
+EspecialidadID
+Nombre
+Descripcion

instance

#ActualizarColeccion_Con_DatosDevueltos(entrada reader : SqlDataReader, entrada y salida entidad : Entidad)


#PrepararDatos_Para_Insertar(entrada entidad : Entidad, entrada y salida comandoSQL : SqlCommand) : Object
#ProcAlmacenado_Insertar() : String
#ProcAlmacenado_Eliminar() : String
#ProcAlmacenado_Actualizar() : String
#PrepararDatos_para_Borrar(entrada oEntidad : Entidad, entrada y salida oComandoSQL : SqlCommand) : Object
#PrepararDatos_para_Actualizar(entrada oEntidad : Entidad, entrada y salida oComandoSQL : SqlCommand) : Object
+New(entrada y salida coleccion : ColEspecialidad)

IOBPPEspecialidad::IOBPFabricaEspecialidad

#CrearInstanciaDeClase() : Entidad
#CrearInstanciaDeColeccion() : ColeccionEntidades
#ProcAlmacenadoSeleccionar() : String
#AsignarDatosAClase(entrada y salida entidad : Entidad, entrada y salida reader : SqlDataReader)
+Obtener(entrada tokenSeguridad : String, entrada departamentoID : Integer = SIN_PARAMETRO_OPCIONAL) : ColEspecialidad
+Buscar(entrada tokenSeguridad : String, entrada especialidadID : Integer = SIN_PARAMETRO_OPCIONAL, entrada nombre : String = "", entrada recuperarRegistros : Registros = Tipos.Registros.NoBorrados) : ColEspecialidad
+Nuevo(entrada tokenSeguridad : String) : ColEspecialidad
+New()

D14 - Diagrama de estructura esttica para el Componente Especialidad.

IOBPHonorarioMedico::CHonorarioMedico
-_HonorarioMedicoID : Integer
-_IntervencionID : Integer
-_Intervencion : ColIntervencionPreHospitalizacion
-_MedicoID : Integer
-_Medico : ColMedico
-_TipoMedicoID : Integer
-_TipoMedico : ColTipoMedico
-_Activo : Boolean
-_Monto : Decimal

IOBPHonorarioMedico::ColHonorarioMedico
-_IndiceSeleccionado : Integer = ModeloComponentes.Facturacion.IOBPHonorarioMedico.modHonorarioMedico.NO_HAY_SELECCIONADO
-_Ordenada : Integer

+OnNotificar(entrada descripcion : String)


+OnNotificarError(entrada origen : String, entrada descripcion : String)
+OnNotificarErrorControlado(entrada origen : String, entrada descripcion : String)
+OnNotificarErrorNoControlado(entrada origen : String, entrada descripcion : String)
+Notificar(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+NotificarError(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+NotificarErrorControlado(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+NotificarErrorNoControlado(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+Intervencion() : ICIntervencionPreHospitalizacion
+Medico() : ICMedico
+TipoMedicoID() : Integer
+TipoMedico() : ICTipoMedico
+Monto() : Decimal
+Activo() : Boolean
+New()
+OnCambiandoPropiedad()
+OnPropiedadCambio()
+CambiandoPropiedad(entrada origen : Object, entrada e : EventArgs)
+PropiedadCambio(entrada origen : Object, entrada e : EventArgs)
+HonorarioMedicoIDCambio()
+IntervencionIDCambio()
+MedicoIDCambio()
+TipoMedicoIDCambio()
+MontoCambio()

+Progreso(entrada args : ProgresoEventArgs)


+OnNotificar(entrada descripcion : String)
+OnNotificarError(entrada origen : String, entrada descripcion : String)
+OnNotificarErrorControlado(entrada origen : String, entrada descripcion : String)
+OnNotificarErrorNoControlado(entrada origen : String, entrada descripcion : String)
+Notificar(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+NotificarError(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+NotificarErrorControlado(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+NotificarErrorNoControlado(entrada origen : Object, entrada args : NotificarErrorEventsArgs)
+Comparar(entrada obj1 : Object, entrada obj2 : Object, entrada campo : Integer) : Integer
+OrdenarElementos(entrada elemento1 : Integer, entrada elemento2 : Integer)
+Ordenar()
+ProgresoOrdenamiento(entrada progreso : Integer, entrada total : Integer)
+Count() : Integer
+GetEnumerator() : IEnumerator
+Agregar(entrada intervencionID : Integer, entrada medicoID : Integer, entrada tipoMedicoID : Integer, entrada monto : Decimal, entrada activo : Boolean) : Integer
+MarcarParaBorrar(entrada honorarioMedicoID : Integer) : Boolean
+Recuperar(entrada honorarioMedicoID : Integer) : Boolean
+Remover(entrada indice : Integer) : Boolean
+OrdenadoPor() : OrdenadoPor
+ElementoSeleccionado() : CHonorarioMedico
+Elementos(entrada Indice : Integer) : CHonorarioMedico
+Buscar(entrada diagnosticoID : Integer) : CHonorarioMedico
+Agregar(entrada HonorarioMedico : CHonorarioMedico) : Integer
+New()
+FinalizarProceso(entrada args : ProgresoEventArgs)
+IniciarProceso(entrada args : ProgresoEventArgs)

IOBPHonorarioMedico::HonorarioMedicoPersistente
enumeracinIOBPHonorarioMedico::OrdenadoPor
+SinOrden = -1
+HonorarioMedicoID = 0
+MedicoID

#ActualizarColeccion_Con_DatosDevueltos(entrada reader : SqlDataReader, entrada y salida entidad : Entidad)


#PrepararDatos_Para_Insertar(entrada entidad : Entidad, entrada y salida comandoSQL : SqlCommand) : Object
#ProcAlmacenado_Insertar() : String
#ProcAlmacenado_Eliminar() : String
#ProcAlmacenado_Actualizar() : String
#PrepararDatos_para_Borrar(entrada oEntidad : Entidad, entrada y salida oComandoSQL : SqlCommand) : Object
#PrepararDatos_para_Actualizar(entrada oEntidad : Entidad, entrada y salida oComandoSQL : SqlCommand) : Object
+New(entrada y salida coleccion : ColHonorarioMedico)

IOBPHonorarioMedico::IOBPFabricaHonorarioMedico

#CrearInstanciaDeClase()
#CrearInstanciaDeColeccion()
#ProcAlmacenadoSeleccionar()
#AsignarDatosAClase()
+Obtener()
+Buscar()
+Nuevo()
+New()

D15 Diagrama de estructura esttica para el componente Honorario Mdico.

APNDICE E
Artefactos de diseo del Subsistema Facturacin para Hospitalizacin

Iniciar sesin
uses

extends

Crear nueva factura


en base a presupuesto

Crear nueva factura

Modificar factura

extends Agregar persona


uses

Agregar cliente al
sistema

extends

Asignar cliente
Agregar empresa

uses

Agregar paciente
al sistema

Asignar paciente

Secretaria Presupuestos

uses

Agregar
diagnstico al sistema

uses

Agregar concepto
Facturacin al sistema

Asignar
diagnstico a la factura

Agregar concepto a
la factura

uses
Agregar categora
de facturacin

Guardar factura
Cliente
uses

Imprimir factura
Persona

Empresa

Imprimir relacin
de facturacin

E1 Diagrama de caso de usos general del subsistema Facturacin para Hospitalizacin.

E2 Descripciones de los casos de uso para el Subsistema Facturacin para


Hospitalizacin.
Nombre del caso de uso: Iniciar sesin.
Actores: Secretaria de facturacin.
Resumen:
Permite iniciar la sesin en el sistema de nmina.
Pre-condiciones:
Curso normal de los eventos
Accin de los actores
Respuesta del sistema
1. Muestra la ventana de inicio de sesin.
2. La secretaria ingresa su nombre de
usuario y su contrasea para iniciar la
sesin.
3. Selecciona la opcin aceptar.
a) Si selecciona la opcin cancelar ver
seccin 1.
4. Busca el nombre y la contrasea del
usuario en la base de datos para verificar
que es vlido.
5. Si el nombre y contrasea del usuario
son vlidos se habilita la ventana
principal y los controles de la aplicacin.
a) Si con incorrectos los datos de inicio
de sesin ver seccin 2.
Flujos alternativos
Seccin 1:
1. Selecciona la opcin cancelar.
2. Cancela el inicio de sesin y se
deshabilitan la ventana principal y los
controles de la aplicacin.
Seccin 2:
1. Selecciona la opcin aceptar.
2. Si el nombre y la contrasea de
usuario no son vlidos el sistema muestra
un mensaje indicando que son
incorrectos.
3. Muestra la ventana de inicio de sesin
nuevamente para que el usuario lo intente
nuevamente.

Nombre del caso de uso: Asignar cliente.


Actores: Secretaria de facturacin.

Resumen: Asignar el cliente que se registrar en el ingreso o en el presupuesto.


Pre-condiciones:
1. Se debe haber iniciado una sesin en el sistema.
Curso normal de los eventos
Accin de los actores
Respuesta del sistema
1. Ingresa la cdula o parte del nombre
del cliente en el campo de texto cliente.
a) Si la informacin suministrada son
slo cifras ver seccin 1.
b) Si la informacin suministrada es una
combinacin de letras y nmeros ver
seccin 2.
2. Selecciona la opcin cliente (botn) o
presiona la tecla ENTER.
3. Muestra la ventana de seleccin de
cliente con los clientes que corresponden
con la informacin de nmero de cdula
o nombre que se ingreso.
4. Selecciona el cliente de la lista de
personas.
a) Si Selecciona la opcin empresas
(pestaa) ver seccin 3.
5. Selecciona la opcin aceptar.
a) Si selecciona la opcin cancelar ver
seccin 4.
6. Cierra la ventana de seleccin de
clientes.
7. Asigna el cliente al ingreso o
presupuesto que se esta editando.
8. Activa el campo de texto paciente.
Flujos alternativos
Seccin 1:
1. Realiza una bsqueda en el sistema por
nmero de cdula de cliente.
Seccin 2:
1. Realiza una bsqueda en el sistema por
el nombre del cliente.
2. Se muestra la ventana de seleccin de
clientes y se muestran los clientes cuyo
nombre coincide con el ingresado.
Seccin 3:
1. Se cargan los clientes (empresas) que
coinciden con valor ingresado.

Seccin 4:
1. Muestra las empresas que coinciden
con la bsqueda del usuario.
Post-condiciones: Debe haber un paciente asignado a la factura que se esta editando.

Nombre del caso de uso: Agregar persona al sistema.


Actores: Secretaria de facturacin.
Resumen: Agrega un nuevo cliente al sistema.
Pre-condiciones:
1. Se debe haber iniciado sesin en el sistema.
Curso normal de los eventos
Accin de los actores
Respuesta del sistema
1. Muestra la ventana de ingreso de
nuevo cliente (persona) al sistema.
2. Ingresa la cdula del cliente.
3. Cambia de campo de texto o presiona
la tecla ENTER.
4. Realiza una bsqueda en todo el
sistema por un cliente (persona) con la
cdula ingresada.
5. Si encuentra un cliente (persona) con
el nmero cdula ingresado muestra un
mensaje en pantalla indicando que el
cliente existe en el sistema.
a) Si no encuentra ninguna persona con
la cdula suministrada cambia al campo
de texto nombres.
6. Ingresa la informacin del nuevo
cliente.
7. Seleccionar la opcin Aceptar.
a) Si selecciona la opcin cancelar ver
seccin 1.
8. Agrega el cliente (persona) al sistema.
9. Pregunta al usuario si desea agregar el
cliente al ingreso o presupuesto que se
esta editando.
10. Selecciona la opcin S.
a) Si selecciona la opcin No ver seccin
2.
11. Cierre la ventana de ingreso de nuevo
cliente (persona).
12. Coloca el nombre del cliente en el

campo de texto cliente.


13. El foco (cursor) pasa al campo de
texto paciente.
Flujos alternativos
Seccin 1:
1. Se cancela la operacin y se cierra la
ventana de insercin de nuevo cliente.
Seccin 2:
1. Cierra la ventana de insercin de
nuevo cliente.
Nombre del caso de uso: Agregar empresa al sistema.
Actores: Secretaria de facturacin.
Resumen: Permite agregar un nuevo cliente empresa al sistema.
Pre-condiciones:
1. Debe haber iniciado una sesin en el sistema.
Curso normal de los eventos
Accin de los actores
Respuesta del sistema
1. Muestra la ventana ingreso de nuevo
cliente (empresa).
2. Ingresa la informacin del nuevo
cliente (empresa).
3. Selecciona la opcin aceptar.
a) Si selecciona la opcin cancelar ver
seccin 1.
4. Agrega el nuevo cliente en el sistema.
5. Pregunta al usuario si desea agregar el
cliente al ingreso o presupuesto que se
esta editando.
6. Selecciona la opcin S.
a) Si selecciona la opcin No ver la
seccin 2.
7. Cierre la ventana de ingreso de nuevo
cliente (empresa).
8. Coloca el nombre del cliente en el
campo de texto cliente.
9. El foco (cursor) pasa al campo de texto
paciente.bre del cliente en el campo de
texto empresa.
10. El foco (cursor) pasa al campo de
texto concepto.
Flujos alternativos
Seccin 1:
1. Selecciona la opcin cancelar.
1. Se cancela la operacin y se cierra la

ventana de insercin de nuevo cliente


(empresa).
Seccin 2:
1. Selecciona la opcin No.
1. Cierra la ventana de insercin de
nuevo cliente (empresa).
Post-condiciones: Debe haber un cliente asignado a la factura que se esta editando.

Nombre del caso de uso: Asignar paciente.


Actores: Secretaria de facturacin.
Resumen: Asignar el paciente que se registrar en el ingreso o en el presupuesto.
Pre-condiciones:
1. Se debe haber iniciado una sesin en el sistema.
Curso normal de los eventos
Accin de los actores
Respuesta del sistema
1. Ingresa la cdula o parte del nombre
del paciente en el campo de texto
paciente.
2. Selecciona la opcin paciente (botn)
o presiona la tecla ENTER.
a) Si la informacin suministrada son
slo cifras ver seccin 1.
b) Si la informacin suministrada es una
combinacin de letras y nmeros ver
seccin 2.
3. Muestra la ventana
pacientes con los
corresponden con la
nmero de cdula o
ingreso.

de seleccin de
pacientes que
informacin de
nombre que se

4. Selecciona la opcin aceptar.


a) Si selecciona la opcin cancelar ver
seccin 4.
5. Cierra la ventana de seleccin de
pacientes.
6. Asigna el paciente al ingreso o
presupuesto que se esta editando.
7. Activa el campo de texto concepto.
Flujos alternativos
Seccin 1:
1. Realiza una bsqueda en el sistema por
nmero de cdula de cliente.

2. Se muestra la ventana de seleccin de


pacientes y se muestran los pacientes
cuyo nombre coincide con el ingresado.
Seccin 2:
1. Realiza una bsqueda en el sistema por
el nombre del paciente.
2. Se muestra la ventana de seleccin de
pacientes y se muestran los pacientes
cuyo nombre coincide con el ingresado.
Post-condiciones: Debe haber un paciente a la factura que se esta editando.

Nombre del caso de uso: Agregar paciente al sistema.


Actores: Secretaria de facturacin.
Resumen: Agrega un nuevo paciente al sistema.
Pre-condiciones:
1. Se debe haber iniciado una sesin en el sistema.
Curso normal de los eventos
Accin de los actores
Respuesta del sistema
1. Muestra la ventana (formulario) de
ingreso de nuevo paciente.
2. Ingresa la cdula del paciente y
presiona la tecla ENTER.
3. Busca en el sistema un paciente con el
nmero de cdula ingresado.
a) Si existe un paciente en ese nmero de
cdula ver seccin 1.
4. Cambia al campo de texto nombres.
5. Ingresa los datos del paciente.
6. Selecciona la opcin Aceptar.
a) Si selecciona la opcin Cancelar ver
seccin 2.
7. Ingresa el nuevo paciente en el sistema
y cierra le ventana (formulario) de
ingreso de nuevo paciente.
Flujos alternativos
Seccin 1:
1. Muestra un mensaje indicando que el
paciente ya existe en el sistema.
Seccin 2:
1. Cancela la operacin y cierra la
ventana (formulario)
de ingreso de
nuevo paciente.
Post-condiciones: Debe haber un paciente asignado a la factura que se esta editando.

Nombre del caso de uso: Asignar concepto a factura.


Actores: Secretaria de facturacin.
Resumen: Asigna un concepto al ingreso o presupuesto.
Pre-condiciones:
1. Se debe haber iniciado una sesin en el sistema.
Curso normal de los eventos
Accin de los actores
Respuesta del sistema
1. Ingresa parte del nombre del concepto
en el campo de texto concepto.
2. Muestra la ventana de seleccin de
conceptos.
3. Carga los conceptos que coinciden con
el nombre del concepto ingresado.
4. Selecciona una categora de la lista de
categoras de conceptos.
5. Actualiza la lista de conceptos con los
conceptos de la categora seleccionada
que coinciden con el nombre de concepto
ingresado.
6. Selecciona un concepto de la lista.
7. Ingresa la cantidad del concepto.
8. Selecciona la opcin Aceptar.
a) Si selecciona la opcin Cancelar ver
seccin 1.
9. Verifica si el cliente es una persona o
una empresa y asigna el monto
correspondiente.
10. Agrega el concepto en la lista de
conceptos de la ventana principal de la
aplicacin y actualiza los totales del
ingreso o presupuesto.
11. Cambio el foco (cursor) en el campo
de texto Concepto para ingresar uno
nuevo.
Flujos alternativos
Seccin 1:
1. Cancela la operacin y cierra la
ventana de seleccin de conceptos.
Post-condiciones: Debe haber un paciente asignado a la factura que se esta editando.

Nombre del caso de uso: Agregar concepto de facturacin.

Actores: Secretaria de facturacin.


Resumen: Agrega un nuevo concepto de facturacin al sistema.
Pre-condiciones:
5. Se debe haber iniciado una sesin en el sistema.
6. Se debe haber seleccionado y categora de facturacin.
Curso normal de los eventos
Accin de los actores
Respuesta del sistema
1. Muestra la ventana (formulario) de
ingreso de nuevo concepto de
facturacin.
2. Ingresa la informacin para el nuevo
concepto.
3. Selecciona la opcin Aceptar.
a) Si selecciona la opcin Cancelar ver
seccin 1.
4. Agrega el nuevo
facturacin al sistema.

concepto

de

5. Cierra la ventana (formulario) de


ingreso de nueva categora de
facturacin.
Flujos alternativos
Seccin 1:
1. Cancela la operacin y cierra la
ventana de ingreso de nuevo concepto de
facturacin.

Nombre del caso de uso: Agregar categora de facturacin.


Actores: Secretaria de facturacin.
Resumen: Agrega un nuevo concepto de facturacin al sistema.
Pre-condiciones:
4. Se debe haber iniciado una sesin en el sistema.
5. Se debe haber seleccionado y categora de facturacin.
Curso normal de los eventos
Accin de los actores
Respuesta del sistema
1. Muestra la ventana (formulario) de
ingreso de nueva categora de
facturacin.
2. Ingresa la informacin para la nueva
categora de facturacin.
3. Selecciona la opcin Aceptar.
a) Si selecciona la opcin Cancelar ver
seccin 1.
4. Agrega la nueva
facturacin al sistema.

categora

de

5. Cierra la ventana (formulario) de


ingreso de nueva categora de
facturacin.
Flujos alternativos
Seccin 1:
1. Cancela la operacin y cierra la
ventana de ingreso de nueva categora de
facturacin.

Nombre del caso de uso: Asignar banco.


Actores: Secretaria de departamento.
Resumen: Agrega un nuevo banco al sistema.
Pre-condiciones:
2. Se debe haber iniciado una sesin en el sistema.
Accin de los actores
Respuesta del sistema
1. Muestra la ventana (formulario) de
ingreso de nuevo banco.
1. Ingresa el nombre del banco.
3. Selecciona la opcin Aceptar.
a) Si selecciona la opcin Cancelar ver
seccin 1.
4. Agrega el nuevo banco al sistema.
5. Cierra la ventana (formulario) de
ingreso de nuevo banco.
Flujos alternativos
Seccin 1:
1. Cancela la operacin y cierra la
ventana (formulario) de ingreso de nuevo
banco.

Nombre del caso de uso: Registrar ingreso de caja.


Actores: Secretaria de departamento.
Resumen: Registra un ingreso de caja en el sistema.
Pre-condiciones:
5. Se debe haber iniciado una sesin en el sistema.
6. Se deben haber suministrado todos los datos para el ingreso de caja.
Curso normal de los eventos
Accin de los actores
Respuesta del sistema

1. Selecciona la opcin imprimir recibo.


2. Verifica que se hayan ingresado todos
los datos necesarios para registrar el
ingreso.
3. Registra el ingreso de caja en el
sistema.
4. Imprime en papel un recibo de ingreso
de caja.
Flujos alternativos

Diagnostico
PK

TipoActoMedico

DiagnosticoID

PK

TipoActoMedicoID
CategoriaConcepto

Nombre
Descripcion
DeleteFlag
CreateDateTime
ModifyDateTime

Nombre
Descripcion
DeleteFlag
CreateDateTime
ModifyDateTime

PK

CategoriaConceptoID

FK1
Cliente
PK

ClienteID

FK2
FK1

PersonaID
EmpresaID
DeleteFlag
CreateDateTime
ModifyDateTime

ConceptoFactura

Factura
PK

FacturaID

FK1

PreFacturaID
Fecha
Observaciones
DeleteFlag
CreateDateTime
ModifyDateTime

Nombre
Descripcion
DepartamentoID
DeleteFlag
CreateDateTime
ModifyDateTime

Partida

PreFactura
PK

PreFacturaID

FK3
FK1
FK2

Paciente

PacienteID
Habitacion
DiagnosticoID
EmpresaID
Clave
FechaIngreso
FechaEgreso
DiasHospitalizacion
DeleteFlag
CreateDateTime
ModifyDateTime

PK

PacienteID

FK1

PersonaID
HistoriaID
Observaciones
DeleteFlag
CreateDateTime
ModifyDateTime

PK

PartidaID

FK4
FK1
FK2
FK3

PreFacturaID
ConceptoID
IntervencionID
MedicinaID
Nombre
Descripcion
Cantidad
ImporteUnitario
DeleteFlag
CreateDateTime
ModifyDateTime

ActoMedico

Medicamento
PK

MedicamentoID

PK

ActoMedicoID

FK1

TipoActoMedicoID
Nombre
Descripcion
NoAyudantes
PrecioParticular
PrecioSeguro
DeleteFlag
CreateDateTime
ModifyDateTime

Nombre
Descripcion
Precio1
Precio2
Precio3
Existencia
DeleteFlag
CreateDateTime
ModifyDateTime

Persona
PK

IntervencionFacHospitalizacion
PK

IntervencionFacHospitalizacionID

FK1

ActoMedicoID
Nombre
Descripcion
MedicoID
RolMedicoID
Precio
DeleteFlag
CreateDateTime
ModifyDateTime

Empresa
PK

EmpresaID
RIF
NIT
Nombre
Direccion
Telefonos
Correo
DeleteFlag
CreateDateTime
ModifyDateTime

FK2

Medico
PK

MedicoID

FK2
FK1

PersonaID
EspecialidadID
DeleteFlag
CreateDateTime
ModifyDateTime

PersonaID
Cedula
Nombres
Apellidos
FechaNacimiento
Fotografia
Direccion
TelefonoHabitacion
TelefonoMovil
Sexo
EstadoCivil
Extranjero
Observaciones
DeleteFlag
CreateDateTime
ModifyDateTime

E3 Modelo fsico de datos para el Subsistema Facturacin para Hospitalizacin.

PK

FK1

ConceptoFacturaID
Nombre
Descripcion
Abreviatura
PrecioParticular
PrecioSeguro
CategoriaConceptoID
DeleteFlag
CreateDateTime
ModifyDateTime

E4 Diccionario de datos del Subsistema Facturacin para Hospitalizacin.


Tabla 1. Factura
Campo
FacturaID
PreFacturaID
Fecha

TABLA FACTURA
Tipo
Longitud
integer
4
integer
4
datetime
8

Obligatorio
S
S

Tabla 2. Prefactura
Campo
PreFacturaID
PacienteID
Habitacion
DiagnosticoID
EmpresaID
Clave
FechaIngreso
FechaEgreso
DiasHospitalizacion

TABLA PREFACTURA
Tipo
Longitud
integer
4
integer
4
varchar
5
integer
4
integer
4
varchar
15
datetime
8
datetime
8
integer
4

Obligatorio
S
S
S
S

APNDICE F
Artefactos de diseo del Subsistema Honorarios Mdicos

Iniciar sesin
Consultar estado
de cuenta

Administrar mdicos
Imprimir estado
cuenta de mdico

uses

uses
extends
Mdico
uses

Asignar honorarios
mdicos a cancelar

Imprimir reporte
extends

extends
Imprimir
comprobante de pago
Administrador

Cerrar perodo de
pago

Clcular impuestos

Secretaria Pagos

F1 Diagrama de casos de uso general de subsistema Honorarios Mdicos.

F2 Descripciones de los casos del uso para el Subsistema Honorarios Mdicos.


Nombre del caso de uso: Iniciar sesin.
Actores: Administrador.
Resumen:
Permite iniciar la sesin en el sistema de nmina.
Pre-condiciones:
Curso normal de los eventos
Accin de los actores
Respuesta del sistema
1. Muestra la ventana de inicio de sesin.
2. El administrador ingresa su nombre de
usuario y su contrasea para iniciar la
sesin.
3. Selecciona la opcin aceptar.
a) Si selecciona la opcin cancelar ver
seccin 1.
4. Busca el nombre y la contrasea del
usuario en la base de datos para verificar
que es vlido.
5. Si el nombre y contrasea del usuario
son vlidos se habilita la ventana
principal y los controles de la aplicacin.
a) Si con incorrectos los datos de inicio
de sesin ver seccin 2.
Flujos alternativos
Seccin 1:
1. Selecciona la opcin cancelar.
2. Cancela el inicio de sesin y se
deshabilitan la ventana principal y los
controles de la aplicacin.
Seccin 2:
1. Selecciona la opcin aceptar.
2. Si el nombre y la contrasea de
usuario no son vlidos el sistema muestra
un mensaje indicando que son
incorrectos.
3. Muestra la ventana de inicio de sesin
nuevamente para que el usuario lo intente
nuevamente.

Nombre del caso de uso: Consultar estado de cuenta.


Actores: Administrador.
Resumen: Consulta el estado de cuenta de un mdico.

Pre-condiciones:
1. Se debe haber iniciado una sesin en el sistema.
Curso normal de los eventos
Accin de los actores
Respuesta del sistema
1. Selecciona un mdico en el sistema.
2. Selecciona
honorario.

la

opcin

asignar
3. Muestra la ventana de seleccin de
honorarios pendientes (no cancelados).

4. Selecciona un honorario mdico de la


lista o agrega uno nuevo.
5. Selecciona la opcin aceptar.
a) Si selecciona la opcin cancelar ver
seccin 1.
5. Asigna el pago de honorario por
concepto de una intervencin mdica.
6. Actualiza la ventana principal y los
cargos del pago del mdico.
Flujos alternativos
Seccin 1:
1. Selecciona la opcin cancelar.
2. Cancela el inicio de sesin y se
deshabilitan la ventana principal y los
controles de la aplicacin.

Nombre del caso de uso: Asignar honorarios mdicos a cancelar.


Actores: Administrador.
Resumen: Asigna los cargos e intervenciones mdicas que se le atribuyen a un
mdico para ser cancelado.
Pre-condiciones:
1. Se debe haber iniciado una sesin en el sistema.
Curso normal de los eventos
Accin de los actores
Respuesta del sistema
1. Selecciona un mdico en el sistema.
2. Selecciona la opcin consultar estado
de cuenta.
3. Muestra la ventana de estado de
cuenta.
4. Carga los pagos
pendientes del mdico.
4. Selecciona la opcin aceptar.

asignados

a) Si selecciona la opcin cancelar ver


seccin 1.

Flujos alternativos
Seccin 1:
1. Selecciona la opcin cancelar.
2. Cancela el inicio de sesin y se
deshabilitan la ventana principal y los
controles de la aplicacin.

Nombre del caso de uso: Administrar mdicos.


Actores: Administrador.
Resumen: Permite agregar, modificar o eliminar la informacin de los mdicos
registrados en el sistema.
Pre-condiciones:
1. Se debe haber iniciado una sesin en el sistema.
Curso normal de los eventos
Accin de los actores
Respuesta del sistema
1. Selecciona la opcin administrador
mdicos del men de utilidades.
2. Muestra una ventana con el listado de
todos los mdicos existentes en el
sistema.
3. Carga los pagos
pendientes del mdico.

asignados

4. Si selecciona la opcin agregar nuevo


mdico ver seccin 1.
a) Si selecciona la opcin modificar
mdico ver seccin 2.
b) Si selecciona la opcin eliminar
mdico ver seccin 3.
4. Selecciona la opcin cerrar.
2. Cancela el inicio de sesin y se
deshabilitan la ventana principal y los
controles de la aplicacin.
Flujos alternativos
Seccin 1:
1. Selecciona la opcin agregar nuevo
mdico.
2. Muestra la ventana agregar nuevo
mdico.

3. Ingresa los datos del nuevo mdico.


4. Selecciona la opcin aceptar.
a) Si selecciona la opcin cancelar ver
seccin 1a:
5. Cierra la ventana agregar nuevo
mdico y actualiza la lista de mdicos de
la ventana de seleccin.
Seccin 1a:
1. Si selecciona la opcin cancelar.
2. Cancela la operacin y cierra la
ventana.

Seccin 2:
1. Selecciona la opcin modificar
mdico.
2. Muestra una ventana con la
informacin del mdico seleccionado.
3. Actualiza los datos del mdico.
4. Selecciona la opcin aceptar.
a) Si selecciona la opcin cancelar ver la
seccin 2a.
5. Actualiza los datos del mdico
almacenado en el sistema.
6. Cierra la ventana agregar nuevo
mdico y actualiza la lista de mdicos de
la ventana de seleccin.
Seccin 2a:
1. Si selecciona la opcin cancelar
2. Cancelar la operacin y cierra la
ventana.
Seccin 3:
1. Selecciona la opcin eliminar.
2. Muestra una ventana para la
confirmacin de la eliminacin del
mdico seleccionado.
3. Selecciona la opcin aceptar.
4. Elimina al mdico seleccionado del
sistema.
5. Cierre la ventana y actualiza la lista de
mdico de la ventana de seleccin.

Nombre del caso de uso: Calcular impuestos.


Actores: Administrador.
Resumen: Calcula los impuestos asignados para los pago de mdicos.
Pre-condiciones:
1. Se debe haber iniciado una sesin en el sistema.
Curso normal de los eventos
Accin de los actores
Respuesta del sistema
1. Carga los conceptos para clculo de
impuestos de ley suministrados por el
usuario.
2. Asigna los descuentos por concepto de
impuestos para los mdicos que recibirn
los pagos en el perodo actual.
3. Selecciona la opcin aceptar.
a) Si selecciona la opcin cancelar ver
seccin 1.
4. Actualiza los el listado de conceptos
de los mdicos.
Flujos alternativos
Seccin 1:
1. Selecciona la opcin cancelar.
2. Cancela la operacin y cierra la
ventana.

Nombre del caso de uso: Cerrar perodo de pago.


Actores: Administrador.
Resumen: Cierra el perodo de pago de honorarios mdicos.
Pre-condiciones:
1. Se debe haber iniciado una sesin en el sistema.
Curso normal de los eventos
Accin de los actores
Respuesta del sistema
1. Selecciona la opcin cerrar perodo de
pago de honorarios mdicos.
2. Muestra la ventana de confirmacin de
cierre de perodo de pago de honorarios
mdicos.
3. Selecciona la opcin aceptar.
a) Si selecciona la opcin cancelar ver
seccin 1.
4. Cierre el perodo de pago.
5. Pregunta al usuario si desea imprimir
los comprobantes de pago de honorarios
mdicos.
Flujos alternativos

Seccin 1:
1. Selecciona la opcin cancelar.
2. Cancela la operacin y cierra la
ventana.

Nombre del caso de uso: Imprimir estado de cuenta de mdico.


Actores: Administrador.
Resumen: Imprimir el estado de cuenta de un mdico.
Pre-condiciones:
1. Se debe haber iniciado una sesin en el sistema.
Curso normal de los eventos
Accin de los actores
Respuesta del sistema
1. Selecciona la opcin imprimir estado
de cuenta de empleado.
2. Muestra la ventana de opciones de
impresin.
3. Selecciona la opcin aceptar.
a) Si selecciona la opcin cancelar ver
seccin 1.
4. Carga los pagos y deudas pendientes
para el mdico seleccionado.
4. Imprime el estado de cuenta del
empleado.
Flujos alternativos
Seccin 1:
1. Selecciona la opcin cancelar.
2. Cancela la operacin y cierra la
ventana.

Nombre del caso de uso: Imprimir comprobantes de pago


Actores: Administrador.
Resumen: Imprime el comprobante de pago de un mdico.
Pre-condiciones:
1. Se debe haber iniciado una sesin en el sistema.
Curso normal de los eventos
Accin de los actores
Respuesta del sistema
1. Selecciona la opcin imprimir
comprobante de pago de mdico.
2. Muestra la ventana de opciones de
impresin.
3. Selecciona la opcin aceptar.
a) Si selecciona la opcin cancelar ver
seccin 1.
4. Carga los conceptos aplicados al

mdico seleccionado para el clculo de


pago del perodo actual.
4. Imprime el comprobante de pago para
el perodo actual.

Flujos alternativos
Seccin 1:
1. Selecciona la opcin cancelar.
2. Cancela la operacin y cierra la
ventana.

ActoMedico

PagoHonorario
PK

IntervencionFacHospitalizacion

PagoHonorarioID
Fecha
DeleteFlag
CreateDateTime
ModifyDateTime

PagoIntervencion
PK

PagoIntervencionID

FK2
FK1

PagoHonorarioID
IntervencionFacHospitalizacionID
Obsevaciones
DeleteFlag
CreateDateTime
ModifyDateTime

PK

IntervencionFacHospitalizacionID

FK1

ActoMedicoID
Nombre
Descripcion
MedicoID
RolMedicoID
Precio
DeleteFlag
CreateDateTime
ModifyDateTime

FK2

PK

ActoMedicoID

FK1

TipoActoMedicoID
Nombre
Descripcion
NoAyudantes
PrecioParticular
PrecioSeguro
DeleteFlag
CreateDateTime
ModifyDateTime

Medico
PK

MedicoID

FK2
FK1

PersonaID
EspecialidadID
DeleteFlag
CreateDateTime
ModifyDateTime

F3 - Modelo fsico de la base de datos para el Subsistema Honorarios Mdicos.

TipoActoMedico
PK

TipoActoMedicoID
Nombre
Descripcion
DeleteFlag
CreateDateTime
ModifyDateTime

F4 Diccionario de datos del Subsistema Honorarios Mdicos.


Tabla 1. Pagohonorario
Campo
PagoHonorarioID
Fecha

TABLA PAGOHONORARIO
Tipo
Longitud
integer
4
datetime
8

Obligatorio
S

Tabla 2. Pagointervencion
TABLA PAGOINTERVENCION
Campo
Tipo
Longitud
PagoIntervencionID
integer
4
IntervencionFacHospitalizacionID
integer
4
Observaciones
varchar
255

Obligatorio
S
S

ANEXOS

NDICE
Pg.
1. Carta del Hospital Clnico San Vicente de Pal
2. Diagrama de estructura departamental del HCSVP

1
2

ADMINISTRACIN

PAGOS

EGRESOS Y
FACTURACIN

ADMISIN Y
PRESUPUESTOS

EMPRESAS

LABORATORIO GENERAL

EMERGENCIA

EGRESOS Y FACTURACIN

Diagrama de estructura departamental del HCSVP.

Hoja de Metadatos

Hoja de Metadatos para Tesis y Trabajos de Ascenso


1/5
Ttulo

Desarrollo de un sistema de informacin automatizado para el control de los


procesos de nmina, facturacin y honorarios mdicos del Hospital Clnico San
Vicente de Pal, Cuman Edo. Sucre - Venezuela

Subttulo

Autor(es)
Apellidos y Nombres
Lorenzo Torres, Soulberto

Palabras o frases claves:


sistema de informacin
metodologa gil
XP
sistema administrativo
nmina
facturacin
honorarios mdicos
Programacin orientada objetos
Programacin Extrema

Cdigo CVLAC / e-mail


14008387
CVLAC
slorenzo@clug.org.ve
e-mail
slorenzot@gmail.com
e-mail

Hoja de Metadatos para Tesis y Trabajos de Ascenso


2/5
Lneas y sublneas de investigacin:
rea

Subrea
Informtica

Ciencias

Resumen (abstract):
Se desarroll un sistema de informacin automatizado para el control de las operaciones de
nmina, facturacin y honorarios mdicos del Hospital Clnico San Vicente de Pal,
Institucin perteneciente a la Fundacin Vicenciana, enmarcado dentro de la modalidad de
programacin orientada a objetos. El Lenguaje de programacin utilizado para el desarrollo del
sistema es Microsoft Visual Basic .NET incluido en el entorno de desarrollo Microsoft
Visual Studio .NET 2003 Enterprise Architect. El sistema se construy aplicando las fases
propuestas por la metodologa de Programacin Extrema y utilizando el Lenguaje de
Modelado Unificado. Entre las fases desarrolladas se encuentran: captura de requerimientos,
obtenindose la informacin inicial para definir los requerimientos iniciales. Planeacin y
estimacin del esfuerzo, se planificaron las actividades del proceso de desarrollo de los
componentes y se definieron los plazos de entrega de las liberaciones en base a los
requerimientos capturados. Diseo, donde se defini en detalle la arquitectura y se crearon los
artefactos de UML necesarios para el diseo y defini la estructura e implementacin de los
componentes que lo integran. Construccin, en la cual se disearon, codificaron, y adaptaron,
por medio de ciclos iterativos, los componentes del sistema. Cada subsistema se dividi en
subfases iterativas de exploracin, planificacin, iteraciones y produccin, que proporcionaron
componentes ejecutables de software que cumplen con los requerimientos capturados en la
fase de diseo. Se obtuvieron cinco (5) aplicaciones que corresponden a los subsistemas
Nmina, Facturacin y Honorarios Mdicos, conteniendo la segunda los subsistemas Ingresos,
Presupuestos y Facturacin para Hospitalizacin. Implantacin, que consisti en la instalacin
e inmediata puesta en marcha de las aplicaciones en sus versiones definitivas (liberaciones)
para cada subsistema en el ambiente real del negocio.
Dicho sistema permiti agilizar los procesos diarios inmersos en los departamentos de Egresos
y Facturacin, Admisin y Presupuestos y Administracin de la Institucin, generando reportes
detallados de las operaciones y proporcionando estadsticas que apoyan la toma de decisiones
y el control de la organizacin.

Hoja de Metadatos para Tesis y Trabajos de Ascenso


3/5
Contribuidores:
Apellidos y Nombres

ROL / Cdigo CVLAC / e-mail


ROL

J
U

CA

AS

TU

CA

AS

TU

AS

TU

J
U

AS

TU

J
U

De Sols, Maritza
CVLAC
e-mail
ROL
Galantn, Alejandra
CVLAC
e-mail
ROL

ROL

CA
7
r

CA

Hernndez Lisbeth
CVLAC
e-mail
Fecha de discusin y aprobacin:
Ao Mes Da
2008
03
05

Lenguaje:

spa

J
U

1
1a

Caldera Rafael
CVLAC
e-mail

Hoja de Metadatos para Tesis y Trabajos de Ascenso


4/5
Archivo(s):
Nombre de archivo
TESIS-soulbertolorenzo.odt
TESIS-soulbertolorenzo.pdf
TESIS-soulbertolorenzo.doc

Alcance:
Espacial : Universal
Temporal: Intemporal

Ttulo o Grado asociado con el trabajo:


Licenciatura en Informtica

Nivel Asociado con el Trabajo:

Licenciatura

rea de Estudio:
Informtica

Institucin(es) que garantiza(n) el Ttulo o grado:


Universidad de Oriente (UDO)

Tipo MIME
Open Document
PDF
Word

Hoja de Metadatos para Tesis y Trabajos de Ascenso


5/5
Derechos:
Este trabajo puede ser publicado para su uso, estudio y modificacin con la esperanza de que
sea til pero sin ninguna garanta de ello.

You might also like