Пример #1
0
        public async Task <IActionResult> Post([FromBody] GuiaDto guiaDto)
        {
            try
            {
                var guia = _mapper.Map <GuiaDto, Guia>(guiaDto);
                var guidePerformerCodeType = Enums.PerformerCodeType.codigoPrestadorNaOperadora;
                // Complemento da Guia
                var guiaNumero = await _GuiaNumeroRepository.GetLastGuiaIdAsync(guia.Prestador.Codigo);

                guia.GuiaNumero.Numero          = guiaNumero.ToString();
                guia.GuiaNumero.NumeroOperadora = "";

                BeneficiarioResponse beneficiario = _BeneficiarioService.SeachBeneficiario(guia.Beneficiario.Cartao);
                guia.Beneficiario.Nome = beneficiario.guideBeneficiaryName;

                _PushRequest.CodAtendimento            = "123";
                _PushRequest.Associado.CodAcompanhante = "";
                _PushRequest.Associado.CodAssociado    = guia.Beneficiario.Cartao;

                var prestador = _PrestadorService.PrestadorDescription(guia.Prestador.Codigo);

                _PushRequest.Prestador.CodPrestador          = guia.Prestador.Codigo;
                _PushRequest.Prestador.Endereco              = "193";
                _PushRequest.Prestador.Localizacao.Latitude  = "";
                _PushRequest.Prestador.Localizacao.Longitude = "";
                _PushRequest.Prestador.NomePrestador         = prestador;

                guia.PushId  = _PushService.GetPushCode(_PushRequest);
                guia.TokenId = _TokenService.GetTokenCode(_PushRequest.Associado.CodAssociado);

                guia.GuiaOrigemFK    = (int)Enums.SourceInterface.Telemedicina;
                guia.StatusCheckInFK = (int)Enums.StatusCheckIns.Valido;
                guia.GuiaTipoFK      = (int)Enums.TypeGuia.Consulta;
                guia.GuiaStatusFK    = (int)Enums.StatusGuia.Aberta;

                MedicoResponse profissional = _PrestadorService.PrestadorMedico(guia.Prestador.Codigo,
                                                                                guiaDto.ProfissionalUFCRM, Convert.ToInt32(guiaDto.ProfissionalCRM), null);

                guia.GuiaXML = _GuiaService.GenerateXMLGuia(guia, guidePerformerCodeType,
                                                            prestador, beneficiario, profissional, guiaDto.Procedimento);

                string textGuia = guia.GuiaXML.ToString();

                _logger.LogInformation(textGuia);

                _GuiaRepository.Save(guia);
                await _uow.CommitAsync();


                return(Created($"/v1/guia/{guia.Id}", null));
            }
            catch (System.Exception ex)
            {
                _uow.Rollback();
                return(this.StatusCode(StatusCodes.Status500InternalServerError,
                                       $"Falha no banco de dados, detalhes : {ex.Message}"));
            }
        }
Пример #2
0
        public BeneficiarioResponse SeachBeneficiario(string cartaoBeneficiario)
        {
            var token      = login();
            var cartao     = cartaoBeneficiario.Substring(0, 8);
            var sequencial = cartaoBeneficiario.Substring(8, 2);

            RestRequest request = new RestRequest($"Associado/GetBeneficiariosPrestador", Method.GET);

            request.Parameters.Clear();
            request.AddHeader("Content-Type", "application/json; charset=utf-8");
            request.AddHeader("Accept", "application/json");
            request.AddHeader("Authorization", string.Format("Bearer {0}", token));

            request.AddParameter("pCdPrestador", ParameterType.QueryString);
            request.AddParameter("pNrTitulo", cartao, ParameterType.QueryString);
            request.AddParameter("pNrSqTitulo", sequencial, ParameterType.QueryString);
            request.AddParameter("pNome", ParameterType.QueryString);
            request.AddParameter("pNrCPF", ParameterType.QueryString);

            IRestResponse <string> response = client.Execute <string>(request);

            if (response.StatusCode != System.Net.HttpStatusCode.OK)
            {
                return(null);
            }
            var beneficiario = response.Content.Split('-');

            var guideBeneficiaryNumber      = beneficiario[0].Remove(0, 2);
            var guideBeneficiarySequency    = Regex.Match(beneficiario[0], @"(.{2})\s*$").ToString();
            var guideBeneficiaryName        = beneficiario[1];
            var guideBeneficiaryCompanionRG = beneficiario[4];

            var result = new BeneficiarioResponse {
                guideBeneficiaryName        = guideBeneficiaryName,
                guideBeneficiaryNumber      = guideBeneficiaryNumber,
                guideBeneficiarySequency    = guideBeneficiarySequency,
                guideBeneficiaryCompanionRG = guideBeneficiaryCompanionRG
            };

            return(result);
        }
