<?php

 /**
 * traumacalc: a Trauma Score Calculator (AIS, ISS, RTS, TRISS) in DokuWiki
 *
 * @license GPL 2 http://www.gnu.org/licenses/gpl-2.0.html
 * @author dodotori@dokuwikiforum <dodotori@dokuwikiforum>
 */

if (!defined('DOKU_INC')) die();

class syntax_plugin_traumacalc extends DokuWiki_Syntax_Plugin {
    function getType() {
        return 'substition';
    }

    function getPType() {
        return 'block';
    }

    function getSort() {
        return 157;
    }

    function connectTo($mode) {
        $this->Lexer->addSpecialPattern('<traumacalc>', $mode, 'plugin_traumacalc');
    }

    function handle($match, $state, $pos, Doku_Handler $handler) {
        return array();
    }

    function render($mode, Doku_Renderer $renderer, $data) {
        if ($mode !== 'xhtml') return false;


  //      $renderer->doc .= '<script type="text/javascript" src="' . DOKU_BASE . 'lib/plugins/traumacalc/script.js"></script>';

        // HTML for the calculator with prefixed IDs and coefficient selection
        $html = '
        <div class="traumacalc">
            <h1>Trauma Score Calculator</h1>

            <!-- ISS Section -->
            <div class="section">
                <h2>Injury Severity Score (ISS)</h2>
                <label for="traumacalc_head">Head:</label>
                <select id="traumacalc_head">
                    <option value="0">0: No injury</option>
                    <option value="1">1: Minor (e.g., superficial laceration, mild contusion)</option>
                    <option value="2">2: Moderate (e.g., simple fracture, moderate laceration)</option>
                    <option value="3">3: Serious (e.g., open fracture, significant organ injury)</option>
                    <option value="4">4: Severe (e.g., major vessel laceration, substantial blood loss)</option>
                    <option value="5">5: Critical (e.g., massive hemorrhage, severe brain injury)</option>
                    <option value="6">6: Maximum/Untreatable (e.g., decapitation, crush of vital organs)</option>
                </select><br>
                <label for="traumacalc_face">Face:</label>
                <select id="traumacalc_face">
                    <option value="0">0: No injury</option>
                    <option value="1">1: Minor (e.g., superficial laceration, mild contusion)</option>
                    <option value="2">2: Moderate (e.g., simple fracture, moderate laceration)</option>
                    <option value="3">3: Serious (e.g., open fracture, significant organ injury)</option>
                    <option value="4">4: Severe (e.g., major vessel laceration, substantial blood loss)</option>
                    <option value="5">5: Critical (e.g., massive hemorrhage, severe brain injury)</option>
                    <option value="6">6: Maximum/Untreatable (e.g., decapitation, crush of vital organs)</option>
                </select><br>
                <label for="traumacalc_chest">Chest:</label>
                <select id="traumacalc_chest">
                    <option value="0">0: No injury</option>
                    <option value="1">1: Minor (e.g., superficial laceration, mild contusion)</option>
                    <option value="2">2: Moderate (e.g., simple fracture, moderate laceration)</option>
                    <option value="3">3: Serious (e.g., open fracture, significant organ injury)</option>
                    <option value="4">4: Severe (e.g., major vessel laceration, substantial blood loss)</option>
                    <option value="5">5: Critical (e.g., massive hemorrhage, severe brain injury)</option>
                    <option value="6">6: Maximum/Untreatable (e.g., decapitation, crush of vital organs)</option>
                </select><br>
                <label for="traumacalc_abdomen">Abdomen:</label>
                <select id="traumacalc_abdomen">
                    <option value="0">0: No injury</option>
                    <option value="1">1: Minor (e.g., superficial laceration, mild contusion)</option>
                    <option value="2">2: Moderate (e.g., simple fracture, moderate laceration)</option>
                    <option value="3">3: Serious (e.g., open fracture, significant organ injury)</option>
                    <option value="4">4: Severe (e.g., major vessel laceration, substantial blood loss)</option>
                    <option value="5">5: Critical (e.g., massive hemorrhage, severe brain injury)</option>
                    <option value="6">6: Maximum/Untreatable (e.g., decapitation, crush of vital organs)</option>
                </select><br>
                <label for="traumacalc_extremity">Extremity:</label>
                <select id="traumacalc_extremity">
                    <option value="0">0: No injury</option>
                    <option value="1">1: Minor (e.g., superficial laceration, mild contusion)</option>
                    <option value="2">2: Moderate (e.g., simple fracture, moderate laceration)</option>
                    <option value="3">3: Serious (e.g., open fracture, significant organ injury)</option>
                    <option value="4">4: Severe (e.g., major vessel laceration, substantial blood loss)</option>
                    <option value="5">5: Critical (e.g., massive hemorrhage, severe brain injury)</option>
                    <option value="6">6: Maximum/Untreatable (e.g., decapitation, crush of vital organs)</option>
                </select><br>
                <label for="traumacalc_external">External:</label>
                <select id="traumacalc_external">
                    <option value="0">0: No injury</option>
                    <option value="1">1: Minor (e.g., superficial laceration, mild contusion)</option>
                    <option value="2">2: Moderate (e.g., simple fracture, moderate laceration)</option>
                    <option value="3">3: Serious (e.g., open fracture, significant organ injury)</option>
                    <option value="4">4: Severe (e.g., major vessel laceration, substantial blood loss)</option>
                    <option value="5">5: Critical (e.g., massive hemorrhage, severe brain injury)</option>
                    <option value="6">6: Maximum/Untreatable (e.g., decapitation, crush of vital organs)</option>
                </select><br>
                <label for="traumacalc_iss">ISS:</label>
                <input type="text" id="traumacalc_iss" readonly>
            </div>

            <!-- RTS Section -->
            <div class="section">
                <h2>Revised Trauma Score (RTS)</h2>
                <label for="traumacalc_sbp">Systolic BP:</label>
                <input type="text" id="traumacalc_sbp" placeholder="0-299"><br>
                <label for="traumacalc_rr">Resp. Rate:</label>
                <input type="text" id="traumacalc_rr" placeholder="0-80"><br>
                <label for="traumacalc_gcs">GCS:</label>
                <input type="text" id="traumacalc_gcs" placeholder="3-15"><br>
                <label for="traumacalc_rts">RTS:</label>
                <input type="text" id="traumacalc_rts" readonly>
            </div>

            <!-- TRISS Section -->
            <div class="section">
                <h2>TRISS</h2>
                <label for="traumacalc_age">Age:</label>
                <input type="text" id="traumacalc_age" placeholder="0-120"><br>

                <label for="traumacalc_trissBlunt">Blunt:</label>
                <input type="text" id="traumacalc_trissBlunt" readonly><br>
                <label for="traumacalc_trissPenetrating">Penetrating:</label>
                <input type="text" id="traumacalc_trissPenetrating" readonly>
                
                                  <label for="traumacalc_coeff">Coefficient Set:</label>
                <select id="traumacalc_coeff">
                    <option value="standard">Standard</option>
                    <option value="qmh">Queen Mary Hospital (QMH)</option>
                </select><br>
            </div>

            <!-- Buttons -->
            <button onclick="calculateAll()">Calculate</button>
            <button onclick="clearAll()">Clear</button>
        </div>';

        $renderer->doc .= $html;
        return true;
    }
}