KokoroSim

kokor心sim

Simulador Cardíaco Open Source: Eletrofisiológico, Dromotrópico e Hemodinâmico

Deploy to GitHub Pages Testes Biofísicos Licença: GPL v3 Rust WebAssembly Dioxus Mobile Optimized Acessibilidade

O kokor心sim é um projeto de código aberto dedicado à simulação biofísica da eletrofisiologia celular cardíaca e hemodinâmica ventricular em tempo real diretamente no navegador web. Desenvolvido inicialmente como projeto pessoal, evoluiu para uma ferramenta que pode auxiliar o ensino e a pesquisa no Brasil, sendo construído em Rust e compilado para WebAssembly (WASM) com interface declarativa reativa em Dioxus. O motor numérico resolve mais de 160 equações diferenciais ordinárias (EDOs) e variáveis de estado simultaneamente utilizando o método numérico híbrido de Rush-Larsen a $dt = 0.01\text{ ms}$ (1.600 passos por quadro de 16 ms a 60 FPS), assegurando execução em 1x tempo real com baixíssimo consumo de CPU (< 5-10%) em smartphones, tablets, notebooks e computadores de laboratórios acadêmicos, sem depender de placas gráficas dedicadas.


🚀 Módulos e Páginas do Projeto

📌 Índice Rápido Desta Página (Sobre)


🧬 Modelos Biofísicos Integrados ↑

O simulador implementa 7 modelos biofísicos padrão-ouro validados pela literatura científica internacional e pelo consórcio Physiome Model Repository (CellML):

  1. Nó Sinoatrial (SA) — Marcapasso Primário: Severi et al. (2012) — Automatismo biológico acoplado aos relógios de membrana ($I_f$) e cálcio ($I_{Ca,L}$, $I_{Ca,T}$, $I_{NCX}$) com modulação autonômica cronotrópica ($\beta_1$ e $M_2$).
  2. Músculo Atrial Humano: Courtemanche, Ramirez, Nattel (1998) — Miócitos atriais de resposta rápida e repolarização dependente de $I_{Kur}$, gerando a Onda P do ECG.
  3. Nó Atrioventricular (AV) — Filtro e Retardo: Inada et al. (2009) — Retardo nodal fisiológico dependente de cálcio (intervalo PR) e condução decremental protetora.
  4. Fibras de Purkinje e Feixe de His: Stewart et al. (2009) — Condução hisiana ultrarrápida ($dV/dt > 400\text{ V/s}$) e automatismo terciário de escape idioventricular (~25–35 BPM).
  5. Músculo Ventricular com Heterogeneidade Transmural: ten Tusscher & Panfilov (2006) — Subtipos Endocárdio, Célula M e Epicárdio reproduzindo o complexo QRS e a Onda T positiva concordante do ECG.
  6. Fibroblastos Cardíacos e Fibrose: MacCannell et al. (2007) — Acoplamento eletrotônico miócito-fibroblasto via gap junctions, dreno capacitivo e lentificação na condução.
  7. Acoplamento Eletromecânico e Hemodinâmica: Elastância de Suga & Sagawa (1974) e Circulação Arterial Windkessel de Westerhof et al. (2009) — Curvas dinâmicas de pressão ventricular ($LVP$) e aórtica ($AoP$) com incisura dicrótica e bulhas cardíacas (B1/B2).

🔬 Documentação Científica Completa: Para consultar as equações diferenciais detalhadas, formulações de correntes iônicas, links para o PubMed/DOI e repositórios computacionais CellML, acesse a página de Modelos Biofísicos e Referências Científicas.


⚡ Sistema de Condução e Dromotropismo Dinâmico ↑

Diferente de simuladores convencionais que utilizam grampeamentos de voltagem ou temporizadores arbitrários estáticos, o KokoroSim v2.0 implementa uma cadeia acoplada com estímulos de corrente fisiológica e latências dependentes de estado (dromotropismo dinâmico):

1. Cadeia de Propagação Fisiológica

$$\text{Nó SA} \xrightarrow{\Delta t_{SA \to Atr}} \text{Átrio} \xrightarrow{\Delta t_{Atr \to AV}} \text{Nó AV} \xrightarrow{\Delta t_{AV \to His}} \text{Purkinje} \xrightarrow{\Delta t_{Purk \to Endo}} \text{Endocárdio} \xrightarrow{\Delta t_{trans}} \text{Célula M} \to \text{Epicárdio}$$

2. Dromotropismo Dinâmico e Condução Decremental no Nó AV