Пример #3
0
        public string GenerateXMLGuia(Guia guia, Enums.PerformerCodeType performerCodeType, string prestador,
                                      BeneficiarioResponse beneficiario, MedicoResponse profissional, string procedimento)
        {
            var guiaXML = new guiaAtendimentoObj
            {
                guideANS      = Consts.CodeANSOmint,
                guideTypeId   = guia.GuiaTipoFK,
                guideStatusId = guia.GuiaStatusFK,
                guideOrgimId  = guia.GuiaOrigemFK,

                guideId      = 0,
                guideDayCare = guia.Data.ToString("dd/MM/yyyy"),

                providerId        = guia.Prestador.Codigo,
                providerUnidadeId = guia.Unidade.Id.ToString(),

                guidePerformerName     = prestador,
                guidePerformerCode     = guia.Prestador.Codigo,
                guidePerformerCodeType = performerCodeType.ToString(),
                guidePerformerCNES     = Consts.CodeCNESConsulta,

                guideQueryType       = "1",
                guideIndicationCrahs = "9",
                guideTableNumber     = "00",
                guideObservation     = string.Format(Consts.GuideObservation, guia.PushId, guia.TokenId),

                guideToken            = guia.PushId,
                guideBeneficiaryToken = guia.TokenId,
                guideCheckingStatus   = guia.StatusCheckInFK,

                guideNumber       = guia.GuiaNumero.Numero,
                guideNumberHealth = guia.GuiaNumero.NumeroOperadora,

                guideBeneficiaryRN              = "N",
                guideBeneficiaryName            = guia.Beneficiario.Nome,
                guideBeneficiaryNumber          = guia.Beneficiario.Cartao,
                guideBeneficiaryNumberCompanion = "0",
                guideBeneficiaryCompanionRG     = beneficiario?.guideBeneficiaryCompanionRG,
                guideBeneficiaryCompanionName   = "",
                guideBeneficiaryCompanionType   = "",

                guidePerformerProfRede = true,

                guidePerformerProfName          = profissional?.medicoNome,
                guidePerformerProfCode          = profissional?.medicoCpfCnpj.Trim(),
                guidePerformerProfAdviceUF      = profissional?.medicoCRMUF,
                guidePerformerProfAdviceCBOS    = profissional != null ? Consts.CodeCBOSConsulta: null,
                guidePerformerProfAdviceNumber  = profissional?.medicoCRM.Trim(),
                guidePerformerProfAdviceAcronym = profissional != null ? ((int)(Enums.AdviceType)System.Enum.Parse(typeof(Enums.AdviceType), "CRM")).ToString(): null,

                guideProcedureOk     = 1,
                guideProcedureNumber = procedimento,
                guideProcedures      = new procedimentosXML[1]
                {
                    new procedimentosXML {
                        dateExecution        = guia.Data.ToString("dd/MM/yyyy"),
                        procedureNumber      = procedimento,
                        procedureAmount      = "1",
                        procedureDescription = "Descrição do Procedimento",
                        priceUnit            = guia.Valor,
                        priceTotal           = guia.Valor
                    }
                },

                guidePriceProcedure  = guia.Valor,
                guidePriceGrandTotal = guia.Valor,

                guideBlocked = false
            };

            return(ToString(guiaXML, typeof(guiaAtendimentoObj), Encoding.UTF8));
        }