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);
                }
            }
        }
        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;
                }
            }
        }