{"id":27260896,"url":"https://github.com/ivanm4rtin5/backend_consultas_ans","last_synced_at":"2026-05-04T08:32:34.012Z","repository":{"id":285941771,"uuid":"959613895","full_name":"IvanM4rtin5/backend_Consultas_Ans","owner":"IvanM4rtin5","description":"Back-end de consultas","archived":false,"fork":false,"pushed_at":"2025-05-25T22:47:10.000Z","size":277,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-05-25T23:29:04.042Z","etag":null,"topics":["api-rest","postgresql","postman","python"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/IvanM4rtin5.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-04-03T04:28:20.000Z","updated_at":"2025-05-25T22:47:13.000Z","dependencies_parsed_at":"2025-04-11T04:54:35.343Z","dependency_job_id":"a812dae0-4f84-493c-a9cd-36afaab1bcd6","html_url":"https://github.com/IvanM4rtin5/backend_Consultas_Ans","commit_stats":null,"previous_names":["ivanm4rtin5/backend_intuitive","ivanm4rtin5/backend_consultas_ans"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/IvanM4rtin5/backend_Consultas_Ans","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IvanM4rtin5%2Fbackend_Consultas_Ans","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IvanM4rtin5%2Fbackend_Consultas_Ans/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IvanM4rtin5%2Fbackend_Consultas_Ans/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IvanM4rtin5%2Fbackend_Consultas_Ans/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/IvanM4rtin5","download_url":"https://codeload.github.com/IvanM4rtin5/backend_Consultas_Ans/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/IvanM4rtin5%2Fbackend_Consultas_Ans/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":264719240,"owners_count":23653542,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["api-rest","postgresql","postman","python"],"created_at":"2025-04-11T04:54:34.089Z","updated_at":"2026-05-04T08:32:33.949Z","avatar_url":"https://github.com/IvanM4rtin5.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 💼 Expense Query API - ANS (National Supplementary Health Agency)\n\n[![Python](https://img.shields.io/badge/Python-3.10%2B-3776AB?logo=python)](https://www.python.org/)\n[![Flask](https://img.shields.io/badge/Flask-3.0.3-000000?logo=flask)](https://flask.palletsprojects.com/)\n[![PostgreSQL](https://img.shields.io/badge/PostgreSQL-17-4169E1?logo=postgresql)](https://www.postgresql.org/)\n[![SQLAlchemy](https://img.shields.io/badge/SQLAlchemy-2.0.30-333333?logo=sqlalchemy)](https://www.sqlalchemy.org/)\n\nBackend API for querying healthcare provider expenses, integrated into a relational database with data processed from ANS.\n\n---\n\n## 🧩 Main Features\n\n### **RESTful API**\n- Consult the biggest expenses per quarter\n- Health check endpoint\n- Filtering by operator and period\n- Pagination of results\n- **Postman queries**\n\n![Image](https://github.com/IvanM4rtin5/backend_Consultas_Ans/blob/main/public/image/consulta_postman.jpeg)\n\n### **Database**\n- Optimized modeling for financial queries\n- Indexes for performance on large datasets\n- Relationship between operators and financial statements\n- Data import via CSV\n- **Queries in SQL**\n\n![Image](https://github.com/IvanM4rtin5/backend_Consultas_Ans/blob/main/public/image/consulta_sql.png)\n\n---\n\n## 🚀 How to Execute the Project\n\n### Prerequisites\n- Python 3.10+\n- PostgreSQL 17+\n- Postman (for testing endpoints)\n\n### Download csv files from the ans website\n\n1. the user will have to download the csv files from the websites (selecting the year of interest):\n  \n- https://dadosabertos.ans.gov.br/FTP/PDA/demonstracoes_contabeis/\n- https://dadosabertos.ans.gov.br/FTP/PDA/operadoras_de_plano_de_saude_ativas/\n\n2. insert in the **Uploads** folder\n\n### Initial Setup\n1. Create a PostgreSQL database:\n\n```sql\nCREATE DATABASE my_base;\n```\n2. Configure the environment variables in .env:\n\n```ini Copy\nDB_USER=postgres\nDB_PASSWORD=secret_password\nDB_HOST=localhost\nDB_PORT=5432\nDB_NAME=my_base\n```\n**Installation**\n\n```bash Copy\ngit clone https://github.com/IvanM4rtin5/backend_Consultas_Ans.git\n```\n```\ncd api-ans\n```\n```\npython -m venv venv\n```\n```\nsource venv/bin/activate   # Linux/Mac\nvenv\\Scripts\\activate      # Windows\n```\n```\npip install -r requirements.txt\n```\n**Bank Startup**\n```bash Copy\npython create_db.py # Create tables and indexes\npython import_csv.py # Import data from CSVs\n```\n**Run the API**\n```bash Copy\npython run.py # Start server at http://localhost:5000\n```\n## 📡 Main Endpoints\n**Health Check**\n```http Copy\nGET /api/health\n```\n**Top 10 Expenses from the Last Quarter**\n```http Copy\nGET /api/expenses/quarter\n```\n**Sample Answer:**\n\n```json Copy\n\n{\n  \"status\": \"success\",\n  \"data\": [\n    {\n      \"razao_social\": \"SUL AMERICA COMPANHIA DE SEGURO SAÚDE\",\n      \"registro_ans\": \"6246\",\n      \"modalidade\": \"Segquadora Especializada em Saúde\",\n      \"total_despesas\": \"42249880884.69\"\n    }\n  ]\n}\n```\n### 🗃️ Project Structure\n```Copy\napi-ans/\n├── app/\n│ ├── routes/\n│ │ ├── expenses.py   # Query routes\n│ │ └── health.py     # Health check\n│ ├── __init__.py     # Application factory\n│ ├── config.py       # Flask Settings\n│ ├── create_db.py    # DB creation script\n│ ├── database.py     # Connection to the database\n│ ├── models.py       # SQLAlchemy Models\n│ └── import_csv.py   # Data importer\n├── .env              # Environment variables\n├── requirements.txt  # Dependencies\n└── run.py            # Entrypoint of the application\n```\n\n### 🔍 Example SQL Queries\nQuery used in the /expenses/quarter endpoint:\n\n```sql Copy\n\nWITH UltimoTrimestre AS (\n  SELECT MAX(data) AS data_max FROM demonstracoes_contabeis\n)\nSELECT \n  o.razao_social, \n  o.registro_ans, \n  o.modalidade,\n  ABS(SUM(d.vl_saldo_final)) AS total_despesas\nFROM demonstracoes_contabeis d\nJOIN operadoras_ativas o ON d.reg_ans = o.registro_ans\nJOIN UltimoTrimestre ut ON d.data = ut.data_max\nWHERE d.descricao LIKE '%ASSISTÊNCIA A SAÚDE MEDICO HOSPITALAR%'\nGROUP BY o.razao_social, o.registro_ans, o.modalidade\nORDER BY total_despesas DESC\nLIMIT 10;\n```\n### 📌 Usage Tips\nTest with Postman: Import the collection available in docs/postman_collection.json\n\nOptimization: Pre-built indexes speed up queries on reg_ans and data\n\nExample Data: CSVs must follow the structure of the accounting_demonstrations and active_operators tables\n\n---\n### 📧 Contact\n\n**Developer:** Ivan Martins\n\n***Email:** ivanmarti.alves@gmail.com\n\n**LinkedIn:** https://www.linkedin.com/in/ivan-martins-alves/\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fivanm4rtin5%2Fbackend_consultas_ans","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fivanm4rtin5%2Fbackend_consultas_ans","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fivanm4rtin5%2Fbackend_consultas_ans/lists"}