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}