public void Read(TProtocol iprot)
        {
            iprot.IncrementRecursionDepth();
            try
            {
                TField field;
                iprot.ReadStructBegin();
                while (true)
                {
                    field = iprot.ReadFieldBegin();
                    if (field.Type == TType.Stop)
                    {
                        break;
                    }
                    switch (field.ID)
                    {
                    case 1:
                        if (field.Type == TType.String)
                        {
                            NumeroProntuario = iprot.ReadString();
                        }
                        else
                        {
                            TProtocolUtil.Skip(iprot, field.Type);
                        }
                        break;

                    case 2:
                        if (field.Type == TType.String)
                        {
                            Cns = iprot.ReadString();
                        }
                        else
                        {
                            TProtocolUtil.Skip(iprot, field.Type);
                        }
                        break;

                    case 3:
                        if (field.Type == TType.I64)
                        {
                            DataNascimento = iprot.ReadI64();
                        }
                        else
                        {
                            TProtocolUtil.Skip(iprot, field.Type);
                        }
                        break;

                    case 4:
                        if (field.Type == TType.I64)
                        {
                            LocalDeAtendimento = iprot.ReadI64();
                        }
                        else
                        {
                            TProtocolUtil.Skip(iprot, field.Type);
                        }
                        break;

                    case 5:
                        if (field.Type == TType.I64)
                        {
                            Sexo = iprot.ReadI64();
                        }
                        else
                        {
                            TProtocolUtil.Skip(iprot, field.Type);
                        }
                        break;

                    case 6:
                        if (field.Type == TType.I64)
                        {
                            Turno = iprot.ReadI64();
                        }
                        else
                        {
                            TProtocolUtil.Skip(iprot, field.Type);
                        }
                        break;

                    case 7:
                        if (field.Type == TType.I64)
                        {
                            TipoAtendimento = iprot.ReadI64();
                        }
                        else
                        {
                            TProtocolUtil.Skip(iprot, field.Type);
                        }
                        break;

                    case 8:
                        if (field.Type == TType.Double)
                        {
                            PesoAcompanhamentoNutricional = iprot.ReadDouble();
                        }
                        else
                        {
                            TProtocolUtil.Skip(iprot, field.Type);
                        }
                        break;

                    case 9:
                        if (field.Type == TType.Double)
                        {
                            AlturaAcompanhamentoNutricional = iprot.ReadDouble();
                        }
                        else
                        {
                            TProtocolUtil.Skip(iprot, field.Type);
                        }
                        break;

                    case 10:
                        if (field.Type == TType.I64)
                        {
                            AleitamentoMaterno = iprot.ReadI64();
                        }
                        else
                        {
                            TProtocolUtil.Skip(iprot, field.Type);
                        }
                        break;

                    case 11:
                        if (field.Type == TType.I64)
                        {
                            DumDaGestante = iprot.ReadI64();
                        }
                        else
                        {
                            TProtocolUtil.Skip(iprot, field.Type);
                        }
                        break;

                    case 12:
                        if (field.Type == TType.I32)
                        {
                            IdadeGestacional = iprot.ReadI32();
                        }
                        else
                        {
                            TProtocolUtil.Skip(iprot, field.Type);
                        }
                        break;

                    case 13:
                        if (field.Type == TType.I64)
                        {
                            AtencaoDomiciliarModalidade = iprot.ReadI64();
                        }
                        else
                        {
                            TProtocolUtil.Skip(iprot, field.Type);
                        }
                        break;

                    case 14:
                        if (field.Type == TType.Struct)
                        {
                            ProblemaCondicaoAvaliada = new ProblemaCondicaoAvaliacaoAIThrift();
                            ProblemaCondicaoAvaliada.Read(iprot);
                        }
                        else
                        {
                            TProtocolUtil.Skip(iprot, field.Type);
                        }
                        break;

                    case 17:
                        if (field.Type == TType.List)
                        {
                            {
                                Exame = new List <ExameThrift>();
                                TList _list8 = iprot.ReadListBegin();
                                for (int _i9 = 0; _i9 < _list8.Count; ++_i9)
                                {
                                    ExameThrift _elem10;
                                    _elem10 = new ExameThrift();
                                    _elem10.Read(iprot);
                                    Exame.Add(_elem10);
                                }
                                iprot.ReadListEnd();
                            }
                        }
                        else
                        {
                            TProtocolUtil.Skip(iprot, field.Type);
                        }
                        break;

                    case 18:
                        if (field.Type == TType.Bool)
                        {
                            VacinaEmDia = iprot.ReadBool();
                        }
                        else
                        {
                            TProtocolUtil.Skip(iprot, field.Type);
                        }
                        break;

                    case 19:
                        if (field.Type == TType.I64)
                        {
                            Pic = iprot.ReadI64();
                        }
                        else
                        {
                            TProtocolUtil.Skip(iprot, field.Type);
                        }
                        break;

                    case 20:
                        if (field.Type == TType.Bool)
                        {
                            FicouEmObservacao = iprot.ReadBool();
                        }
                        else
                        {
                            TProtocolUtil.Skip(iprot, field.Type);
                        }
                        break;

                    case 21:
                        if (field.Type == TType.List)
                        {
                            {
                                Nasfs = new List <long>();
                                TList _list11 = iprot.ReadListBegin();
                                for (int _i12 = 0; _i12 < _list11.Count; ++_i12)
                                {
                                    long _elem13;
                                    _elem13 = iprot.ReadI64();
                                    Nasfs.Add(_elem13);
                                }
                                iprot.ReadListEnd();
                            }
                        }
                        else
                        {
                            TProtocolUtil.Skip(iprot, field.Type);
                        }
                        break;

                    case 22:
                        if (field.Type == TType.List)
                        {
                            {
                                Condutas = new List <long>();
                                TList _list14 = iprot.ReadListBegin();
                                for (int _i15 = 0; _i15 < _list14.Count; ++_i15)
                                {
                                    long _elem16;
                                    _elem16 = iprot.ReadI64();
                                    Condutas.Add(_elem16);
                                }
                                iprot.ReadListEnd();
                            }
                        }
                        else
                        {
                            TProtocolUtil.Skip(iprot, field.Type);
                        }
                        break;

                    case 23:
                        if (field.Type == TType.Bool)
                        {
                            StGravidezPlanejada = iprot.ReadBool();
                        }
                        else
                        {
                            TProtocolUtil.Skip(iprot, field.Type);
                        }
                        break;

                    case 24:
                        if (field.Type == TType.I32)
                        {
                            NuGestasPrevias = iprot.ReadI32();
                        }
                        else
                        {
                            TProtocolUtil.Skip(iprot, field.Type);
                        }
                        break;

                    case 25:
                        if (field.Type == TType.I32)
                        {
                            NuPartos = iprot.ReadI32();
                        }
                        else
                        {
                            TProtocolUtil.Skip(iprot, field.Type);
                        }
                        break;

                    case 26:
                        if (field.Type == TType.I64)
                        {
                            RacionalidadeSaude = iprot.ReadI64();
                        }
                        else
                        {
                            TProtocolUtil.Skip(iprot, field.Type);
                        }
                        break;

                    case 27:
                        if (field.Type == TType.Double)
                        {
                            PerimetroCefalico = iprot.ReadDouble();
                        }
                        else
                        {
                            TProtocolUtil.Skip(iprot, field.Type);
                        }
                        break;

                    case 28:
                        if (field.Type == TType.I64)
                        {
                            DataHoraInicialAtendimento = iprot.ReadI64();
                        }
                        else
                        {
                            TProtocolUtil.Skip(iprot, field.Type);
                        }
                        break;

                    case 29:
                        if (field.Type == TType.I64)
                        {
                            DataHoraFinalAtendimento = iprot.ReadI64();
                        }
                        else
                        {
                            TProtocolUtil.Skip(iprot, field.Type);
                        }
                        break;

                    case 30:
                        if (field.Type == TType.String)
                        {
                            CpfCidadao = iprot.ReadString();
                        }
                        else
                        {
                            TProtocolUtil.Skip(iprot, field.Type);
                        }
                        break;

                    case 31:
                        if (field.Type == TType.List)
                        {
                            {
                                Medicamentos = new List <br.gov.saude.esusab.ras.common.MedicamentoThrift>();
                                TList _list17 = iprot.ReadListBegin();
                                for (int _i18 = 0; _i18 < _list17.Count; ++_i18)
                                {
                                    br.gov.saude.esusab.ras.common.MedicamentoThrift _elem19;
                                    _elem19 = new br.gov.saude.esusab.ras.common.MedicamentoThrift();
                                    _elem19.Read(iprot);
                                    Medicamentos.Add(_elem19);
                                }
                                iprot.ReadListEnd();
                            }
                        }
                        else
                        {
                            TProtocolUtil.Skip(iprot, field.Type);
                        }
                        break;

                    case 32:
                        if (field.Type == TType.List)
                        {
                            {
                                Encaminhamentos = new List <br.gov.saude.esusab.ras.common.EncaminhamentoExternoThrift>();
                                TList _list20 = iprot.ReadListBegin();
                                for (int _i21 = 0; _i21 < _list20.Count; ++_i21)
                                {
                                    br.gov.saude.esusab.ras.common.EncaminhamentoExternoThrift _elem22;
                                    _elem22 = new br.gov.saude.esusab.ras.common.EncaminhamentoExternoThrift();
                                    _elem22.Read(iprot);
                                    Encaminhamentos.Add(_elem22);
                                }
                                iprot.ReadListEnd();
                            }
                        }
                        else
                        {
                            TProtocolUtil.Skip(iprot, field.Type);
                        }
                        break;

                    default:
                        TProtocolUtil.Skip(iprot, field.Type);
                        break;
                    }
                    iprot.ReadFieldEnd();
                }
                iprot.ReadStructEnd();
            }
            finally
            {
                iprot.DecrementRecursionDepth();
            }
        }
        public void Read(TProtocol iprot)
        {
            TField field;

            iprot.ReadStructBegin();
            while (true)
            {
                field = iprot.ReadFieldBegin();
                if (field.Type == TType.Stop)
                {
                    break;
                }
                switch (field.ID)
                {
                case 1:
                    if (field.Type == TType.String)
                    {
                        NumeroProntuario = iprot.ReadString();
                    }
                    else
                    {
                        TProtocolUtil.Skip(iprot, field.Type);
                    }
                    break;

                case 2:
                    if (field.Type == TType.String)
                    {
                        Cns = iprot.ReadString();
                    }
                    else
                    {
                        TProtocolUtil.Skip(iprot, field.Type);
                    }
                    break;

                case 3:
                    if (field.Type == TType.I64)
                    {
                        DataNascimento = iprot.ReadI64();
                    }
                    else
                    {
                        TProtocolUtil.Skip(iprot, field.Type);
                    }
                    break;

                case 4:
                    if (field.Type == TType.I64)
                    {
                        LocalDeAtendimento = iprot.ReadI64();
                    }
                    else
                    {
                        TProtocolUtil.Skip(iprot, field.Type);
                    }
                    break;

                case 5:
                    if (field.Type == TType.I64)
                    {
                        Sexo = iprot.ReadI64();
                    }
                    else
                    {
                        TProtocolUtil.Skip(iprot, field.Type);
                    }
                    break;

                case 6:
                    if (field.Type == TType.I64)
                    {
                        Turno = iprot.ReadI64();
                    }
                    else
                    {
                        TProtocolUtil.Skip(iprot, field.Type);
                    }
                    break;

                case 7:
                    if (field.Type == TType.I64)
                    {
                        TipoAtendimento = iprot.ReadI64();
                    }
                    else
                    {
                        TProtocolUtil.Skip(iprot, field.Type);
                    }
                    break;

                case 8:
                    if (field.Type == TType.Double)
                    {
                        PesoAcompanhamentoNutricional = iprot.ReadDouble();
                    }
                    else
                    {
                        TProtocolUtil.Skip(iprot, field.Type);
                    }
                    break;

                case 9:
                    if (field.Type == TType.Double)
                    {
                        AlturaAcompanhamentoNutricional = iprot.ReadDouble();
                    }
                    else
                    {
                        TProtocolUtil.Skip(iprot, field.Type);
                    }
                    break;

                case 10:
                    if (field.Type == TType.I64)
                    {
                        AleitamentoMaterno = iprot.ReadI64();
                    }
                    else
                    {
                        TProtocolUtil.Skip(iprot, field.Type);
                    }
                    break;

                case 11:
                    if (field.Type == TType.I64)
                    {
                        DumDaGestante = iprot.ReadI64();
                    }
                    else
                    {
                        TProtocolUtil.Skip(iprot, field.Type);
                    }
                    break;

                case 12:
                    if (field.Type == TType.I32)
                    {
                        IdadeGestacional = iprot.ReadI32();
                    }
                    else
                    {
                        TProtocolUtil.Skip(iprot, field.Type);
                    }
                    break;

                case 13:
                    if (field.Type == TType.I64)
                    {
                        AtencaoDomiciliarModalidade = iprot.ReadI64();
                    }
                    else
                    {
                        TProtocolUtil.Skip(iprot, field.Type);
                    }
                    break;

                case 14:
                    if (field.Type == TType.Struct)
                    {
                        ProblemaCondicaoAvaliada = new ProblemaCondicaoAvaliacaoAIThrift();
                        ProblemaCondicaoAvaliada.Read(iprot);
                    }
                    else
                    {
                        TProtocolUtil.Skip(iprot, field.Type);
                    }
                    break;

                case 15:
                    if (field.Type == TType.List)
                    {
                        {
                            ExamesSolicitados = new List <string>();
                            TList _list8 = iprot.ReadListBegin();
                            for (int _i9 = 0; _i9 < _list8.Count; ++_i9)
                            {
                                string _elem10;
                                _elem10 = iprot.ReadString();
                                ExamesSolicitados.Add(_elem10);
                            }
                            iprot.ReadListEnd();
                        }
                    }
                    else
                    {
                        TProtocolUtil.Skip(iprot, field.Type);
                    }
                    break;

                case 16:
                    if (field.Type == TType.List)
                    {
                        {
                            ExamesAvaliados = new List <string>();
                            TList _list11 = iprot.ReadListBegin();
                            for (int _i12 = 0; _i12 < _list11.Count; ++_i12)
                            {
                                string _elem13;
                                _elem13 = iprot.ReadString();
                                ExamesAvaliados.Add(_elem13);
                            }
                            iprot.ReadListEnd();
                        }
                    }
                    else
                    {
                        TProtocolUtil.Skip(iprot, field.Type);
                    }
                    break;

                case 17:
                    if (field.Type == TType.List)
                    {
                        {
                            OutrosSia = new List <OutrosSiaThrift>();
                            TList _list14 = iprot.ReadListBegin();
                            for (int _i15 = 0; _i15 < _list14.Count; ++_i15)
                            {
                                OutrosSiaThrift _elem16;
                                _elem16 = new OutrosSiaThrift();
                                _elem16.Read(iprot);
                                OutrosSia.Add(_elem16);
                            }
                            iprot.ReadListEnd();
                        }
                    }
                    else
                    {
                        TProtocolUtil.Skip(iprot, field.Type);
                    }
                    break;

                case 18:
                    if (field.Type == TType.Bool)
                    {
                        VacinaEmDia = iprot.ReadBool();
                    }
                    else
                    {
                        TProtocolUtil.Skip(iprot, field.Type);
                    }
                    break;

                case 19:
                    if (field.Type == TType.I64)
                    {
                        Pic = iprot.ReadI64();
                    }
                    else
                    {
                        TProtocolUtil.Skip(iprot, field.Type);
                    }
                    break;

                case 20:
                    if (field.Type == TType.Bool)
                    {
                        FicouEmObservacao = iprot.ReadBool();
                    }
                    else
                    {
                        TProtocolUtil.Skip(iprot, field.Type);
                    }
                    break;

                case 21:
                    if (field.Type == TType.List)
                    {
                        {
                            Nasfs = new List <long>();
                            TList _list17 = iprot.ReadListBegin();
                            for (int _i18 = 0; _i18 < _list17.Count; ++_i18)
                            {
                                long _elem19;
                                _elem19 = iprot.ReadI64();
                                Nasfs.Add(_elem19);
                            }
                            iprot.ReadListEnd();
                        }
                    }
                    else
                    {
                        TProtocolUtil.Skip(iprot, field.Type);
                    }
                    break;

                case 22:
                    if (field.Type == TType.List)
                    {
                        {
                            Condutas = new List <long>();
                            TList _list20 = iprot.ReadListBegin();
                            for (int _i21 = 0; _i21 < _list20.Count; ++_i21)
                            {
                                long _elem22;
                                _elem22 = iprot.ReadI64();
                                Condutas.Add(_elem22);
                            }
                            iprot.ReadListEnd();
                        }
                    }
                    else
                    {
                        TProtocolUtil.Skip(iprot, field.Type);
                    }
                    break;

                case 23:
                    if (field.Type == TType.Bool)
                    {
                        StGravidezPlanejada = iprot.ReadBool();
                    }
                    else
                    {
                        TProtocolUtil.Skip(iprot, field.Type);
                    }
                    break;

                case 24:
                    if (field.Type == TType.I32)
                    {
                        NuGestasPrevias = iprot.ReadI32();
                    }
                    else
                    {
                        TProtocolUtil.Skip(iprot, field.Type);
                    }
                    break;

                case 25:
                    if (field.Type == TType.I32)
                    {
                        NuPartos = iprot.ReadI32();
                    }
                    else
                    {
                        TProtocolUtil.Skip(iprot, field.Type);
                    }
                    break;

                case 26:
                    if (field.Type == TType.I64)
                    {
                        RacionalidadeSaude = iprot.ReadI64();
                    }
                    else
                    {
                        TProtocolUtil.Skip(iprot, field.Type);
                    }
                    break;

                case 27:
                    if (field.Type == TType.Double)
                    {
                        PerimetroCefalico = iprot.ReadDouble();
                    }
                    else
                    {
                        TProtocolUtil.Skip(iprot, field.Type);
                    }
                    break;

                default:
                    TProtocolUtil.Skip(iprot, field.Type);
                    break;
                }
                iprot.ReadFieldEnd();
            }
            iprot.ReadStructEnd();
        }