gbope commited on
Commit
2e02568
·
verified ·
1 Parent(s): 79d4944

Create app.py

Browse files
Files changed (1) hide show
  1. app.py +142 -0
app.py ADDED
@@ -0,0 +1,142 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import gradio as gr
2
+
3
+ # === Funções utilitárias (copiadas do seu script original) ===
4
+ def obter_documentos_padrao_2010_mais():
5
+ return [
6
+ "Certidão de Nascimento (Não pode ser só o RG)",
7
+ "Documento com Foto (RG/CNH/OUTROS - se houver)",
8
+ "CPF (se não tiver em outro documento)",
9
+ "Foto Corporal Completa para Verificação de Saúde (explicação abaixo)",
10
+ "Email e celular do responsável"
11
+ ]
12
+
13
+ def obter_documentos_padrao_2009_menos():
14
+ return [
15
+ "Documento com Foto (RG/CNH/OUTROS)",
16
+ "CPF (se não tiver no documento com foto)",
17
+ "Foto com Documento ao lado do rosto",
18
+ "Email e celular"
19
+ ]
20
+
21
+ def simplificar_dependente(nome):
22
+ simplificacoes = {
23
+ "Cônjuge ou companheiro(a)": "Cônjuge",
24
+ "Filhos(as) solteiros naturais, tutelados, enteados e adotivos": "Filhos",
25
+ "Filhos(as) inválidos declarados no imposto de renda do titular": "Filho inválido",
26
+ "Pai e mãe": "Pais",
27
+ "Padrasto e madrasta": "Padrastos",
28
+ "Irmãos(ãs) consanguíneos ou adotivos": "Irmãos",
29
+ "Netos": "Netos",
30
+ "Sobrinhos": "Sobrinhos",
31
+ "Primos": "Primos",
32
+ "Tios": "Tios",
33
+ "Cunhados(as)": "Cunhados",
34
+ "Sogro(a)": "Sogro(a)",
35
+ "Genros e noras": "Genros/Noras",
36
+ "Avô e avó": "Avós"
37
+ }
38
+ return simplificacoes.get(nome, nome)
39
+
40
+ def imprimir_documentos(nome, documentos):
41
+ resultado = f"\nDocumentos necessários para {nome}:\n"
42
+ for doc in documentos:
43
+ if doc == "DA EMPRESA:":
44
+ resultado += f"\n{doc}\n"
45
+ else:
46
+ resultado += f"- {doc}\n"
47
+ return resultado
48
+
49
+ def obter_documentos_carencia():
50
+ return [
51
+ "3 últimos boletos pagos e seus comprovantes",
52
+ "Carteirinha",
53
+ "Carta de permanência\n(A carta de permanência é um documento solicitado à administradora do seu plano, geralmente por ligação)"
54
+ ]
55
+
56
+ def obter_documentos_titular(categoria, modalidade, documentos_padrao):
57
+ documentos = documentos_padrao.copy()
58
+ documentos.append("Comprovante de Residência (no nome do titular ou dos pais)")
59
+
60
+ if categoria == "CNPJ":
61
+ documentos.append("DA EMPRESA:")
62
+ if modalidade == "MEI":
63
+ documentos.extend(["CNPJ", "CCMEI"])
64
+ elif modalidade == "OUTROS":
65
+ documentos.extend(["CNPJ", "Contrato Social e suas alterações"])
66
+
67
+ elif categoria == "ADESAO":
68
+ if modalidade == "0":
69
+ pass # Entidade aberta, sem documentos extras
70
+ else:
71
+ documentos_map = {
72
+ "ESTUDANTE": "Declaração Escolar",
73
+ "TRABALHADOR": "Contracheque",
74
+ "PROFISSIONAL LIBERAL": "Documento de Registro no Conselho na validade + Diploma",
75
+ "APOSENTADO": "Comprovante de Pensão"
76
+ }
77
+ documentos.append(documentos_map.get(modalidade, "Modalidade inválida!"))
78
+
79
+ return documentos
80
+
81
+ def obter_documentos_dependente(dependente, nascido_2010):
82
+ documentos = obter_documentos_padrao_2010_mais() if nascido_2010 else obter_documentos_padrao_2009_menos()
83
+
84
+ if dependente == "Cônjuge ou companheiro(a)":
85
+ documentos.append("Certidão de casamento ou declaração de união estável (lavrada em cartório).")
86
+ elif "inválido" in dependente:
87
+ documentos.append("Declaração de imposto de renda do titular comprovando a condição.")
88
+ elif dependente in ["Netos", "Sobrinhos", "Primos", "Tios"]:
89
+ documentos.append("Documento com foto (RG/CNH/outros) do pai/mãe.")
90
+ elif dependente in ["Cunhados(as)", "Genros e noras"]:
91
+ documentos.append("Certidão de casamento.")
92
+ elif dependente == "Sogro(a)":
93
+ documentos.append("Certidão de casamento do titular")
94
+
95
+ return documentos
96
+
97
+ # === Lógica Gradio ===
98
+ def gerar_documentos(titular_2010, categoria, modalidade, dependentes, carencia_lista):
99
+ resultado = ""
100
+ documentos_padrao_titular = obter_documentos_padrao_2010_mais() if titular_2010 else obter_documentos_padrao_2009_menos()
101
+ docs_titular = obter_documentos_titular(categoria, modalidade, documentos_padrao_titular)
102
+
103
+ if "T" in carencia_lista or "1" in carencia_lista:
104
+ docs_titular.extend(obter_documentos_carencia())
105
+ if "T" in carencia_lista:
106
+ resultado += imprimir_documentos("TODOS (Titular e Dependentes)", docs_titular)
107
+ return resultado
108
+ resultado += imprimir_documentos("TITULAR", docs_titular)
109
+
110
+ for i, (dep_nome, dep_2010) in enumerate(dependentes, start=2):
111
+ docs_dep = obter_documentos_dependente(dep_nome, dep_2010)
112
+ nome_simplificado = simplificar_dependente(dep_nome)
113
+ if "T" in carencia_lista or str(i) in carencia_lista:
114
+ docs_dep.extend(obter_documentos_carencia())
115
+ resultado += imprimir_documentos(f"Dependente: {nome_simplificado}", docs_dep)
116
+
117
+ return resultado
118
+
119
+ # === Interface Gradio ===
120
+ def interface(titular_2010, categoria, modalidade, dependentes_json, carencia_raw):
121
+ import json
122
+ dependentes = json.loads(dependentes_json) if dependentes_json else []
123
+ carencia_lista = [x.strip().upper() for x in carencia_raw.replace(";", ",").split(",") if x.strip()]
124
+ return gerar_documentos(titular_2010, categoria, modalidade, dependentes, carencia_lista)
125
+
126
+ # Interface Gradio
127
+ with gr.Blocks(title="Gerador de Documentos de Saúde") as demo:
128
+ gr.Markdown("# Gerador de Documentos para Planos de Saúde")
129
+
130
+ titular_2010 = gr.Checkbox(label="Titular nasceu em 2010 ou depois?")
131
+ categoria = gr.Dropdown(["PF", "CNPJ", "ADESAO"], label="Categoria")
132
+ modalidade = gr.Dropdown(["", "MEI", "OUTROS", "ESTUDANTE", "TRABALHADOR", "PROFISSIONAL LIBERAL", "APOSENTADO", "0"], label="Modalidade (caso necessário)")
133
+
134
+ dependentes_json = gr.Textbox(label="Dependentes (JSON Ex: [[\"Cônjuge ou companheiro(a)\", true], [\"Netos\", false]])")
135
+ carencia_raw = gr.Textbox(label="Quem fará compra de carência? (Ex: T ou 1; 3)")
136
+
137
+ gerar = gr.Button("Gerar Documentos")
138
+ saida = gr.Textbox(label="Resultado", lines=20, interactive=False, show_copy_button=True)
139
+
140
+ gerar.click(fn=interface, inputs=[titular_2010, categoria, modalidade, dependentes_json, carencia_raw], outputs=saida)
141
+
142
+ demo.launch()