mirror of
https://github.com/hoshikawa2/hospital_risk_admission.git
synced 2026-03-06 02:10:37 +00:00
Add files via upload
This commit is contained in:
92
README.md
92
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.
|
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:
|
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.
|
• Subutilização ou sobrecarga de leitos.
|
||||||
|
|
||||||
• Internações desnecessárias que aumentam custos.
|
• Internações desnecessárias que aumentam custos.
|
||||||
|
|
||||||
• Altos riscos para pacientes que deveriam ser internados mas acabam sendo liberados.
|
• 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.
|
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.
|
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
|
### 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.
|
• 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.
|
• Otimizar recursos hospitalares: uso mais inteligente de leitos, equipamentos e equipe médica.
|
||||||
|
|
||||||
• Reduzir custos: evitar internações desnecessárias.
|
• 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.
|
• 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.
|
• 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
|
## Oracle Cloud Data Science
|
||||||
|
|
||||||
O laboratório foi construído para ser executado no Oracle Cloud Data Science, ambiente colaborativo que oferece:
|
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.
|
• Notebooks Jupyter integrados com bibliotecas modernas de machine learning.
|
||||||
|
|
||||||
• Gestão de experimentos para versionamento e rastreabilidade de modelos.
|
• Gestão de experimentos para versionamento e rastreabilidade de modelos.
|
||||||
|
|
||||||
• Integração com Oracle Autonomous Database e outros serviços da Oracle Cloud.
|
• 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.
|
• 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.
|
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.
|
||||||
@@ -37,3 +111,21 @@ Isso permite que o modelo de previsão de risco de internação seja colocado em
|
|||||||
|
|
||||||
O material foi desenhado para ser rodado diretamente no serviço Oracle Cloud Data Science.
|
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",
|
" return out_path\n",
|
||||||
"\n",
|
"\n",
|
||||||
"# ---- use aqui o SEU link de compartilhamento (de pasta ou arquivo) ----\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",
|
"zip_path = \"Wallet_ORADB23ai.zip\"\n",
|
||||||
"\n",
|
"\n",
|
||||||
"download_dropbox_zip(url, zip_path)\n",
|
"download_dropbox_zip(url, zip_path)\n",
|
||||||
@@ -578,17 +578,11 @@
|
|||||||
" \"user_name\": \"admin\",\n",
|
" \"user_name\": \"admin\",\n",
|
||||||
" \"password\": \"********\",\n",
|
" \"password\": \"********\",\n",
|
||||||
" \"service_name\": \"oradb23ai_high\",\n",
|
" \"service_name\": \"oradb23ai_high\",\n",
|
||||||
" \"wallet_location\": \"Wallet_ORADB23ai.zip\",\n",
|
" \"wallet_location\": \"Wallet.zip\",\n",
|
||||||
"}\n",
|
"}\n",
|
||||||
"import pandas as pd\n",
|
"import pandas as pd\n",
|
||||||
"import ads\n",
|
"import ads\n",
|
||||||
"\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",
|
"# 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",
|
"# rather than string substitution to avoid the SQL injection attack vector.\n",
|
||||||
"df = pd.DataFrame.ads.read_sql(\n",
|
"df = pd.DataFrame.ads.read_sql(\n",
|
||||||
@@ -1277,10 +1271,10 @@
|
|||||||
"import os, joblib\n",
|
"import os, joblib\n",
|
||||||
"from ads.model.framework.sklearn_model import SklearnModel\n",
|
"from ads.model.framework.sklearn_model import SklearnModel\n",
|
||||||
"\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 = \"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",
|
"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",
|
"\n",
|
||||||
"# (opcional) salvar artefatos locais\n",
|
"# (opcional) salvar artefatos locais\n",
|
||||||
"# os.makedirs(\"artifacts\", exist_ok=True)\n",
|
"# os.makedirs(\"artifacts\", exist_ok=True)\n",
|
||||||
@@ -1482,7 +1476,7 @@
|
|||||||
"DEPLOYMENT_ID = deployment.id\n",
|
"DEPLOYMENT_ID = deployment.id\n",
|
||||||
"\n",
|
"\n",
|
||||||
"# Caso contrário, se estiver em código avulso - habilitar\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",
|
"\n",
|
||||||
"ads.set_auth(\n",
|
"ads.set_auth(\n",
|
||||||
" auth=\"api_key\",\n",
|
" auth=\"api_key\",\n",
|
||||||
@@ -1496,7 +1490,7 @@
|
|||||||
"print(\"Endpoint:\", md.url)\n",
|
"print(\"Endpoint:\", md.url)\n",
|
||||||
"\n",
|
"\n",
|
||||||
"# Endpoint correto (não adicionar /predict manualmente se já vier com ele)\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",
|
"endpoint = md.url + \"/predict\"\n",
|
||||||
"\n",
|
"\n",
|
||||||
"print(endpoint)\n",
|
"print(endpoint)\n",
|
||||||
@@ -4540,7 +4534,7 @@
|
|||||||
"TARGET_COL = \"admitted_from_ed\" # seu alvo 0/1\n",
|
"TARGET_COL = \"admitted_from_ed\" # seu alvo 0/1\n",
|
||||||
"#DEPLOYMENT_ID = deployment.id # se você já tem o objeto deployment no notebook\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",
|
"# 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",
|
"\n",
|
||||||
"# Colunas de entrada exigidas pelo modelo (na ORDEM do schema)\n",
|
"# Colunas de entrada exigidas pelo modelo (na ORDEM do schema)\n",
|
||||||
"FEATURE_COLS = [\n",
|
"FEATURE_COLS = [\n",
|
||||||
@@ -4554,7 +4548,7 @@
|
|||||||
" \"user_name\": \"admin\",\n",
|
" \"user_name\": \"admin\",\n",
|
||||||
" \"password\": \"********\",\n",
|
" \"password\": \"********\",\n",
|
||||||
" \"service_name\": \"oradb23ai_high\",\n",
|
" \"service_name\": \"oradb23ai_high\",\n",
|
||||||
" \"wallet_location\": \"Wallet_ORADB23ai.zip\",\n",
|
" \"wallet_location\": \"Wallet.zip\",\n",
|
||||||
"}\n",
|
"}\n",
|
||||||
"\n",
|
"\n",
|
||||||
"# -----------------------------\n",
|
"# -----------------------------\n",
|
||||||
|
|||||||
Reference in New Issue
Block a user