O Nó Atrioventricular não possui um atraso fixo; sua velocidade de condução varia continuamente em resposta a fatores cronotrópicos e farmacológicos: - Condução Decremental Frequência-Dependente: Conforme a frequência cardíaca se eleva (taquicardia sinusal ou batimentos ectópicos), os canais de cálcio $I_{Ca,L}$ do nó AV têm menos tempo para se recuperar da inativação. Como consequência, o atraso nodal alarga progressivamente (simulando a curva de recuperação do nó AV e o fenômeno de Wenckebach). - Tônus Autonômico: - Estimulação Simpática ($\beta_1$): Aumenta a corrente $I_{Ca,L}$, acelerando a condução AV (dromotropismo positivo) e encurtando o intervalo PR. - Estimulação Vagal / Parassimpática ($M_2$): Ativa a corrente hiperpolarizante de potássio $I_{K,ACh}$, desacelerando a condução AV (dromotropismo negativo) e alargando o PR. - Verapamil e Bloqueadores de Cálcio: Como o nó AV depende do cálcio para a Fase 0, a inibição de $I_{Ca,L}$ induz alargamento acentuado da condução (BAV de 1º grau) ou bloqueio completo (BAV de 2º e 3º grau), momento no qual as fibras de Purkinje assumem o marcapasso por automatismo terciário. - Isquemia Tecidual: Lentifica a condução nodal e prolonga o intervalo PR.

3. Acoplamento Eletrotônico Miócito-Fibroblasto e Fibrose Miocárdica

A fibrose cardíaca pós-isquêmica ou senescente é simulada através da proliferação e acoplamento de fibroblastos não-excitáveis aos miócitos ventriculares via junções comunicantes de conexina-43/45: - Efeito Dreno Capacitivo: Como os fibroblastos repousam a potenciais menos negativos ($-35\text{ a }-45\text{ mV}$), o acoplamento eletrotônico drena corrente dos miócitos vizinhos durante a despolarização e injeta corrente durante o repouso. - Despolarização Parcial Diastólica: O potencial de repouso ventricular é elevado de $-86\text{ mV}$ para até $-76\text{ mV}$, promovendo inativação em estado estacionário dos canais rápidos de sódio $I_{Na}$. - Retardo Conducional e Bloqueios: O $dV/dt_{\max}$ da Fase 0 ventricular é atenuado e a condução transmural sofre lentificação progressiva, criando o substrato clássico de arritmias por reentrada e dispersão tecidual.


📈 Eletrocardiograma (ECG) Baseado em Dipolo Transmural ↑

O KokoroSim calcula a derivação eletrocardiográfica (equivalente a DII / precordiais) a partir de primeiros princípios biofísicos, resolvendo o gradiente elétrico do campo distante dipolar gerado pela despolarização e repolarização da parede cardíaca:

$$\text{ECG}(t) = 0.15 \cdot (V_{atrio}(t) + 80) + 0.55 \cdot (V_{endo}(t) - V_{epi}(t)) + 0.25 \cdot (V_M(t) - V_{epi}(t))$$

Como a Morfologia P-QRS-T Real Emerge:

  1. Onda P: Gerada pela despolarização inicial do tecido atrial ($V_{atrio}$).
  2. Intervalo PR: Reflete o tempo de trânsito através do átrio e retardo nodal AV até o feixe de His.
  3. Complexo QRS (Onda R escarpada): A despolarização chega primeiro ao subendocárdio via Purkinje ($t = 0\text{ ms}$), enquanto o epicárdio permanece em repouso ($-86\text{ mV}$). O gradiente $V_{endo} - V_{epi} \approx +25 - (-86) = +111\text{ mV}$ projeta uma deflexão positiva rápida e estreita.
  4. Segmento ST: Durante a fase de platô, todas as camadas ventriculares estão simultaneamente despolarizadas ($V_{endo} \approx V_M \approx V_{epi} \approx +15\text{ a }+25\text{ mV}$), anulando a diferença de potencial e mantendo o traçado na linha isoelétrica.
  5. Onda T Positiva e Fisiológica: O epicárdio possui densidade superior de canais de potássio de efluxo rápido e APD mais curto, repolarizando para $-86\text{ mV}$ antes do endocárdio e da célula M. Durante a repolarização: $$V_{endo}(t) - V_{epi}(t) \approx (-30\text{ mV}) - (-86\text{ mV}) = +56\text{ mV} > 0$$ Esse gradiente elétrico positivo gera a clássica Onda T positiva e concordante com o QRS, resolvendo o paradoxo histórico dos modelos unicelulares!

