void RecuperarCorresponsabilidadMadre()
        {
            ModeloCorresponsabilidadMadre modelocorresponsabilidadmadre = new ModeloCorresponsabilidadMadre();
            CorresponsabilidadMadre corresponsabilidadmadre = new CorresponsabilidadMadre();

            corresponsabilidadmadre = modelocorresponsabilidadmadre.Recuperar(IdCorresponsabilidadMadre);

            if (corresponsabilidadmadre != null)
            {
                this.rdbNueva.IsEnabled = false;
                this.rdbTransferencia.IsEnabled = false;
                if (corresponsabilidadmadre.TipoInscripcionMadre == TipoInscripcion.Nueva)
                    this.rdbNueva.IsChecked = true;
                else if (corresponsabilidadmadre.TipoInscripcionMadre == TipoInscripcion.Transferencia)
                    this.rdbTransferencia.IsChecked = true;
                this.txtCodigoFormulario.Text = corresponsabilidadmadre.CodigoFormulario;
                this.txtCodigoFormulario.IsEnabled = false;
                this.dtpFechaInscripcion.SelectedDate = corresponsabilidadmadre.FechaInscripcion;
                this.dtpFechaInscripcion.IsEnabled = false;
                this.dtpFechaFUM.SelectedDate = corresponsabilidadmadre.FechaUltimaMenstruacion;
                this.dtpFechaFUM.IsEnabled = false;
                this.dtpFechaUltimoParto.SelectedDate = corresponsabilidadmadre.FechaUltimoParto;
                this.dtpFechaUltimoParto.IsEnabled = false;
                this.txtNumeroEmbarazo.Text = corresponsabilidadmadre.NumeroEmbarazo.ToString();
                this.txtNumeroEmbarazo.IsEnabled = false;
                this.chkARO.IsChecked = corresponsabilidadmadre.ARO;
                this.chkARO.IsEnabled = false;
                RecuperarControlMadre();
                this.chkSalida.IsEnabled = true;
                if (corresponsabilidadmadre.TipoSalidaMadre > 0)
                {
                    this.chkSalida.IsChecked = true;
                    this.dtpFechaSalida.SelectedDate = corresponsabilidadmadre.FechaSalidaPrograma;
                    this.dtpFechaSalida.IsEnabled = true;
                    this.rdbAborto.IsEnabled = true;
                    this.rdbCumplimiento.IsEnabled = true;
                    this.rdbFallecimiento.IsEnabled = true;
                    this.rdbIncumplimiento.IsEnabled = true;
                    this.rdbObitoFetal.IsEnabled = true;
                    this.rdbTransferenciaSalida.IsEnabled = true;
                    switch (corresponsabilidadmadre.TipoSalidaMadre)
                    {
                        case TipoSalidaMadre.Aborto:
                            this.rdbAborto.IsChecked = true;
                            break;
                        case TipoSalidaMadre.Cumplimiento:
                            this.rdbCumplimiento.IsChecked = true;
                            break;
                        case TipoSalidaMadre.Fallecimiento:
                            this.rdbFallecimiento.IsChecked = true;
                            break;
                        case TipoSalidaMadre.Incumplimiento:
                            this.rdbIncumplimiento.IsChecked = true;
                            break;
                        case TipoSalidaMadre.ObitoFetal:
                            this.rdbObitoFetal.IsChecked = true;
                            break;
                        case TipoSalidaMadre.Transferencia:
                            this.rdbTransferenciaSalida.IsChecked = true;
                            break;
                    }
                    this.txtAutorizado.Text = corresponsabilidadmadre.AutorizadoPor;
                    this.txtAutorizado.IsEnabled = true;
                    this.txtCargo.Text = corresponsabilidadmadre.CargoAutorizador;
                    this.txtCargo.IsEnabled = true;
                }
            }
        }
        private void Window_Loaded(object sender, RoutedEventArgs e)
        {
            CantidadDeControles = 4;

            ////this.lblDepartamento.Content = "";
            ////this.lblEstablecimiento.Content = "";

            ModeloMadre modelomadre = new ModeloMadre();
            Madre madre = new Madre();

            madre = modelomadre.Recuperar(IdSeleccionado);

            if (madre != null)
            {
                this.lblNombresMadre.Content = madre.NombreCompleto;
                this.lblFechaNacimientoMadre.Content = string.Format("{0:dd/MM/yyyy}", madre.FechaNacimiento);
            }
            else
            {
                this.lblNombresMadre.Content = "";
                this.lblFechaNacimientoMadre.Content = "";
            }

            ModeloGrupoFamiliar modelogrupofamiliar = new ModeloGrupoFamiliar();

            _grupofamiliar = modelogrupofamiliar.RecuperarPorMadreDeFamilia(IdFamilia, IdSeleccionado);

            if (_grupofamiliar.TitularPagoVigente == true)
            {
                this.lblNombreTitular.Content = this.lblNombresMadre.Content;
                this.lblParentesco.Content = "";
                this.lblParentescoTitular.Content = "MADRE GESTANTE";
            }
            else
            {
                _grupofamiliar = modelogrupofamiliar.RecuperarTitularHabilitado(IdFamilia);

                if (_grupofamiliar != null)
                {
                    ModeloTutor modelotutor = new ModeloTutor();
                    Tutor tutor = new Tutor();
                    tutor = modelotutor.Recuperar(_grupofamiliar.IdTutor.Value);
                    this.lblNombreTitular.Content = tutor.NombreCompleto;

                    ModeloTipoParentesco modelotipoparentesco = new ModeloTipoParentesco();
                    TipoParentesco tipoparentesco = new TipoParentesco();

                    tipoparentesco = modelotipoparentesco.Recuperar(_grupofamiliar.IdTipoParentesco.Value);
                    this.lblParentescoTitular.Content = tipoparentesco.Descripcion;
                }
                else
                {
                    this.lblNombreTitular.Content = "";
                    this.lblParentescoTitular.Content = "";
                }
            }

            ModeloCorresponsabilidadMadre modelocorresponsabilidadmadre = new ModeloCorresponsabilidadMadre();

            IdCorresponsabilidadMadre = modelocorresponsabilidadmadre.RecuperarLaUltimaCorresponsabilidadValidaDeMadre(IdSeleccionado);

            ValoresPorDefecto();

            if (IdCorresponsabilidadMadre > 0)
                RecuperarCorresponsabilidadMadre();
            else
            {
                this.txtCodigoFormulario.IsEnabled = true;
                this.dtpFechaFUM.IsEnabled = true;
                this.dtpFechaInscripcion.IsEnabled = true;
                this.dtpFechaUltimoParto.IsEnabled = true;
                this.txtNumeroEmbarazo.IsEnabled = true;
                this.chkARO.IsEnabled = true;
                this.rdbNueva.IsEnabled = true;
                this.rdbTransferencia.IsEnabled = true;
                this.cmdGuardar.IsEnabled = true;
            }

            if (TipoAccion == TipoAccion.Detalle)
            {
                this.txtCodigoFormulario.IsEnabled = false;
                this.dtpFechaFUM.IsEnabled = false;
                this.dtpFechaInscripcion.IsEnabled = false;
                this.dtpFechaSalida.IsEnabled = false;
                this.dtpFechaUltimoParto.IsEnabled = false;
                this.txtNumeroEmbarazo.IsEnabled = false;
                this.chkARO.IsEnabled = false;
                this.chkSalida.IsEnabled = false;
                this.rdbAborto.IsEnabled = false;
                this.rdbCumplimiento.IsEnabled = false;
                this.rdbFallecimiento.IsEnabled = false;
                this.rdbIncumplimiento.IsEnabled = false;
                this.rdbNueva.IsEnabled = false;
                this.rdbObitoFetal.IsEnabled = false;
                this.rdbTransferencia.IsEnabled = false;
                this.rdbTransferenciaSalida.IsEnabled = false;
                this.txtAutorizado.IsEnabled = false;
                this.txtCargo.IsEnabled = false;
                this.cmdGuardar.IsEnabled = false;
            }
        }
        private void cmdGuardar_Click(object sender, RoutedEventArgs e)
        {
            ModeloCorresponsabilidadMadre modelocorresponsabilidadmadre = new ModeloCorresponsabilidadMadre();
                CorresponsabilidadMadre corresponsabilidadmadre = new CorresponsabilidadMadre();
                ModeloAsignacionMedico modeloAsignacionMedico = new ModeloAsignacionMedico();

                bool ok = false;

                if (ok == false)
                {
                    if (!(txtCodigoFormulario.Text.Length > 0))
                    {
                        MessageBox.Show("Se requiere especificar número de formulario.", "Error", MessageBoxButton.OK, MessageBoxImage.Error);
                        ok = true;
                    }
                }

                if (ok == false)
                {
                    if (chkSalida.IsChecked == true)
                    {
                        if ((this.rdbTransferenciaSalida.IsChecked == false) && (this.rdbObitoFetal.IsChecked == false) && (this.rdbIncumplimiento.IsChecked == false) && (this.rdbFallecimiento.IsChecked == false) && (this.rdbCumplimiento.IsChecked == false) && (this.rdbAborto.IsChecked == false))
                        {
                            MessageBox.Show("Se requiere especificar causa.", "Error", MessageBoxButton.OK, MessageBoxImage.Error);
                            ok = true;
                        }
                        else if (!(txtAutorizado.Text.Length > 0))
                        {
                            MessageBox.Show("Se requiere especificar autorizador.", "Error", MessageBoxButton.OK, MessageBoxImage.Error);
                            ok = true;
                        }
                        else if (!(txtCargo.Text.Length > 0))
                        {
                            MessageBox.Show("Se requiere especificar cargo.", "Error", MessageBoxButton.OK, MessageBoxImage.Error);
                            ok = true;
                        }
                    }
                }

                if (ok == false)
                {
                    if (IdCorresponsabilidadMadre == 0)
                    {
                        corresponsabilidadmadre.IdEstablecimientoSalud = modeloAsignacionMedico.EstablecimientoDeSaludHabilitado(SessionManager.getCurrentSession().User.IdUserRelation).IdEstablecimientoSalud;
                        if (rdbNueva.IsChecked == true)
                            corresponsabilidadmadre.TipoInscripcionMadre = TipoInscripcion.Nueva;
                        else if (rdbTransferencia.IsChecked == true)
                            corresponsabilidadmadre.TipoInscripcionMadre = TipoInscripcion.Transferencia;

                        corresponsabilidadmadre.FechaInscripcion = this.dtpFechaInscripcion.SelectedDate.Value;
                        corresponsabilidadmadre.IdMadre = IdSeleccionado;
                        if (_grupofamiliar.TipoGrupoFamiliar == TipoGrupoFamiliar.Tutor)
                        {
                            corresponsabilidadmadre.IdTutor = _grupofamiliar.IdTutor.Value;
                            corresponsabilidadmadre.IdTipoParentesco = _grupofamiliar.IdTipoParentesco.Value;
                        }
                        corresponsabilidadmadre.CodigoFormulario = this.txtCodigoFormulario.Text;
                        corresponsabilidadmadre.FechaUltimaMenstruacion = this.dtpFechaFUM.SelectedDate.Value; ;
                        corresponsabilidadmadre.FechaUltimoParto = this.dtpFechaUltimoParto.SelectedDate.Value; ;
                        corresponsabilidadmadre.NumeroEmbarazo = Convert.ToInt32(this.txtNumeroEmbarazo.Text);
                        corresponsabilidadmadre.ARO = (bool)this.chkARO.IsChecked;
                        corresponsabilidadmadre.FechaSalidaPrograma = DateTime.Now;
                        corresponsabilidadmadre.TipoSalidaMadre = TipoSalidaMadre.EnProceso;
                        corresponsabilidadmadre.Observaciones = "";
                        corresponsabilidadmadre.AutorizadoPor = "";
                        corresponsabilidadmadre.CargoAutorizador = "";

                        modelocorresponsabilidadmadre.Crear(corresponsabilidadmadre);
                        IdCorresponsabilidadMadre = corresponsabilidadmadre.Id;

                        ModeloControlMadre modelocontrolmadre = new ModeloControlMadre();
                        DateTime fechitaControles;

                        fechitaControles = dtpFechaFUM.SelectedDate.Value;
                        fechitaControles = fechitaControles.AddMonths(-1);

                        for (int i = 0; i < CantidadDeControles; i++)
                        {
                            fechitaControles = fechitaControles.AddMonths(2);

                            ControlMadre controlmadre = new ControlMadre();

                            controlmadre.IdCorresponsabilidadMadre = IdCorresponsabilidadMadre;
                            controlmadre.IdEstablecimientoSalud = modeloAsignacionMedico.EstablecimientoDeSaludHabilitado(SessionManager.getCurrentSession().User.IdUserRelation).IdEstablecimientoSalud;
                            controlmadre.IdMedico = SessionManager.getCurrentSession().User.IdUserRelation;
                            controlmadre.IdMadre = IdSeleccionado;

                            if (_grupofamiliar.TipoGrupoFamiliar == TipoGrupoFamiliar.Tutor)
                            {
                                controlmadre.IdTutor = _grupofamiliar.IdTutor.Value;
                                controlmadre.IdTipoParentesco = _grupofamiliar.IdTipoParentesco.Value;
                            }

                            controlmadre.FechaProgramada = fechitaControles;
                            controlmadre.FechaControl = DateTime.Now;
                            controlmadre.TallaCm = 0;
                            controlmadre.PesoKg = 0;
                            controlmadre.NumeroControl = i + 1;
                            controlmadre.Observaciones = "";
                            controlmadre.EstadoPago = TipoEstadoPago.NoPagado;
                            controlmadre.TipoControlMadre = TipoControlMadre.Control;

                            if (_grupofamiliar.TipoGrupoFamiliar == TipoGrupoFamiliar.Madre)
                                controlmadre.TipoBeneficiario = TipoBeneficiario.Madre;
                            else
                                controlmadre.TipoBeneficiario = TipoBeneficiario.Tutor;

                            modelocontrolmadre.Crear(controlmadre);
                        }

                        for (int i = 0; i < 2; i++)
                        {
                            fechitaControles = fechitaControles.AddMonths(2);

                            ControlMadre controlmadre = new ControlMadre();

                            controlmadre.IdCorresponsabilidadMadre = IdCorresponsabilidadMadre;
                            controlmadre.IdEstablecimientoSalud = modeloAsignacionMedico.EstablecimientoDeSaludHabilitado(SessionManager.getCurrentSession().User.IdUserRelation).IdEstablecimientoSalud;
                            controlmadre.IdMedico = SessionManager.getCurrentSession().User.IdUserRelation;
                            controlmadre.IdMadre = IdSeleccionado;

                            if (_grupofamiliar.TipoGrupoFamiliar == TipoGrupoFamiliar.Tutor)
                            {
                                controlmadre.IdTutor = _grupofamiliar.IdTutor.Value;
                                controlmadre.IdTipoParentesco = _grupofamiliar.IdTipoParentesco.Value;
                            }

                            controlmadre.FechaProgramada = fechitaControles;
                            controlmadre.FechaControl = DateTime.Now;
                            controlmadre.TallaCm = 0;
                            controlmadre.PesoKg = 0;
                            controlmadre.NumeroControl = CantidadDeControles + i + 1;
                            controlmadre.Observaciones = "";

                            if (i == 0)
                            {
                                controlmadre.EstadoPago = TipoEstadoPago.NoAplicable;
                                controlmadre.TipoControlMadre = TipoControlMadre.Parto;
                            }
                            else
                            {
                                controlmadre.EstadoPago = TipoEstadoPago.NoPagado;
                                controlmadre.TipoControlMadre = TipoControlMadre.PostParto;
                            }

                            if (_grupofamiliar.TipoGrupoFamiliar == TipoGrupoFamiliar.Madre)
                                controlmadre.TipoBeneficiario = TipoBeneficiario.Madre;
                            else
                                controlmadre.TipoBeneficiario = TipoBeneficiario.Tutor;

                            modelocontrolmadre.Crear(controlmadre);
                        }

                        this.txtCodigoFormulario.IsEnabled = false;
                        this.dtpFechaInscripcion.IsEnabled = false;
                        this.rdbNueva.IsEnabled = false;
                        this.rdbTransferencia.IsEnabled = false;
                        this.dtpFechaFUM.IsEnabled = false;
                        this.dtpFechaUltimoParto.IsEnabled = false;
                        this.txtNumeroEmbarazo.IsEnabled = false;
                        this.chkARO.IsEnabled = false;
                        RecuperarControlMadre();
                    }
                    else
                    {
                        corresponsabilidadmadre = modelocorresponsabilidadmadre.Recuperar(IdCorresponsabilidadMadre);

                        if (_grupofamiliar.TipoGrupoFamiliar == TipoGrupoFamiliar.Tutor)
                        {
                            corresponsabilidadmadre.IdTutor = _grupofamiliar.IdTutor.Value;
                            corresponsabilidadmadre.IdTipoParentesco = _grupofamiliar.IdTipoParentesco.Value;
                        }

                        if (this.chkSalida.IsChecked == true)
                        {
                            corresponsabilidadmadre.FechaSalidaPrograma = this.dtpFechaSalida.SelectedDate.Value;
                            if (this.rdbAborto.IsChecked == true)
                                corresponsabilidadmadre.TipoSalidaMadre = TipoSalidaMadre.Aborto;
                            else if (this.rdbCumplimiento.IsChecked == true)
                                corresponsabilidadmadre.TipoSalidaMadre = TipoSalidaMadre.Cumplimiento;
                            else if (this.rdbFallecimiento.IsChecked == true)
                                corresponsabilidadmadre.TipoSalidaMadre = TipoSalidaMadre.Fallecimiento;
                            else if (this.rdbIncumplimiento.IsChecked == true)
                                corresponsabilidadmadre.TipoSalidaMadre = TipoSalidaMadre.Incumplimiento;
                            else if (this.rdbObitoFetal.IsChecked == true)
                                corresponsabilidadmadre.TipoSalidaMadre = TipoSalidaMadre.ObitoFetal;
                            else if (this.rdbTransferenciaSalida.IsChecked == true)
                                corresponsabilidadmadre.TipoSalidaMadre = TipoSalidaMadre.Transferencia;
                            corresponsabilidadmadre.AutorizadoPor = this.txtAutorizado.Text;
                            corresponsabilidadmadre.CargoAutorizador = this.txtCargo.Text;
                        }
                        else
                        {
                            corresponsabilidadmadre.FechaSalidaPrograma = DateTime.Now;
                            corresponsabilidadmadre.TipoSalidaMadre = TipoSalidaMadre.EnProceso;
                            corresponsabilidadmadre.AutorizadoPor = "";
                            corresponsabilidadmadre.CargoAutorizador = "";
                        }

                        modelocorresponsabilidadmadre.Editar(IdCorresponsabilidadMadre, corresponsabilidadmadre);
                    }
                }
        }