diff --git a/app/Views/billing/ipd/discharge_create.php b/app/Views/billing/ipd/discharge_create.php index 1b6b0af..c34ec07 100644 --- a/app/Views/billing/ipd/discharge_create.php +++ b/app/Views/billing/ipd/discharge_create.php @@ -1663,6 +1663,131 @@ $allergyStatusNoKnown = in_array($allergyStatusNormalized, ['no known drug aller statusEl.textContent = text || ''; } + // Client-side complaint management (OPD-style) - MUST BE DECLARED BEFORE initComplaintTools + var selectedDischargeComplaints = []; + + function initDischargeComplaintsTable() { + // Load existing complaints from PHP (if any) + + selectedDischargeComplaints = [ + + { + id: , + term: , + frequency: '', + severity: '', + duration: , + date: '' + }, + + ]; + + + renderDischargeComplaintTable(); + } + + function renderDischargeComplaintTable() { + var tbody = document.getElementById('discharge_complaint_tbody'); + if (!tbody) return; + + tbody.innerHTML = ''; + + if (selectedDischargeComplaints.length === 0) { + tbody.innerHTML = 'No complaints yet. Add using the input below.'; + return; + } + + selectedDischargeComplaints.forEach(function(item, idx) { + var tr = document.createElement('tr'); + tr.setAttribute('data-idx', idx); + + // # column + var td1 = document.createElement('td'); + td1.className = 'text-center text-muted'; + td1.textContent = idx + 1; + tr.appendChild(td1); + + // Complaint name + var td2 = document.createElement('td'); + td2.className = 'p-1'; + var nameInput = document.createElement('input'); + nameInput.type = 'text'; + nameInput.className = 'form-control form-control-sm'; + nameInput.value = item.term || ''; + nameInput.placeholder = 'Complaint…'; + nameInput.style.fontSize = '.82rem'; + nameInput.setAttribute('data-idx', idx); + nameInput.addEventListener('input', function() { + selectedDischargeComplaints[idx].term = this.value; + }); + td2.appendChild(nameInput); + tr.appendChild(td2); + + // Frequency + var td3 = document.createElement('td'); + td3.className = 'p-1'; + var freqInput = document.createElement('input'); + freqInput.type = 'text'; + freqInput.className = 'form-control form-control-sm'; + freqInput.value = item.frequency || ''; + freqInput.placeholder = 'daily…'; + freqInput.style.fontSize = '.82rem'; + freqInput.addEventListener('input', function() { + selectedDischargeComplaints[idx].frequency = this.value; + }); + td3.appendChild(freqInput); + tr.appendChild(td3); + + // Severity + var td4 = document.createElement('td'); + td4.className = 'p-1'; + var sevInput = document.createElement('input'); + sevInput.type = 'text'; + sevInput.className = 'form-control form-control-sm'; + sevInput.value = item.severity || ''; + sevInput.placeholder = 'mild…'; + sevInput.style.fontSize = '.82rem'; + sevInput.addEventListener('input', function() { + selectedDischargeComplaints[idx].severity = this.value; + }); + td4.appendChild(sevInput); + tr.appendChild(td4); + + // Duration + var td5 = document.createElement('td'); + td5.className = 'p-1'; + var durInput = document.createElement('input'); + durInput.type = 'text'; + durInput.className = 'form-control form-control-sm'; + durInput.value = item.duration || ''; + durInput.placeholder = '2 days…'; + durInput.style.fontSize = '.82rem'; + durInput.addEventListener('input', function() { + selectedDischargeComplaints[idx].duration = this.value; + }); + td5.appendChild(durInput); + tr.appendChild(td5); + + // Remove button + var td6 = document.createElement('td'); + td6.className = 'p-1 text-center'; + var removeBtn = document.createElement('button'); + removeBtn.type = 'button'; + removeBtn.className = 'btn btn-sm text-danger p-0'; + removeBtn.style.lineHeight = '1'; + removeBtn.style.fontSize = '.9rem'; + removeBtn.innerHTML = '×'; + removeBtn.addEventListener('click', function() { + selectedDischargeComplaints.splice(idx, 1); + renderDischargeComplaintTable(); + }); + td6.appendChild(removeBtn); + tr.appendChild(td6); + + tbody.appendChild(tr); + }); + } + function initComplaintTools() { var section = document.getElementById('section-complaints'); if (!section || section.dataset.toolsBound === '1') { @@ -1960,138 +2085,6 @@ $allergyStatusNoKnown = in_array($allergyStatusNormalized, ['no known drug aller initDischargeComplaintsTable(); } - // Client-side complaint management (OPD-style) - var selectedDischargeComplaints = []; - - function initDischargeComplaintsTable() { - // Load existing complaints from PHP (if any) - - selectedDischargeComplaints = [ - - { - id: , - term: , - frequency: '', - severity: '', - duration: , - date: '' - }, - - ]; - - - renderDischargeComplaintTable(); - } - - function renderDischargeComplaintTable() { - var tbody = document.getElementById('discharge_complaint_tbody'); - if (!tbody) return; - - tbody.innerHTML = ''; - - if (selectedDischargeComplaints.length === 0) { - tbody.innerHTML = 'No complaints yet. Add using the input below.'; - return; - } - - selectedDischargeComplaints.forEach(function(item, idx) { - var tr = document.createElement('tr'); - tr.setAttribute('data-idx', idx); - - // # column - var td1 = document.createElement('td'); - td1.className = 'text-center text-muted'; - td1.textContent = idx + 1; - tr.appendChild(td1); - - // Complaint name - var td2 = document.createElement('td'); - td2.className = 'p-1'; - var nameInput = document.createElement('input'); - nameInput.type = 'text'; - nameInput.className = 'form-control form-control-sm'; - nameInput.value = item.term || ''; - nameInput.placeholder = 'Complaint…'; - nameInput.style.fontSize = '.82rem'; - nameInput.setAttribute('data-idx', idx); - nameInput.addEventListener('input', function() { - selectedDischargeComplaints[idx].term = this.value; - }); - td2.appendChild(nameInput); - tr.appendChild(td2); - - // Frequency - var td3 = document.createElement('td'); - td3.className = 'p-1'; - var freqInput = document.createElement('input'); - freqInput.type = 'text'; - freqInput.className = 'form-control form-control-sm'; - freqInput.value = item.frequency || ''; - freqInput.placeholder = 'daily…'; - freqInput.style.fontSize = '.82rem'; - freqInput.addEventListener('input', function() { - selectedDischargeComplaints[idx].frequency = this.value; - }); - td3.appendChild(freqInput); - tr.appendChild(td3); - - // Severity - var td4 = document.createElement('td'); - td4.className = 'p-1'; - var sevInput = document.createElement('input'); - sevInput.type = 'text'; - sevInput.className = 'form-control form-control-sm'; - sevInput.value = item.severity || ''; - sevInput.placeholder = 'mild…'; - sevInput.style.fontSize = '.82rem'; - sevInput.addEventListener('input', function() { - selectedDischargeComplaints[idx].severity = this.value; - }); - td4.appendChild(sevInput); - tr.appendChild(td4); - - // Duration - var td5 = document.createElement('td'); - td5.className = 'p-1'; - var durInput = document.createElement('input'); - durInput.type = 'text'; - durInput.className = 'form-control form-control-sm'; - durInput.value = item.duration || ''; - durInput.placeholder = '2 days…'; - durInput.style.fontSize = '.82rem'; - durInput.addEventListener('input', function() { - selectedDischargeComplaints[idx].duration = this.value; - }); - td5.appendChild(durInput); - tr.appendChild(td5); - - // Remove button - var td6 = document.createElement('td'); - td6.className = 'p-1 text-center'; - var removeBtn = document.createElement('button'); - removeBtn.type = 'button'; - removeBtn.className = 'btn btn-sm text-danger p-0'; - removeBtn.style.lineHeight = '1'; - removeBtn.style.fontSize = '.9rem'; - removeBtn.innerHTML = '×'; - removeBtn.addEventListener('click', function() { - selectedDischargeComplaints.splice(idx, 1); - renderDischargeComplaintTable(); - }); - td6.appendChild(removeBtn); - tr.appendChild(td6); - - tbody.appendChild(tr); - }); - } - - // REMOVED: Old database-save-on-blur code that was causing errors - // Now using client-side array management like OPD - - function attachComplaintFieldHandlers(section, form) { - // DISABLED - no longer needed, using client-side management - } - function setSectionStatus(id, text, level) { var el = document.getElementById(id); if (!el) {