public ConsultaEmpenhoEstrutura ConsultaEmpenhoEstrutura(string key, string password, int year, string regional, string cfp, string nature, int program, string resourceSource, string process)
        {
            var result = DataHelperProdespEmpenho.Procedure_ConsultaEmpenhoEstrutura(
                key, password, year, regional, cfp, nature, resourceSource, process)
                         ?? new ProdespEmpenho.Procedure_ConsultaEmpenhoEstruturaRecordType[] { };

            var resultItem = result.FirstOrDefault();

            if (!string.IsNullOrEmpty(resultItem?.outErro))
            {
                throw new Exception($"Prodesp - {resultItem?.outErro}");
            }

            return(new ConsultaEmpenhoEstrutura
            {
                OutCodAplicacao = resultItem?.outCodAplicacao,
                OutCED = resultItem?.outCED,
                OutErro = resultItem?.outErro,
                OutTerminal = resultItem?.outTerminal,
                OutSucesso = resultItem?.outSucesso,
                OutDispSubEmpenhar = resultItem?.outDispSubEmpenhar,
                OutNrEmpenho = resultItem?.outNrEmpenho,
                OutTipoEmpenho = resultItem?.outTipoEmpenho,
                OutValorAtual = resultItem?.outValorAtual,
                OutValorSubEmpenhado = resultItem?.outValorSubEmpenhado,

                ListConsultaEstrutura = result.Select(x => new ListConsultaEstrutura
                {
                    OutCodAplicacao = x.outCodAplicacao,
                    OutCED = x.outCED,
                    OutErro = x.outErro,
                    OutTerminal = x.outTerminal,
                    OutSucesso = x.outSucesso,
                    OutDispSubEmpenhar = x.outDispSubEmpenhar,
                    OutNrEmpenho = x.outNrEmpenho,
                    OutTipoEmpenho = x.outTipoEmpenho,
                    OutValorAtual = x.outValorAtual,
                    OutValorSubEmpenhado = x.outValorSubEmpenhado,
                }).ToList()
            });
        }