1<?php 2 3 /** 4 * traumacalc: a Trauma Score Calculator (AIS, ISS, RTS, TRISS) in DokuWiki 5 * 6 * @license GPL 2 http://www.gnu.org/licenses/gpl-2.0.html 7 * @author dodotori@dokuwikiforum <dodotori@dokuwikiforum> 8 */ 9 10if (!defined('DOKU_INC')) die(); 11 12class syntax_plugin_traumacalc extends DokuWiki_Syntax_Plugin { 13 function getType() { 14 return 'substition'; 15 } 16 17 function getPType() { 18 return 'block'; 19 } 20 21 function getSort() { 22 return 157; 23 } 24 25 function connectTo($mode) { 26 $this->Lexer->addSpecialPattern('<traumacalc>', $mode, 'plugin_traumacalc'); 27 } 28 29 function handle($match, $state, $pos, Doku_Handler $handler) { 30 return array(); 31 } 32 33 function render($mode, Doku_Renderer $renderer, $data) { 34 if ($mode !== 'xhtml') return false; 35 36 37 // $renderer->doc .= '<script type="text/javascript" src="' . DOKU_BASE . 'lib/plugins/traumacalc/script.js"></script>'; 38 39 // HTML for the calculator with prefixed IDs and coefficient selection 40 $html = ' 41 <div class="traumacalc"> 42 <h1>Trauma Score Calculator</h1> 43 44 <!-- ISS Section --> 45 <div class="section"> 46 <h2>Injury Severity Score (ISS)</h2> 47 <label for="traumacalc_head">Head:</label> 48 <select id="traumacalc_head"> 49 <option value="0">0: No injury</option> 50 <option value="1">1: Minor (e.g., superficial laceration, mild contusion)</option> 51 <option value="2">2: Moderate (e.g., simple fracture, moderate laceration)</option> 52 <option value="3">3: Serious (e.g., open fracture, significant organ injury)</option> 53 <option value="4">4: Severe (e.g., major vessel laceration, substantial blood loss)</option> 54 <option value="5">5: Critical (e.g., massive hemorrhage, severe brain injury)</option> 55 <option value="6">6: Maximum/Untreatable (e.g., decapitation, crush of vital organs)</option> 56 </select><br> 57 <label for="traumacalc_face">Face:</label> 58 <select id="traumacalc_face"> 59 <option value="0">0: No injury</option> 60 <option value="1">1: Minor (e.g., superficial laceration, mild contusion)</option> 61 <option value="2">2: Moderate (e.g., simple fracture, moderate laceration)</option> 62 <option value="3">3: Serious (e.g., open fracture, significant organ injury)</option> 63 <option value="4">4: Severe (e.g., major vessel laceration, substantial blood loss)</option> 64 <option value="5">5: Critical (e.g., massive hemorrhage, severe brain injury)</option> 65 <option value="6">6: Maximum/Untreatable (e.g., decapitation, crush of vital organs)</option> 66 </select><br> 67 <label for="traumacalc_chest">Chest:</label> 68 <select id="traumacalc_chest"> 69 <option value="0">0: No injury</option> 70 <option value="1">1: Minor (e.g., superficial laceration, mild contusion)</option> 71 <option value="2">2: Moderate (e.g., simple fracture, moderate laceration)</option> 72 <option value="3">3: Serious (e.g., open fracture, significant organ injury)</option> 73 <option value="4">4: Severe (e.g., major vessel laceration, substantial blood loss)</option> 74 <option value="5">5: Critical (e.g., massive hemorrhage, severe brain injury)</option> 75 <option value="6">6: Maximum/Untreatable (e.g., decapitation, crush of vital organs)</option> 76 </select><br> 77 <label for="traumacalc_abdomen">Abdomen:</label> 78 <select id="traumacalc_abdomen"> 79 <option value="0">0: No injury</option> 80 <option value="1">1: Minor (e.g., superficial laceration, mild contusion)</option> 81 <option value="2">2: Moderate (e.g., simple fracture, moderate laceration)</option> 82 <option value="3">3: Serious (e.g., open fracture, significant organ injury)</option> 83 <option value="4">4: Severe (e.g., major vessel laceration, substantial blood loss)</option> 84 <option value="5">5: Critical (e.g., massive hemorrhage, severe brain injury)</option> 85 <option value="6">6: Maximum/Untreatable (e.g., decapitation, crush of vital organs)</option> 86 </select><br> 87 <label for="traumacalc_extremity">Extremity:</label> 88 <select id="traumacalc_extremity"> 89 <option value="0">0: No injury</option> 90 <option value="1">1: Minor (e.g., superficial laceration, mild contusion)</option> 91 <option value="2">2: Moderate (e.g., simple fracture, moderate laceration)</option> 92 <option value="3">3: Serious (e.g., open fracture, significant organ injury)</option> 93 <option value="4">4: Severe (e.g., major vessel laceration, substantial blood loss)</option> 94 <option value="5">5: Critical (e.g., massive hemorrhage, severe brain injury)</option> 95 <option value="6">6: Maximum/Untreatable (e.g., decapitation, crush of vital organs)</option> 96 </select><br> 97 <label for="traumacalc_external">External:</label> 98 <select id="traumacalc_external"> 99 <option value="0">0: No injury</option> 100 <option value="1">1: Minor (e.g., superficial laceration, mild contusion)</option> 101 <option value="2">2: Moderate (e.g., simple fracture, moderate laceration)</option> 102 <option value="3">3: Serious (e.g., open fracture, significant organ injury)</option> 103 <option value="4">4: Severe (e.g., major vessel laceration, substantial blood loss)</option> 104 <option value="5">5: Critical (e.g., massive hemorrhage, severe brain injury)</option> 105 <option value="6">6: Maximum/Untreatable (e.g., decapitation, crush of vital organs)</option> 106 </select><br> 107 <label for="traumacalc_iss">ISS:</label> 108 <input type="text" id="traumacalc_iss" readonly> 109 </div> 110 111 <!-- RTS Section --> 112 <div class="section"> 113 <h2>Revised Trauma Score (RTS)</h2> 114 <label for="traumacalc_sbp">Systolic BP:</label> 115 <input type="text" id="traumacalc_sbp" placeholder="0-299"><br> 116 <label for="traumacalc_rr">Resp. Rate:</label> 117 <input type="text" id="traumacalc_rr" placeholder="0-80"><br> 118 <label for="traumacalc_gcs">GCS:</label> 119 <input type="text" id="traumacalc_gcs" placeholder="3-15"><br> 120 <label for="traumacalc_rts">RTS:</label> 121 <input type="text" id="traumacalc_rts" readonly> 122 </div> 123 124 <!-- TRISS Section --> 125 <div class="section"> 126 <h2>TRISS</h2> 127 <label for="traumacalc_age">Age:</label> 128 <input type="text" id="traumacalc_age" placeholder="0-120"><br> 129 130 <label for="traumacalc_trissBlunt">Blunt:</label> 131 <input type="text" id="traumacalc_trissBlunt" readonly><br> 132 <label for="traumacalc_trissPenetrating">Penetrating:</label> 133 <input type="text" id="traumacalc_trissPenetrating" readonly> 134 135 <label for="traumacalc_coeff">Coefficient Set:</label> 136 <select id="traumacalc_coeff"> 137 <option value="standard">Standard</option> 138 <option value="qmh">Queen Mary Hospital (QMH)</option> 139 </select><br> 140 </div> 141 142 <!-- Buttons --> 143 <button onclick="calculateAll()">Calculate</button> 144 <button onclick="clearAll()">Clear</button> 145 </div>'; 146 147 $renderer->doc .= $html; 148 return true; 149 } 150}