A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Tarifação em Planos de Saúde

Apresentações semelhantes


Apresentação em tema: "Tarifação em Planos de Saúde"— Transcrição da apresentação:

1 Tarifação em Planos de Saúde
Laboratório Prof. Sérgio Cardoso

2 BASE DE DADOS

3 Base de Dados: Banco: DadosSaudeSergio.mdb Tabelas: Período:
Beneficiários Notas TipoEvento Período: 2005/01 a 2007/11

4 Laboratório 1 Criar um Banco de Dados Vazio
Vincular as Tabelas do DadosSaudeSergio.mdb ao novo banco Criar consultas para uma análise superficial das tabelas Beneficiários e Notas Criar Tabela de Expostos Preencher Tabela de Expostos a partir do VBA com Access.

5 Criar consultas (exemplos)
Beneficiários (Datas mín. e máx. de inclusão e exclusão: SELECT Min(Format([Inclusao],"yyyy/mm")) AS CompInclusãoMin, Min(Format([Inclusao],"yyyy/mm")) AS CompExclusãoMin, Max(Format([Inclusao],"yyyy/mm")) AS CompInclusãoMax, Max(Format([Inclusao],"yyyy/mm")) AS CompExclusãoMax FROM Beneficiarios; Notas (Quantidade de notas por competência) SELECT Format([Atendimento],"yyyy/mm") AS [Comp], Count(Notas.Matricula) AS ContarDeMatricula FROM Notas GROUP BY Format([Atendimento],"yyyy/mm");

6 Criar Tabela de Expostos
Criar Tabela de Expostos com a seguintes estrutura: Nome do Campo Tipo de Dados Tamanho COMPETENCIA * Texto 6 FE * Número Byte EXP Single (*) Chave primária.

7 Preencher Tabela de Expostos a partir do VBA com Access
Criar módulo no VBA Adicionar ADO nas referências: Criar Sub PreencheExpostos()

8 Sub PreencheExpostos()
Acesse a Base de Dados Dim cn As ADODB.Connection Dim rs As ADODB.Recordset Set cn = CurrentProject.Connection Set rs = New ADODB.Recordset Defina datas de competência inicial e final Dim DtCompIni as Date Dim DtCompFin as Date DtCompIni = DateSerial(2005, 1, 1) ‘ #1/1/2005# DtCompFin = DateSerial(2007, 11, 1) ‘ #11/1/2007# Inclua laço Do-While para a competência DtComp = DtCompIni Do While DtComp <= DtCompFin (*) DtComp = DateAdd("m", 1, DtComp) Loop Teste o código

9 Sub PreencheExpostos() – (*)
Crie um consula Sql para selecionar os beneficiários dentro da competência desejada Comp = Year(DtComp) & Format(Month(DtComp), "00") SQL = "SELECT Nascimento, Inclusao, Exclusao " & _ " FROM Beneficiarios WHERE " & _ "((Inclusao<#" & _ Format(DateAdd("m", 1, DtComp), "mm/dd/yyyy") & _ "# AND Exclusao Is Null) OR (Inclusao<#" & _ Format(DateAdd("m", 1, DtComp), "mm/dd/yyyy") & "# AND Exclusao>#" & _ Format(DtComp, "mm/dd/yyyy") & "#))" Abra a consulta rs.Open sql, cn, adOpenKeyset Redimencione o Vetor para receber os expostos por faixa etária Dim Exp_FE() As Long Inclua laço Do-While para a consulta beneficiários e percorra por todos os beneficiários da consulta ReDim Exp_FE(1 To 10) ‘Apaga o vetor Do While Not rs.EOF (*) rs.MoveNext loop

10 Sub PreencheExpostos() – (*) – cont.
Dentro do laço Beneficiários Determine a Faixa Etária do Participante Crie uma função que, recebendo a data de nascimento e a data do cálculo, retorne o número da faixa etária do participante FE = FaixaEtaria(DtComp, rs("Nascimento"))

11 Function FaixaEtaria(DtComp As Date, DtNasc As Date) As Byte
Dim Idade As Integer Idade = Round(DateDiff("M", DtNasc, DtComp) / 12, 0) Select Case (Idade) Case Is <= 18 FaixaEtaria = 1 Case Is <= 23 FaixaEtaria = 2 Case Is <= 28 FaixaEtaria = 3 Case Is <= 33 FaixaEtaria = 4 Case Is <= 38 FaixaEtaria = 5 Case Is <= 43 FaixaEtaria = 6 Case Is <= 48 FaixaEtaria = 7 Case Is <= 53 FaixaEtaria = 8 Case Is <= 58 FaixaEtaria = 9 Case Else FaixaEtaria = 10 End Select

12 Sub PreencheExpostos() – (*) – cont.
Dentro do laço Beneficiários Some QtdExp para a faixa etária correspondente do beneficiário Dim Exp_FE() As Long QtdExp = 1 If Format(rs("Inclusao"), "yyyymm") = Comp Then QtdExp = (30 - Day(rs("Inclusao")) + 1) / 30 End If If Format(rs("Exclusao"), "yyyymm") = Comp Then QtdExp = (Day(rs("Exclusao")) - 1) / 30 If QtdExp < 0 Then QtdExp = 0 Exp_FE(FE) = Exp_FE(FE) + QtdExp

13 Sub PreencheExpostos() – (*) – cont.
Após percorrer todo o laço excluir os resultados na tabela Expostos para a competência que, eventualmente, possa ocorrer cn.Execute "Delete * from Expostos where Competencia = '" & Comp & "'"

14 Sub PreencheExpostos() – (*) - cont.
Incluir os resultados na tabela Expostos Criar a Consulta For FE = 1 To 10 SQL = "INSERT INTO EXPOSTOS ([COMP], FE, EXP ) SELECT " & _ Comp & " AS A, " & FE & " AS B, " & Str(Exp_FE(FE)) & " AS C" cn.Execute SQL Next Fechar a Consulta Beneficiários rs.Close

15 Feche a conexão e os objetos de Banco de Dados
cn.Close Set rs = Nothing Set cn = Nothing Teste o código Valide os resultados

16 Laboratório 1I Criar Tabela de Gastos
Preencher Tabela de Gastos a partir do VBA com Access.

17 Criar Tabela de Gastos Criar Tabela de Expostos com a seguintes estrutura: Nome do Campo Tipo de Dados Tamanho COMPETENCIA * Texto 6 FE * Número Byte Servico * 255 INC Single GAS (*) Chave primária.

18 Sub PreencheGastosInc()
Acesse a Base de Dados Dim cn As ADODB.Connection Dim rs As ADODB.Recordset Set cn = CurrentProject.Connection Set rs = New ADODB.Recordset Defina datas de competência inicial e final Dim CompIni As String Dim CompFin As String Dim Comp As String CompIni = Format(DateSerial(2005, 1, 1), "yyyymm") ' #1/1/2005# CompFin = Format(DateSerial(2007, 11, 1), "yyyymm") ' #11/1/2007# Excluir registros anteriores cn.Execute "Delete * from Gastos“ Redimensionar Vetores Dim Inc_FE() As Single Dim Gas_FE() As Single ReDim Gas_FE(1 To 10) ReDim Inc_FE(1 To 10)

19 Sub PreencheGastosInc()
Abrir Consulta Notas / Beneficiarios SQL = "SELECT Format([Atendimento],'yyyymm') AS competencia, Notas.Atendimento, " & _ "Notas.Servico, Beneficiarios.Nascimento, Notas.Alta, Notas.Valor " & _ "FROM Notas INNER JOIN Beneficiarios ON Notas.Matricula = Beneficiarios.Matricula " & _ "WHERE (((Format([Atendimento], 'yyyymm')) >= '" & CompIni & "' And (Format([Atendimento], 'yyyymm')) <= '" & _ CompFin & "')) ORDER BY Format([Atendimento],'yyyymm'), Notas.Servico;" rs.Open SQL, cn, adOpenKeyset Inclua laço Do-While para a consulta Dim Calcula As Boolean Calcula = True Do While Not rs.EOF And Calcula # Loop rs.Close MsgBox "Fim de processamento!", vbInformation

20 Sub PreencheGastosInc(#)
Dentro laço Do-While para a Notas FE = FaixaEtaria(rs("Atendimento"), rs("Nascimento")) Inc_FE(FE) = Inc_FE(FE) + 1 Gas_FE(FE) = Gas_FE(FE) + rs("Valor") Servico = rs("servico") Comp = rs("competencia") rs.MoveNext #2 Teste o código

21 Sub PreencheGastosInc(#3)
Dentro laço Do-While para a Notas (gravar vetores quando fim de arquivo) If rs.EOF Then For FE = 1 To 10 SQL = "INSERT INTO GASTOS ([COMP], FE, SERVICO, INC, GAS ) SELECT " & _ Comp & " AS A, " & FE & " AS B, '" & Servico & "' as C, " & Str(Inc_FE(FE)) & " AS D, " & _ Str(Gas_FE(FE)) & " AS E" cn.Execute SQL Next ReDim Gas_FE(1 To 10) ReDim Inc_FE(1 To 10) 'Servico = rs("servico") Else #4 End If

22 Sub PreencheGastosInc(#4)
Dentro laço Do-While para a Notas (gravar vetores quando mudar de competência) If rs.EOF Then Else #4 If Servico <> rs("servico") Or Comp <> rs("competencia") Then For FE = 1 To 10 SQL = "INSERT INTO GASTOS ([COMP], FE, SERVICO, INC, GAS ) SELECT " & _ Comp & " AS A, " & FE & " AS B, '" & Servico & "' as C, " & Str(Inc_FE(FE)) & " AS D, " & _ Str(Gas_FE(FE)) & " AS E" cn.Execute SQL Next ReDim Gas_FE(1 To 10) ReDim Inc_FE(1 To 10) End If

23 Laboratório 1II Preencher planilha ANS com resultados obtidos nos laboratórios I e II.

24 FIM


Carregar ppt "Tarifação em Planos de Saúde"

Apresentações semelhantes


Anúncios Google