mirror of
https://github.com/hoshikawa2/hospital_risk_admission.git
synced 2026-03-03 16:09:38 +00:00
Add files via upload
This commit is contained in:
94
README.md
94
README.md
@@ -4,8 +4,11 @@
|
||||
|
||||
Organizações de saúde enfrentam grandes desafios para prever o risco de internação hospitalar de pacientes atendidos no pronto-socorro.
|
||||
Normalmente, os médicos e equipes de triagem precisam tomar decisões rápidas com base em informações incompletas, o que pode levar a:
|
||||
|
||||
• Subutilização ou sobrecarga de leitos.
|
||||
|
||||
• Internações desnecessárias que aumentam custos.
|
||||
|
||||
• Altos riscos para pacientes que deveriam ser internados mas acabam sendo liberados.
|
||||
|
||||
Essas dificuldades impactam a eficiência hospitalar e a qualidade do atendimento ao paciente.
|
||||
@@ -17,18 +20,89 @@ Ele combina preparação de dados, treinamento de modelo preditivo e implantaç
|
||||
O modelo pode ser integrado a sistemas clínicos para fornecer insights em tempo real, auxiliando equipes médicas e administrativas na tomada de decisão.
|
||||
|
||||
### Objetivos e Benefícios
|
||||
|
||||
• Apoiar decisões clínicas: fornecer uma previsão sobre o risco de internação de um paciente no momento da admissão.
|
||||
|
||||
• Otimizar recursos hospitalares: uso mais inteligente de leitos, equipamentos e equipe médica.
|
||||
|
||||
• Reduzir custos: evitar internações desnecessárias.
|
||||
|
||||
• Aprimorar qualidade do atendimento: aumentar a precisão das decisões médicas e a segurança do paciente.
|
||||
|
||||
• Acelerar inovação em saúde: demonstrar como inteligência artificial pode ser aplicada a processos críticos do setor.
|
||||
|
||||
## Dados para Treinamento
|
||||
|
||||
Para que o treinamento pudesse ter validação, foram utilizados dados da **PhysioNet**, pois trata-se de um banco de dados público do **Beth Israel Deaconess Medical Center**.
|
||||
Mais detalhes podem ser obtidos aqui: [MIMIC-IV-ED Demo](https://physionet.org/content/mimic-iv-ed-demo/2.2/)
|
||||
|
||||
Abaixo, segue a estrutura de dados utilizada para o treinamento de Machine Learning.
|
||||
|
||||
### Estrutura dos Dados
|
||||
|
||||
- **Identificação:**
|
||||
|
||||
- subject_id → ID do paciente
|
||||
|
||||
- hadm_id → ID da admissão hospitalar (pode estar ausente em não admitidos)
|
||||
|
||||
- stay_id → ID da estadia no pronto-socorro
|
||||
|
||||
|
||||
- **Datas e horários:**
|
||||
|
||||
- intime → horário de entrada no pronto-socorro
|
||||
|
||||
- outtime → horário de saída
|
||||
|
||||
|
||||
- **Demografia:**
|
||||
|
||||
- gender → sexo (M/F)
|
||||
|
||||
- race → raça/etnia
|
||||
|
||||
|
||||
- **Chegada e saída:**
|
||||
|
||||
- arrival_transport → forma de chegada (ex.: ambulância, caminhada)
|
||||
|
||||
- disposition → destino após o atendimento (ex.: ADMITTED, HOME)
|
||||
|
||||
- admitted_from_ed → se foi admitido no hospital a partir do pronto-socorro (0 = não, 1 = sim)
|
||||
|
||||
|
||||
- **Sinais vitais na entrada:**
|
||||
|
||||
- temperature → temperatura corporal (°F)
|
||||
|
||||
- heartrate → frequência cardíaca
|
||||
|
||||
- resprate → frequência respiratória
|
||||
|
||||
- o2sat → saturação de oxigênio
|
||||
|
||||
- sbp → pressão arterial sistólica
|
||||
|
||||
- dbp → pressão arterial diastólica
|
||||
|
||||
|
||||
- **Outros:**
|
||||
|
||||
- n_diagnosis → número de diagnósticos registrados
|
||||
|
||||
- split → particionamento dos dados (train, val, possivelmente test)
|
||||
|
||||
## Oracle Cloud Data Science
|
||||
|
||||
O laboratório foi construído para ser executado no Oracle Cloud Data Science, ambiente colaborativo que oferece:
|
||||
|
||||
• Notebooks Jupyter integrados com bibliotecas modernas de machine learning.
|
||||
|
||||
• Gestão de experimentos para versionamento e rastreabilidade de modelos.
|
||||
|
||||
• Integração com Oracle Autonomous Database e outros serviços da Oracle Cloud.
|
||||
|
||||
• Model Deployment gerenciado, que disponibiliza modelos como APIs REST de alta disponibilidade.
|
||||
|
||||
Isso permite que o modelo de previsão de risco de internação seja colocado em produção de forma simples e segura, pronto para ser consumido por aplicações externas ou fluxos de trabalho corporativos.
|
||||
@@ -36,4 +110,22 @@ Isso permite que o modelo de previsão de risco de internação seja colocado em
|
||||
## Execução
|
||||
|
||||
O material foi desenhado para ser rodado diretamente no serviço Oracle Cloud Data Science.
|
||||
Ao final da execução, o pipeline gera um deployment do modelo que pode ser utilizado de forma geral, servindo predições via API para qualquer aplicação de negócio ou sistema hospitalar.
|
||||
Ao final da execução, o pipeline gera um deployment do modelo que pode ser utilizado de forma geral, servindo predições via API para qualquer aplicação de negócio ou sistema hospitalar.
|
||||
|
||||
Você pode baixar o material aqui: [Risk Admission Lab v1](./Risk%20Admission%20Lab%20v1.ipynb)
|
||||
|
||||

|
||||
|
||||

|
||||
|
||||
O material em anexo está no formato **Jupyter Lab** e o documento é auto-explicativo em sua execução.
|
||||
Trata-se de um material:
|
||||
|
||||
- Que ajuda a buscar a informação para treinamento a partir de um **Object Storage** ou **Oracle Autonomous Database**
|
||||
- Avalia as informações, ajudando na verificação e manipulação
|
||||
- Executa o treinamento de Machine Learning
|
||||
- Monta a estrutura do Modelo e faz o deployment, expondo um endpoint para consumo
|
||||
- Executa um código de exemplo que pode ser utilizado para o consumo da API
|
||||
|
||||
|
||||

|
||||
@@ -495,7 +495,7 @@
|
||||
" return out_path\n",
|
||||
"\n",
|
||||
"# ---- use aqui o SEU link de compartilhamento (de pasta ou arquivo) ----\n",
|
||||
"url = \"https://www.dropbox.com/scl/fi/4jbzmsixhgdm6skpt1qyg/Wallet_ORADB23ai.zip?rlkey=z0bvsfzr6m1tiizrpe2ceufla\"\n",
|
||||
"url = \"https://<link para baixar o Wallet se houver>\"\n",
|
||||
"zip_path = \"Wallet_ORADB23ai.zip\"\n",
|
||||
"\n",
|
||||
"download_dropbox_zip(url, zip_path)\n",
|
||||
@@ -578,17 +578,11 @@
|
||||
" \"user_name\": \"admin\",\n",
|
||||
" \"password\": \"********\",\n",
|
||||
" \"service_name\": \"oradb23ai_high\",\n",
|
||||
" \"wallet_location\": \"Wallet_ORADB23ai.zip\",\n",
|
||||
" \"wallet_location\": \"Wallet.zip\",\n",
|
||||
"}\n",
|
||||
"import pandas as pd\n",
|
||||
"import ads\n",
|
||||
"\n",
|
||||
"# simple read of a SQL query into a dataframe with no bind variables\n",
|
||||
"# df = pd.DataFrame.ads.read_sql(\n",
|
||||
"# \"SELECT * FROM SH.SALES\",\n",
|
||||
"# connection_parameters=connection_parameters,\n",
|
||||
"# )\n",
|
||||
"\n",
|
||||
"# read of a SQL query into a dataframe with a bind variable. Use bind variables\n",
|
||||
"# rather than string substitution to avoid the SQL injection attack vector.\n",
|
||||
"df = pd.DataFrame.ads.read_sql(\n",
|
||||
@@ -1277,10 +1271,10 @@
|
||||
"import os, joblib\n",
|
||||
"from ads.model.framework.sklearn_model import SklearnModel\n",
|
||||
"\n",
|
||||
"compartment_id = \"ocid1.compartment.oc1..aaaaaaaaexpiw4a7dio64mkfv2t273s2hgdl6mgfvvyv7tycalnjlvpvfl3q\"\n",
|
||||
"compartment_id = \"ocid1.compartment.oc1..aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\"\n",
|
||||
"#conda_slug = \"oci://service-conda-packs@id19sfcrra6z/service_pack/cpu/Oracle_AutoMLx_v25.1_for_CPU_on_Python_3.11/2.0/automlx251_p311_cpu_x86_64_v2\" # igual ao exemplo oficial\n",
|
||||
"conda_slug = \"automlx251_p311_cpu_x86_64_v2\"\n",
|
||||
"project_id = \"ocid1.datascienceproject.oc1.sa-saopaulo-1.amaaaaaafioir7iaechagym53tslgtawskevs6zsgdg77oipytxhfr5gg53a\"\n",
|
||||
"project_id = \"ocid1.datascienceproject.oc1.sa-saopaulo-1.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\"\n",
|
||||
"\n",
|
||||
"# (opcional) salvar artefatos locais\n",
|
||||
"# os.makedirs(\"artifacts\", exist_ok=True)\n",
|
||||
@@ -1482,7 +1476,7 @@
|
||||
"DEPLOYMENT_ID = deployment.id\n",
|
||||
"\n",
|
||||
"# Caso contrário, se estiver em código avulso - habilitar\n",
|
||||
"#DEPLOYMENT_ID = \"ocid1.datasciencemodeldeployment.oc1.sa-saopaulo-1.amaaaaaafioir7iassu24n2f6lwajtkhwd3j5qezitdmxjvmmw6vagylik3q\"\n",
|
||||
"#DEPLOYMENT_ID = \"ocid1.datasciencemodeldeployment.oc1.sa-saopaulo.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\"\n",
|
||||
"\n",
|
||||
"ads.set_auth(\n",
|
||||
" auth=\"api_key\",\n",
|
||||
@@ -1496,7 +1490,7 @@
|
||||
"print(\"Endpoint:\", md.url)\n",
|
||||
"\n",
|
||||
"# Endpoint correto (não adicionar /predict manualmente se já vier com ele)\n",
|
||||
"#endpoint = \"https://modeldeployment.sa-saopaulo-1.oci.customer-oci.com/ocid1.datasciencemodeldeployment.oc1.sa-saopaulo-1.amaaaaaafioir7iassu24n2f6lwajtkhwd3j5qezitdmxjvmmw6vagylik3q/predict\"\n",
|
||||
"#endpoint = \"https://modeldeployment.sa-saopaulo-1.oci.customer-oci.com/ocid1.datasciencemodeldeployment.oc1.sa-saopaulo-1.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa/predict\"\n",
|
||||
"endpoint = md.url + \"/predict\"\n",
|
||||
"\n",
|
||||
"print(endpoint)\n",
|
||||
@@ -4540,7 +4534,7 @@
|
||||
"TARGET_COL = \"admitted_from_ed\" # seu alvo 0/1\n",
|
||||
"#DEPLOYMENT_ID = deployment.id # se você já tem o objeto deployment no notebook\n",
|
||||
"# Caso esteja fora do notebook de deploy, comente a linha acima e defina manualmente:\n",
|
||||
"DEPLOYMENT_ID = \"ocid1.datasciencemodeldeployment.oc1.sa-saopaulo-1.amaaaaaafioir7iafffqtvgm2mj24zw7vnnyamcxzhwqelkdpg5n5qw4jgkq\"\n",
|
||||
"DEPLOYMENT_ID = \"ocid1.datasciencemodeldeployment.oc1.sa-saopaulo-1.aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\"\n",
|
||||
"\n",
|
||||
"# Colunas de entrada exigidas pelo modelo (na ORDEM do schema)\n",
|
||||
"FEATURE_COLS = [\n",
|
||||
@@ -4554,7 +4548,7 @@
|
||||
" \"user_name\": \"admin\",\n",
|
||||
" \"password\": \"********\",\n",
|
||||
" \"service_name\": \"oradb23ai_high\",\n",
|
||||
" \"wallet_location\": \"Wallet_ORADB23ai.zip\",\n",
|
||||
" \"wallet_location\": \"Wallet.zip\",\n",
|
||||
"}\n",
|
||||
"\n",
|
||||
"# -----------------------------\n",
|
||||
|
||||
Reference in New Issue
Block a user