public static string geraXML(string numerocarteira, string sequencial, string codigoProcedimento, string descricaoProcedimento,
                              string codigoPrestadorNaOperadora, string registroANS)
 {
     try
     {
         solicitacaoProcedimentoWS solicitacao = empacotaDados(numerocarteira, sequencial, codigoProcedimento, descricaoProcedimento,
                                                               codigoPrestadorNaOperadora, registroANS);
         string resposta = GetEnvioXmlString(solicitacao);;
         return(resposta);
     }
     catch (Exception ex)
     {
         return(ex.Message);
     }
 }
        public static string GetEnvioXmlString(solicitacaoProcedimentoWS doc)
        {
            var ns = new XmlSerializerNamespaces();

            ns.Add("ds", "http://www.w3.org/2000/09/xmldsig#");
            ns.Add("ans", "http://www.ans.gov.br/padroes/tiss/schemas");
            var serializer = new XmlSerializer(doc.GetType());

            using (var writer = new Util.StringWriterUTF8())
            {
                serializer.Serialize(writer, doc, ns);

                return(writer.ToString());
            }
        }
        public static string enviaSolicitacao(string numerocarteira, string sequencial, string codigoProcedimento, string descricaoProcedimento,
                                              string codigoPrestadorNaOperadora, string registroANS)
        {
            solicitacaoProcedimentoWS solicitacao = empacotaDados(numerocarteira, sequencial, codigoProcedimento, descricaoProcedimento,
                                                                  codigoPrestadorNaOperadora, registroANS);



            try
            {
                tissSolicitacaoProcedimento_BindingClient envia = new tissSolicitacaoProcedimento_BindingClient();
                autorizacaoProcedimentoWS retorno = envia.tissSolicitacaoProcedimento_Operation(solicitacao);
                return(GetRetornoXmlString(retorno));
            }
            catch (Exception ex)
            {
                return(ex.Message);
            }
        }
        public static solicitacaoProcedimentoWS empacotaDados(string numerocarteira, string sequencial, string codigoProcedimento, string descricaoProcedimento,
                                                              string codigoPrestadorNaOperadora, string registroANS)
        {
            try
            {
                solicitacaoProcedimentoWS solicitacao = new solicitacaoProcedimentoWS();
                solicitacao.cabecalho = new cabecalhoTransacao();
                solicitacao.cabecalho.identificacaoTransacao = new cabecalhoTransacaoIdentificacaoTransacao();
                solicitacao.cabecalho.identificacaoTransacao.tipoTransacao         = dm_tipoTransacao.SOLICITACAO_PROCEDIMENTOS;
                solicitacao.cabecalho.identificacaoTransacao.sequencialTransacao   = sequencial; // número que identifica a transação
                solicitacao.cabecalho.identificacaoTransacao.dataRegistroTransacao = DateTime.Now.Date;
                solicitacao.cabecalho.identificacaoTransacao.horaRegistroTransacao = DateTime.Now;
                #region ORIGEM
                cabecalhoTransacaoOrigemIdentificacaoPrestador origem = new cabecalhoTransacaoOrigemIdentificacaoPrestador();
                origem.ItemElementName            = ItemChoiceType.codigoPrestadorNaOperadora;
                origem.Item                       = codigoPrestadorNaOperadora;
                solicitacao.cabecalho.origem      = new cabecalhoTransacaoOrigem();
                solicitacao.cabecalho.origem.Item = origem;
                #endregion ORIGEM

                #region DESTINO
                // cabecalhoTransacaoDestino destino = new cabecalhoTransacaoDestino();
                solicitacao.cabecalho.destino      = new cabecalhoTransacaoDestino();
                solicitacao.cabecalho.destino.Item = registroANS;
                #endregion DESTINO

                solicitacao.cabecalho.Padrao = dm_versao.Item30303;

                #region PROCEDIMENTOS

                ctm_spsadtSolicitacaoGuia guiaSADT = new ctm_spsadtSolicitacaoGuia();
                guiaSADT.dadosBeneficiario = new ct_beneficiarioDados();
                guiaSADT.dadosBeneficiario.atendimentoRN    = dm_simNao.N;
                guiaSADT.dadosBeneficiario.nomeBeneficiario = "teste do teste";
                guiaSADT.dadosBeneficiario.numeroCarteira   = numerocarteira;
                guiaSADT.cabecalhoSolicitacao = new ct_guiaCabecalho();
                guiaSADT.cabecalhoSolicitacao.numeroGuiaPrestador = "000";
                guiaSADT.cabecalhoSolicitacao.registroANS         = registroANS;


                List <ctm_spsadtSolicitacaoGuiaProcedimentosSolicitados> listProcedimento = new List <ctm_spsadtSolicitacaoGuiaProcedimentosSolicitados>();

                ctm_spsadtSolicitacaoGuiaProcedimentosSolicitados procedimento = new ctm_spsadtSolicitacaoGuiaProcedimentosSolicitados();
                procedimento.procedimento = new ct_procedimentoDados();
                procedimento.procedimento.codigoProcedimento    = codigoProcedimento;
                procedimento.procedimento.descricaoProcedimento = descricaoProcedimento;
                procedimento.procedimento.codigoTabela          = dm_tabela.Item00;
                listProcedimento.Add(procedimento);
                ///
                guiaSADT.procedimentosSolicitados = listProcedimento.ToArray();

                ct_solicitacaoProcedimento solicitacaoProcedimento = new ct_solicitacaoProcedimento();
                solicitacaoProcedimento.Item = guiaSADT;

                solicitacao.solicitacaoProcedimento = solicitacaoProcedimento;
                #endregion PROCEDIMENTOS

                return(solicitacao);
            }
            catch (Exception ex)
            {
                throw; // para teste
            }
        }