diff --git a/CHANGELOG.md b/CHANGELOG.md
index d6b0e1e..4fe802d 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -5,6 +5,8 @@ Todas as mudanças significativas nesse projeto serão documentadas neste arquiv
O formato é baseado em [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), e este projeto adere ao [Versionamento Semântico](https://semver.org/spec/v2.0.0.html).
## [Não Publicado][Unreleased]
+
+## [2.15.0]
### Adicionado
- Roncos de transmissão nasal a ambos *Exame Físico* e *Sintomáticos Respiratórios*.
- *Exame Físico*:
@@ -15,6 +17,13 @@ O formato é baseado em [Keep a Changelog](https://keepachangelog.com/en/1.0.0/)
- Varizes.
- Declinação de gênero (pronomes).
- Dispositivos/Invasões.
+ - Escores:
+ - ABCD².
+ - Well's para TVP.
+ - Well's para TEP.
+ - MASCC.
+ - PESI.
+ - PORT.
- Modelo de atendimento de *Acidente Pérfuro-Cortante*.
- Modelo de atendimento de *Dengue*.
- Modelo de *Buxo*.
@@ -158,7 +167,8 @@ O formato é baseado em [Keep a Changelog](https://keepachangelog.com/en/1.0.0/)
- Página de Requisição de Implanon.
- Página de Exame Físico genérico.
-[Unreleased]: https://github.com/Nereare/modelos-pront/compare/v2.10.14...HEAD
+[Unreleased]: https://github.com/Nereare/modelos-pront/compare/v2.15.0...HEAD
+[2.15.0]: https://github.com/Nereare/modelos-pront/compare/v2.10.14...v2.15.0
[2.10.14]: https://github.com/Nereare/modelos-pront/compare/v2.10.5-r1...v2.10.14
[2.10.5-r1]: https://github.com/Nereare/modelos-pront/compare/v2.10.5...v2.10.5-r1
[2.10.5]: https://github.com/Nereare/modelos-pront/compare/v2.5.3...v2.10.5
diff --git a/hospital.php b/hospital.php
index f2cb426..06ee3d4 100644
--- a/hospital.php
+++ b/hospital.php
@@ -3446,6 +3446,918 @@
+
+
+
+
+
+
+
+
+ Escores
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Neuro
+
+
+
+
+ Sem déficits
+ Disartria/Afasia
+ Hemiparesia
+
+
+
+
+
+
+
+ Duração
+
+
+
+
+ <10min
+ ≥10min e <60min
+ ≥60min
+
+
+
+
+
+
+
+ DM
+
+
+
+
+ Ausente
+ Presente
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Câncer ativo (≤6 meses)?
+
+
+
+
+
+
+ Acamado >3d OU Cx gde porte (≤12sem)?
+
+
+
+
+
+
+ Edema assimétrico >3cm?
+
+
+
+
+
+
+ Veias sup. colaterais?
+
+
+
+
+
+
+ Edema de todo o membro?
+
+
+
+
+
+
+ Edema respeitando sistema venoso prof?
+
+
+
+
+
+
+ Godet unilateral?
+
+
+
+
+
+
+ Imobilização/Paresia recente?
+
+
+
+
+
+
+
+
+ Dx alternativo tão ou mais provável?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Suspeita de TVP?
+
+
+
+
+
+
+
+
+
+
+ Acamado >3d OU Cx gde porte (≤12sem)?
+
+
+
+
+
+
+ TVP ou TEP prévio?
+
+
+
+
+
+
+
+
+ Câncer ativo (≤6 meses)?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Sexo Biológico
+
+
+
+
+ Fêmea
+ Macho
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Alt. de Estado Mental?
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Severidade de Sintomas
+
+
+
+
+ Nenhum ou Leve
+ Moderada
+ Severa
+
+
+
+
+
+
+
+
+
+ DPOC / DVO / Supl O2
+
+
+
+
+
+
+ Tipo de Tumor
+
+
+
+
+ TU Sólido
+ Hematológico / Sem infec. fúngica prévia
+ Hematológico / COM infec. fúngica prévia
+
+
+
+
+
+
+
+ Necessidade de Exp. Volêmica
+
+
+
+
+
+
+ Febre iniciada...
+
+
+
+
+ Ambulatorialmente
+ Internado
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Sexo Biológico
+
+
+
+
+ Fêmea
+ Macho
+
+
+
+
+
+
+
+
+
+
+
+ Doença hepática?
+
+
+
+
+
+
+
+
+
+
+
+
+ Alt. estado mental?
+
+
+
+
+
+
+
+
+
+
+ Temp<35°C OU ≥40°C?
+
+
+
+
+
+
+
+
+
+
+ Ureia ≥30mg/dL?
+
+
+
+
+
+
+
+
+ Glic ≥250mg/dL?
+
+
+
+
+
+
+
+
+
+
+ Derrame pleural?
+
+
+
+
+
+
+
+
Resultado
diff --git a/js/hospital.js b/js/hospital.js
index 69c4f73..e7d3d29 100644
--- a/js/hospital.js
+++ b/js/hospital.js
@@ -1375,6 +1375,339 @@ $(function() {
if (cvc.length > 0) { o.push("CVC: " + cvc.join("; ") + "."); }
}
+ // Scores
+ if (
+ $("#score-abcd2").is(":checked") ||
+ $("#wells-dvt").is(":checked") ||
+ $("#score-wells-pe").is(":checked") ||
+ $("#score-pesi").is(":checked") ||
+ $("#score-mascc").is(":checked") ||
+ $("#score-port").is(":checked")
+ ) {
+ o.push("");
+ }
+ // ABCD²
+ if ( $("#score-abcd2").is(":checked") ) {
+ let score = 0;
+ // Parse age
+ let age = parseInt($("#abcd2-age").val());
+ age = isNaN(age) ? 60 : age;
+ if (age >= 60) { score++; }
+ // Parse BP
+ let pas = parseInt($("#ssvv-pas").val());
+ pas = isNaN(pas) ? 140 : pas;
+ let pad = parseInt($("#ssvv-pad").val());
+ pad = isNaN(pad) ? 90 : pad;
+ if (pas >= 140 || pad >= 90) { score++; }
+ // Parse neurological signs
+ let neuro = parseInt($("#abcd2-features").val());
+ neuro = isNaN(neuro) ? 1 : neuro;
+ score += neuro;
+ // Parse duration
+ let duration = parseInt($("#abcd2-duration").val());
+ duration = isNaN(duration) ? 1 : duration;
+ score += duration;
+ // Parse Diabetes
+ let dm = ($("#abcd2-dm").val() == "0") ? 0 : 1;
+ score += dm;
+ // Push result
+ o.push("# ABCD² = " + score);
+ }
+ // Well's for DVT
+ if ( $("#score-wells-dvt").is(":checked") ) {
+ let score = 0;
+ let pt = 0;
+ // Parse question #1
+ pt = parseInt($("#wells-dvt-1").val());
+ pt = isNaN(pt) ? 0 : pt;
+ score += pt;
+ // Parse question #2
+ pt = parseInt($("#wells-dvt-2").val());
+ pt = isNaN(pt) ? 0 : pt;
+ score += pt;
+ // Parse question #3
+ pt = parseInt($("#wells-dvt-3").val());
+ pt = isNaN(pt) ? 0 : pt;
+ score += pt;
+ // Parse question #4
+ pt = parseInt($("#wells-dvt-4").val());
+ pt = isNaN(pt) ? 0 : pt;
+ score += pt;
+ // Parse question #5
+ pt = parseInt($("#wells-dvt-5").val());
+ pt = isNaN(pt) ? 0 : pt;
+ score += pt;
+ // Parse question #6
+ pt = parseInt($("#wells-dvt-6").val());
+ pt = isNaN(pt) ? 0 : pt;
+ score += pt;
+ // Parse question #7
+ pt = parseInt($("#wells-dvt-7").val());
+ pt = isNaN(pt) ? 0 : pt;
+ score += pt;
+ // Parse question #8
+ pt = parseInt($("#wells-dvt-8").val());
+ pt = isNaN(pt) ? 0 : pt;
+ score += pt;
+ // Parse question #9
+ pt = parseInt($("#wells-dvt-9").val());
+ pt = isNaN(pt) ? 0 : pt;
+ score += pt;
+ // Parse question #10
+ pt = parseInt($("#wells-dvt-10").val());
+ pt = isNaN(pt) ? 0 : pt;
+ score += pt;
+ // Push result
+ o.push("# Well's (TVP) = " + score);
+ }
+ // Well's for PE
+ if ( $("#score-wells-pe").is(":checked") ) {
+ let score = 0;
+ let pt = 0;
+ // Parse question #1
+ pt = parseInt($("#wells-pe-1").val());
+ pt = isNaN(pt) ? 0 : pt;
+ score += pt;
+ // Parse question #2
+ pt = parseInt($("#wells-pe-2").val());
+ pt = isNaN(pt) ? 0 : pt;
+ score += pt;
+ // Parse question #3
+ pt = parseInt($("#wells-pe-3").val());
+ pt = isNaN(pt) ? 0 : pt;
+ score += pt;
+ // Parse question #4
+ pt = parseInt($("#wells-pe-4").val());
+ pt = isNaN(pt) ? 0 : pt;
+ score += pt;
+ // Parse question #5
+ pt = parseInt($("#wells-pe-5").val());
+ pt = isNaN(pt) ? 0 : pt;
+ score += pt;
+ // Parse question #6
+ pt = parseInt($("#wells-pe-6").val());
+ pt = isNaN(pt) ? 0 : pt;
+ score += pt;
+ // Parse question #7
+ pt = parseInt($("#wells-pe-7").val());
+ pt = isNaN(pt) ? 0 : pt;
+ score += pt;
+ // Push result
+ o.push("# Well's (TEP) = " + score);
+ }
+ // PESI
+ if ( $("#score-pesi").is(":checked") ) {
+ let score = 0;
+ let pt = 0;
+ // Parse question #1
+ pt = parseInt($("#wells-pe-1").val());
+ pt = isNaN(pt) ? 0 : pt;
+ score += pt;
+ // Parse question #2
+ pt = parseInt($("#wells-pe-2").val());
+ pt = isNaN(pt) ? 0 : pt;
+ score += pt;
+ // Parse question #3
+ pt = parseInt($("#wells-pe-3").val());
+ pt = isNaN(pt) ? 0 : pt;
+ score += pt;
+ // Parse question #4
+ pt = parseInt($("#wells-pe-4").val());
+ pt = isNaN(pt) ? 0 : pt;
+ score += pt;
+ // Parse question #5
+ pt = parseInt($("#wells-pe-5").val());
+ pt = isNaN(pt) ? 0 : pt;
+ score += pt;
+ // Parse question #6
+ pt = parseInt($("#wells-pe-6").val());
+ pt = isNaN(pt) ? 0 : pt;
+ score += pt;
+ // Parse question #7
+ pt = parseInt($("#wells-pe-7").val());
+ pt = isNaN(pt) ? 0 : pt;
+ score += pt;
+ // Parse question #8
+ pt = parseInt($("#wells-pe-8").val());
+ pt = isNaN(pt) ? 0 : pt;
+ score += pt;
+ // Parse question #9
+ pt = parseInt($("#wells-pe-9").val());
+ pt = isNaN(pt) ? 0 : pt;
+ score += pt;
+ // Parse question #10
+ pt = parseInt($("#wells-pe-10").val());
+ pt = isNaN(pt) ? 0 : pt;
+ score += pt;
+ // Parse question #11
+ pt = parseInt($("#wells-pe-11").val());
+ pt = isNaN(pt) ? 0 : pt;
+ score += pt;
+ // Parse class
+ let classification = null;
+ let c_num = null;
+ if (score <= 65) {
+ c_num = "I";
+ classification = "Muito Baixo Risco";
+ } else if (score <= 85) {
+ c_num = "II";
+ classification = "Baixo Risco";
+ } else if (score <= 105) {
+ c_num = "III";
+ classification = "Risco Intermediário";
+ } else if (score <= 125) {
+ c_num = "IV";
+ classification = "Alto Risco";
+ } else {
+ c_num = "V";
+ classification = "Muito Alto Risco";
+ }
+ // Push result
+ o.push("# PESI = Classe " + c_num + " (" + classification + "; " + score + "pts)");
+ }
+ // MASCC
+ if ( $("#score-mascc").is(":checked") ) {
+ let score = 0;
+ let pt = 0;
+ // Parse question #1
+ pt = parseInt($("#mascc-1").val());
+ pt = isNaN(pt) ? 0 : pt;
+ score += pt;
+ // Parse question #2
+ pt = parseInt($("#mascc-2").val());
+ pt = isNaN(pt) ? 0 : pt;
+ score += pt;
+ // Parse question #3
+ pt = parseInt($("#mascc-3").val());
+ pt = isNaN(pt) ? 0 : pt;
+ score += pt;
+ // Parse question #4
+ pt = parseInt($("#mascc-4").val());
+ pt = isNaN(pt) ? 0 : pt;
+ score += pt;
+ // Parse question #5
+ pt = parseInt($("#mascc-5").val());
+ pt = isNaN(pt) ? 0 : pt;
+ score += pt;
+ // Parse question #6
+ pt = parseInt($("#mascc-6").val());
+ pt = isNaN(pt) ? 0 : pt;
+ score += pt;
+ // Parse question #7
+ pt = parseInt($("#mascc-7").val());
+ pt = isNaN(pt) ? 60 : pt;
+ score += (pt < 0) ? 2 : 0;
+ // Parse class
+ let classification = null;
+ if (score < 21) {
+ classification = "ALTO Risco";
+ } else {
+ classification = "Baixo Risco";
+ }
+ // Push result
+ o.push("# MASCC de " + classification + " (" + score + "pts)");
+ }
+ // PORT/PSI
+ if ( $("#score-port").is(":checked") ) {
+ let score = 0;
+ let pt = 0;
+ // Parse question #1
+ pt = parseInt($("#port-1").val());
+ pt = isNaN(pt) ? 60 : pt;
+ score += pt;
+ // Parse question #2
+ pt = parseInt($("#port-2").val());
+ pt = isNaN(pt) ? 0 : pt;
+ score += pt;
+ // Parse question #3
+ pt = parseInt($("#port-3").val());
+ pt = isNaN(pt) ? 0 : pt;
+ score += pt;
+ // Parse question #3
+ pt = parseInt($("#port-3").val());
+ pt = isNaN(pt) ? 0 : pt;
+ score += pt;
+ // Parse question #4
+ pt = parseInt($("#port-4").val());
+ pt = isNaN(pt) ? 0 : pt;
+ score += pt;
+ // Parse question #5
+ pt = parseInt($("#port-5").val());
+ pt = isNaN(pt) ? 0 : pt;
+ score += pt;
+ // Parse question #6
+ pt = parseInt($("#port-6").val());
+ pt = isNaN(pt) ? 0 : pt;
+ score += pt;
+ // Parse question #7
+ pt = parseInt($("#port-7").val());
+ pt = isNaN(pt) ? 0 : pt;
+ score += pt;
+ // Parse question #8
+ pt = parseInt($("#port-8").val());
+ pt = isNaN(pt) ? 0 : pt;
+ score += pt;
+ // Parse question #9
+ pt = parseInt($("#port-9").val());
+ pt = isNaN(pt) ? 0 : pt;
+ score += pt;
+ // Parse question #10
+ pt = parseInt($("#port-10").val());
+ pt = isNaN(pt) ? 0 : pt;
+ score += pt;
+ // Parse question #11
+ pt = parseInt($("#port-11").val());
+ pt = isNaN(pt) ? 0 : pt;
+ score += pt;
+ // Parse question #12
+ pt = parseInt($("#port-12").val());
+ pt = isNaN(pt) ? 0 : pt;
+ score += pt;
+ // Parse question #13
+ pt = parseInt($("#port-13").val());
+ pt = isNaN(pt) ? 0 : pt;
+ score += pt;
+ // Parse question #14
+ pt = parseInt($("#port-14").val());
+ pt = isNaN(pt) ? 0 : pt;
+ score += pt;
+ // Parse question #15
+ pt = parseInt($("#port-15").val());
+ pt = isNaN(pt) ? 0 : pt;
+ score += pt;
+ // Parse question #16
+ pt = parseInt($("#port-16").val());
+ pt = isNaN(pt) ? 0 : pt;
+ score += pt;
+ // Parse question #17
+ pt = parseInt($("#port-17").val());
+ pt = isNaN(pt) ? 0 : pt;
+ score += pt;
+ // Parse question #18
+ pt = parseInt($("#port-18").val());
+ pt = isNaN(pt) ? 0 : pt;
+ score += pt;
+ // Parse question #19
+ pt = parseInt($("#port-19").val());
+ pt = isNaN(pt) ? 0 : pt;
+ score += pt;
+ // Parse question #20
+ pt = parseInt($("#port-20").val());
+ pt = isNaN(pt) ? 0 : pt;
+ score += pt;
+ // Parse class
+ let classification = null;
+ let desc = null;
+ if (score < 50 && $("#port-2").val() == "0") { classification = "I"; }
+ else if (score < 40) { classification = "I"; }
+ else if (score <= 70) { classification = "II"; }
+ else if (score <= 90) { classification = "III"; }
+ else if (score <= 130) { classification = "IV"; }
+ else { classification = "V"; }
+ // Push result
+ o.push("# PORT Classe " + classification + " (" + score + "pts)");
+ }
+
$("#output-o").val( o.join("\n") );
});
});
diff --git a/meta.php b/meta.php
index 7879124..9ffb16d 100644
--- a/meta.php
+++ b/meta.php
@@ -4,7 +4,7 @@
define("APP_YEAR", "2021-2023");
define("APP_LICENSE_NAME", "Licença Hipocrática");
define("APP_LICENSE_URI", "https://firstdonoharm.dev/");
-define("APP_VERSION", "2.14.4");
+define("APP_VERSION", "2.15.0");
define("MODELS", [
"sr" => [
diff --git a/package.json b/package.json
index 3b7340c..b2c2d7d 100644
--- a/package.json
+++ b/package.json
@@ -1,7 +1,7 @@
{
"name": "modelos-pront",
"description": "Uma miscelânea de modelos de evolução de consultas com tópicos específicos.",
- "version": "2.14.4",
+ "version": "2.15.0",
"maintainers": [
{
"name": "Igor Padoim",