💓 Hemodinâmica Ventricular, Diagrama de Wiggers e Síntese de Áudio ↑

O quarto canal do osciloscópio exibe em tempo real o núcleo mecânico do Diagrama de Wiggers: - Pressão Ventricular Esquerda ($LVP$, ciano #00cec9): Eleva-se de ~7 mmHg na diástole até ~120 mmHg na sístole, cruzando a curva aórtica nos pontos de abertura e fechamento valvar. - Pressão Aórtica ($AoP$, coral #ff7675): Decai exponencialmente na diástole até ~70-80 mmHg e atinge ~120 mmHg no pico da ejeção. O fechamento da valva aórtica gera a clássica incisura dicrótica. - Síntese Acústica em Tempo Real (Web Audio API): - 🔊 Bip de Monitor (UTI - Onda R): Disparado na despolarização ventricular rápida ($dV/dt > 0$), gerando uma onda senoidal pura de 880 Hz com decaimento exponencial de 75 ms. - 🩺 Bulhas Cardíacas (Ausculta B1/B2): - B1 ("Tum" / Lub): Disparada na contração isovolumétrica no fechamento da valva mitral ($LVP \ge LAP$), sintetizada com pitch sweep descendente (140 $\to$ 85 Hz), ressonância muscular calibrada e ganho reforçado para clara audibilidade em transdutores de smartphones e notebooks. - B2 ("Tá" / Dub): Disparada no relaxamento isovolumétrico no fechamento da valva aórtica ($LVP \le AoP$), sintetizada com estalido de alta frequência (240 $\to$ 160 Hz), filtro passa-banda e decaimento rápido. - Marcadores Visuais Verticais Multicanal: Quando as opções de áudio estão ativas, linhas verticais correspondentes são desenhadas simultaneamente em todos os 4 canais (amarelo tracejado para Onda R/UTI, verde esmeralda para B1 e coral para B2), estabelecendo correlação áudio-visual em tempo real. - As duas opções de som vêm desativadas por padrão no Accordion "5. Monitorização & Áudio", sendo ativadas pelo clique do usuário em conformidade com as diretrizes de autoplay dos navegadores.

📺 Modos de Visualização do Osciloscópio e Onda Fantasma ↑


🎛️ Modulação Farmacológica, Eletrolítica e Patológica ↑


🎨 Identidade Visual e Conceito do Logotipo: O Rotor / Magatama (勾玉) ↑

O isotipo do KokoroSim foge dos clichês gráficos tradicionais da cardiologia (como corações estilizados ou traçados simplistas de ECG). Em vez disso, estabelece uma ponte geométrica direta entre a eletrofisiologia não-linear, a hemodinâmica ventricular e a iconografia tradicional japonesa:

1. A Convergência Multifísica (O Choque e o Fluxo)

A silhueta baseia-se no magatama (勾玉) e no elemento dinâmico unitário do mitsudomoe (a gota espiralada clássica). Essa topologia resolve em um único símbolo as duas forças que regem o simulador: - Na Eletrofisiologia (O Choque): Rotores são ondas espirais auto-sustentadas que giram em torno de uma singularidade de fase em meio excitável (reentrância funcional), representando a base matemática primordial das taquiarritmias e da fibrilação ventricular. - Na Hemodinâmica (O Fluxo): A mesma espiral descreve a formação dos anéis de vórtice transmitrais (vortex rings) durante o enchimento diastólico ventricular rápido, canalizando a inércia do sangue para a via de ejeção aórtica com máxima eficiência energética.

2. Eficiência de Silhueta e Traço Dinâmico

3. O Kanji e a Tipografia Integrada: kokor心sim

📖 Documento Conceitual Completo: Leia o ensaio ilustrado sobre a semiologia, geometria e fundamentação visual em Identidade Visual e Conceito do Logotipo.


🈯 Terminologia Médica em Kanji e Guia Bilíngue ↑

Inspirado nos painéis de telemetria analógica e eletrocardiógrafos hospitalares japoneses dos anos 80 e 90, o KokoroSim adota notação bilíngue em todos os seus instrumentos (HUD superior, canais de osciloscópio CRT e módulos do rack de controle lateral).

Todos os caracteres em Kanji e Katakana correspondem rigorosamente ao vocabulário médico, fisiológico e biofísico oficial utilizado no Japão (ex: 心拍数 para Frequência Cardíaca, 静止電位 para Potencial de Repouso, 抗不整脈薬 para Fármacos Antiarrítmicos e 活動電位 para Potencial de Ação Celular), com correspondente direto em português e unidades do Sistema Internacional.

🈯 Tabela Completa de Auditoria Filológica: Para consultar a pronúncia (rōmaji), a decomposição morfológica caractere por caractere e a correlação fisiológica detalhada de cada termo presente no simulador, acesse a página de Terminologia Médica em Kanji e Guia Bilíngue.


💻 Arquitetura de Software ↑


📖 Citação Acadêmica ↑

Se você utilizar o KokoroSim em pesquisas científicas, aulas práticas, monografias, dissertações, teses ou publicações acadêmicas, por favor cite conforme os formatos padronizados abaixo:

Formato ABNT (NBR 6023:2018)

FREITAS, Lumen Muller Lohn. KokoroSim: Simulador Cardíaco Open Source — Eletrofisiológico, Dromotrópico e Hemodinâmico. Versão 2.0.0. Florianópolis: Universidade Federal de Santa Catarina (UFSC), 2026. Disponível em: https://kokorosim.github.io/. Acesso em: [data de acesso].

Formato Vancouver

Freitas LML. KokoroSim: Simulador Cardíaco Open Source — Eletrofisiológico, Dromotrópico e Hemodinâmico [software na Internet]. Versão 2.0.0. Florianópolis: Universidade Federal de Santa Catarina; 2026 [citado em ano mês dia]. Disponível em: https://kokorosim.github.io/

Formato BibTeX

@software{freitas2026kokorosim,
  author       = {Freitas, Lumen Muller Lohn},
  title        = {KokoroSim: Simulador Cardíaco Open Source --- Eletrofisiológico, Dromotrópico e Hemodinâmico},
  year         = {2026},
  publisher    = {GitHub},
  journal      = {GitHub repository},
  howpublished = {\url{https://github.com/KokoroSim/KokoroSim}},
  url          = {https://kokorosim.github.io/}
}

💖 Agradecimentos e Dedicatória ↑

Este projeto não existiria sem as pessoas que guiaram meus passos nessa jornada e sustentam os meus dias:

À Universidade Federal de Santa Catarina (UFSC) e aos meus mestres:

Aos colegas e amigos:

À minha família e ao meu alicerce:


🕰️ Versão Histórica 1.0 (Protótipo Legado em TypeScript/Vite) ↑

Para fins históricos, didáticos e de comparação de desempenho e evolução da engenharia de software, a primeira versão do simulador permanece disponível online:

Como foi concebida e construída a v1.0

A versão 1.0 foi o protótipo inicial do projeto, desenvolvida em Vanilla TypeScript, empacotada com Vite e executada em um Web Worker que integrava as equações diferenciais pelo método explícito de Forward Euler em JavaScript puro para os modelos atrioventriculares iniciais, desenhando os traçados em um elemento Canvas 2D.

Por que o projeto foi completamente reescrito na v2.0 (Rust + WebAssembly + Dioxus)?

  1. Rigidez Numérica (Stiffness) e a Transição de Forward Euler para Rush-Larsen: À medida que a simulação incorporou novos modelos acoplados (Purkinje, as 3 camadas ventriculares transmurais e fibroblastos), a rigidez matemática dos canais rápidos de sódio ($\tau_m \approx 0.0008\text{ ms}$) impôs passos microscópicos de integração ($dt = 0.001\text{ ms}$). O navegador precisava processar mais de 8 milhões de avaliações de EDOs por segundo, saturando CPUs modestas e tornando a execução lenta e inviável em celulares. Na v2.0, a reescrita em Rust e a adoção do método de integração exponencial de Rush-Larsen (1978) permitiram multiplicar o passo em 10x ($dt = 0.01\text{ ms}$), reduzindo o consumo de CPU para < 5-10% com estabilidade numérica incondicional.
  2. Eliminação de Stuttering por Garbage Collection: O motor V8 do JavaScript sofria com pausas intermitentes de desalocação de memória (Garbage Collection) e desotimizações JIT causadas pelo volume constante de arrays transitórios, provocando micro-travamentos no osciloscópio. O WebAssembly em Rust roda com determinismo estrito, latência zero de GC e taxa contínua de 60 FPS.
  3. Memória Linear Compartilhada (Zero-Copy): Na arquitetura antiga, os buffers de pontos precisavam ser serializados e copiados via mensagens entre o Web Worker e a thread principal de renderização. Na v2.0, a interface reativa em Dioxus e o motor biofísico operam no mesmo espaço de memória linear contígua do Wasm sem nenhuma cópia de dados.

📜 Licença ↑

Distribuído sob a licença GNU General Public License v3.0 (GPLv3). Consulte o arquivo LICENSE para mais detalhes.