Update
This commit is contained in:
@@ -59,11 +59,16 @@
|
||||
</div>
|
||||
<div class="form-group m-b-25">
|
||||
<div class="col-12">
|
||||
<label>Code Name</label>
|
||||
<label>Header</label>
|
||||
<input class="form-control" type="text" id="add_modaliti" name="add_modaliti">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group m-b-25">
|
||||
<div class="col-12">
|
||||
<label>Footer</label>
|
||||
<input class="form-control" type="text" id="add_subsubpoli" name="add_subsubpoli">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group account-btn text-center m-t-10">
|
||||
<div class="col-12">
|
||||
<button class="btn w-lg btn-custom waves-effect waves-light" id="btnAddPoli" type="button">Save</button>
|
||||
@@ -98,11 +103,16 @@
|
||||
</div>
|
||||
<div class="form-group m-b-25">
|
||||
<div class="col-12">
|
||||
<label>Code Name</label>
|
||||
<label>Header</label>
|
||||
<input class="form-control" type="text" id="modaliti" name="modaliti">
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group m-b-25">
|
||||
<div class="col-12">
|
||||
<label>Footer</label>
|
||||
<input class="form-control" type="text" id="subsubpoli" name="subsubpoli">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<input type="hidden" id="id_poli" name="id_poli">
|
||||
<div class="form-group account-btn text-center m-t-10">
|
||||
<div class="col-12">
|
||||
@@ -261,75 +271,7 @@
|
||||
</div>
|
||||
<input type="hidden" name="_token" id="token" value="{{ csrf_token() }}">
|
||||
<div style="overflow: hidden; display: none;">
|
||||
<div class="form-group m-b-25">
|
||||
<div class="col-12">
|
||||
<label>Mapping</label>
|
||||
<select class="form-control" id="add_modaliti" name="add_modaliti">
|
||||
<option value="OT">OT - Other</option>
|
||||
<option value="CR">CR - Computed Radiography</option>
|
||||
<option value="CT">CT - Computed Tomography</option>
|
||||
<option value="DX">DX - Digital Radiography</option>
|
||||
<option value="MG">MG - Mammography</option>
|
||||
<option value="MR">MR - Magnetic Resonance</option>
|
||||
<option value="PX">PX - Panoramic X-Ray</option>
|
||||
<option value="AR">AR - Autorefraction</option>
|
||||
<option value="RF">RF - Radio Fluoroscopy</option>
|
||||
<option value="RG">RG - Radiographic imaging (conventional film/screen)</option>
|
||||
<option value="TG">TG - Thermography</option>
|
||||
<option value="US">US - Ultrasound</option>
|
||||
<option value="VA">VA - Visual Acuity</option>
|
||||
<option value="XA">XA - X-Ray Angiography</option>
|
||||
<option value="XC">XC - External-camera Photography</option>
|
||||
<option value="ASMT">ASMT - Content Assessment Results</option>
|
||||
<option value="AU">AU - Audio</option>
|
||||
<option value="BDUS">BDUS - Bone Densitometry (ultrasound)</option>
|
||||
<option value="BI">BI - Biomagnetic imaging</option>
|
||||
<option value="BMD">BMD - Bone Densitometry (X-Ray)</option>
|
||||
<option value="DG">DG - Diaphanography</option>
|
||||
<option value="DOC">DOC - Document</option>
|
||||
<option value="ECG">ECG - Electrocardiography</option>
|
||||
<option value="EPS">EPS - Cardiac Electrophysiology</option>
|
||||
<option value="ES">ES - Endoscopy</option>
|
||||
<option value="FID">FID - Fiducials</option>
|
||||
<option value="GM">GM - General Microscopy</option>
|
||||
<option value="HC">HC - Hard Copy</option>
|
||||
<option value="HD">HD - Hemodynamic Waveform</option>
|
||||
<option value="IO">IO - Intra-Oral Radiography</option>
|
||||
<option value="IOL">IOL - Intraocular Lens Data</option>
|
||||
<option value="IVOCT">IVOCT - Intravascular Optical Coherence Tomography</option>
|
||||
<option value="IVUS">IVUS - Intravascular Ultrasound</option>
|
||||
<option value="KER">KER - Keratometry</option>
|
||||
<option value="KO">KO - Key Object Selection</option>
|
||||
<option value="LEN">LEN - Lensometry</option>
|
||||
<option value="LS">LS - Laser surface scan</option>
|
||||
<option value="NM">NR - Nuclear Medicine</option>
|
||||
<option value="OAM">OAM - Ophthalmic Axial Measurements</option>
|
||||
<option value="OCT">OCT - Optical Coherence Tomography (non-Ophthalmic)</option>
|
||||
<option value="OP">OP - Ophthalmic Photography</option>
|
||||
<option value="OPM">OPM - Ophthalmic Mapping</option>
|
||||
<option value="OPT">OPT - Ophthalmic Tomography</option>
|
||||
<option value="OPV">OPV - Ophthalmic Visual Field</option>
|
||||
<option value="OSS">OSS - Optical Surface Scan</option>
|
||||
<option value="PLAN">PLAN - Plan</option>
|
||||
<option value="PR">PR - Presentation State</option>
|
||||
<option value="PT">PT - Positron emission tomography (PET)</option>
|
||||
<option value="REG">REG - Registration</option>
|
||||
<option value="RESP">RESP - Respiratory Waveform</option>
|
||||
<option value="RTDOSE">RTDOSE - Radiotherapy Dose</option>
|
||||
<option value="RTIMAGE">RTIMAGE - Radiotherapy Image</option>
|
||||
<option value="RTPLAN">RTPLAN - Radiotherapy Plan</option>
|
||||
<option value="RTRECORD">RTRECORD - RT Treatment Record</option>
|
||||
<option value="RTSTRUCT">RTSTRUCT - Radiotherapy Structure Set</option>
|
||||
<option value="RWV">RWV - Real World Value Map</option>
|
||||
<option value="SEG">SEG - Segmentation</option>
|
||||
<option value="SM">SM - Slide Microscopy</option>
|
||||
<option value="SMR">SMR - Stereometric Relationship</option>
|
||||
<option value="SR">SR - SR Document</option>
|
||||
<option value="SRF">SRF - Subjective Refraction</option>
|
||||
<option value="STAIN">STAIN - Automated Slide Stainer</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group m-b-25">
|
||||
<div class="col-12">
|
||||
<label>Secondary Mapping</label>
|
||||
@@ -399,75 +341,7 @@
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group m-b-25">
|
||||
<div class="col-12">
|
||||
<label>Mapping</label>
|
||||
<select class="form-control" id="modaliti" name="modaliti">
|
||||
<option value="OT">OT - Other</option>
|
||||
<option value="CR">CR - Computed Radiography</option>
|
||||
<option value="CT">CT - Computed Tomography</option>
|
||||
<option value="DX">DX - Digital Radiography</option>
|
||||
<option value="MG">MG - Mammography</option>
|
||||
<option value="MR">MR - Magnetic Resonance</option>
|
||||
<option value="PX">PX - Panoramic X-Ray</option>
|
||||
<option value="AR">AR - Autorefraction</option>
|
||||
<option value="RF">RF - Radio Fluoroscopy</option>
|
||||
<option value="RG">RG - Radiographic imaging (conventional film/screen)</option>
|
||||
<option value="TG">TG - Thermography</option>
|
||||
<option value="US">US - Ultrasound</option>
|
||||
<option value="VA">VA - Visual Acuity</option>
|
||||
<option value="XA">XA - X-Ray Angiography</option>
|
||||
<option value="XC">XC - External-camera Photography</option>
|
||||
<option value="ASMT">ASMT - Content Assessment Results</option>
|
||||
<option value="AU">AU - Audio</option>
|
||||
<option value="BDUS">BDUS - Bone Densitometry (ultrasound)</option>
|
||||
<option value="BI">BI - Biomagnetic imaging</option>
|
||||
<option value="BMD">BMD - Bone Densitometry (X-Ray)</option>
|
||||
<option value="DG">DG - Diaphanography</option>
|
||||
<option value="DOC">DOC - Document</option>
|
||||
<option value="ECG">ECG - Electrocardiography</option>
|
||||
<option value="EPS">EPS - Cardiac Electrophysiology</option>
|
||||
<option value="ES">ES - Endoscopy</option>
|
||||
<option value="FID">FID - Fiducials</option>
|
||||
<option value="GM">GM - General Microscopy</option>
|
||||
<option value="HC">HC - Hard Copy</option>
|
||||
<option value="HD">HD - Hemodynamic Waveform</option>
|
||||
<option value="IO">IO - Intra-Oral Radiography</option>
|
||||
<option value="IOL">IOL - Intraocular Lens Data</option>
|
||||
<option value="IVOCT">IVOCT - Intravascular Optical Coherence Tomography</option>
|
||||
<option value="IVUS">IVUS - Intravascular Ultrasound</option>
|
||||
<option value="KER">KER - Keratometry</option>
|
||||
<option value="KO">KO - Key Object Selection</option>
|
||||
<option value="LEN">LEN - Lensometry</option>
|
||||
<option value="LS">LS - Laser surface scan</option>
|
||||
<option value="NM">NR - Nuclear Medicine</option>
|
||||
<option value="OAM">OAM - Ophthalmic Axial Measurements</option>
|
||||
<option value="OCT">OCT - Optical Coherence Tomography (non-Ophthalmic)</option>
|
||||
<option value="OP">OP - Ophthalmic Photography</option>
|
||||
<option value="OPM">OPM - Ophthalmic Mapping</option>
|
||||
<option value="OPT">OPT - Ophthalmic Tomography</option>
|
||||
<option value="OPV">OPV - Ophthalmic Visual Field</option>
|
||||
<option value="OSS">OSS - Optical Surface Scan</option>
|
||||
<option value="PLAN">PLAN - Plan</option>
|
||||
<option value="PR">PR - Presentation State</option>
|
||||
<option value="PT">PT - Positron emission tomography (PET)</option>
|
||||
<option value="REG">REG - Registration</option>
|
||||
<option value="RESP">RESP - Respiratory Waveform</option>
|
||||
<option value="RTDOSE">RTDOSE - Radiotherapy Dose</option>
|
||||
<option value="RTIMAGE">RTIMAGE - Radiotherapy Image</option>
|
||||
<option value="RTPLAN">RTPLAN - Radiotherapy Plan</option>
|
||||
<option value="RTRECORD">RTRECORD - RT Treatment Record</option>
|
||||
<option value="RTSTRUCT">RTSTRUCT - Radiotherapy Structure Set</option>
|
||||
<option value="RWV">RWV - Real World Value Map</option>
|
||||
<option value="SEG">SEG - Segmentation</option>
|
||||
<option value="SM">SM - Slide Microscopy</option>
|
||||
<option value="SMR">SMR - Stereometric Relationship</option>
|
||||
<option value="SR">SR - SR Document</option>
|
||||
<option value="SRF">SRF - Subjective Refraction</option>
|
||||
<option value="STAIN">STAIN - Automated Slide Stainer</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group m-b-25">
|
||||
<div class="col-12">
|
||||
<label>Secondary Mapping</label>
|
||||
@@ -664,8 +538,9 @@
|
||||
selectionmode : 'multiplecellsextended',
|
||||
columns : [
|
||||
{ text: 'Category', filtertype: 'checkedlist', datafield: 'poli', width: '15%', align: 'center', cellsalign: 'left'},
|
||||
{ text: 'Request Name', datafield: 'subpoli', width: '40%', cellsalign: 'left', align: 'center' },
|
||||
{ text: 'Code Name', datafield: 'subsubpoli', width: '25%', cellsalign: 'left', align: 'center' },
|
||||
{ text: 'Request Name', datafield: 'subpoli', width: '35%', cellsalign: 'left', align: 'center' },
|
||||
{ text: 'Header', datafield: 'modaliti', width: '15%', cellsalign: 'left', align: 'center' },
|
||||
{ text: 'Footer', datafield: 'subsubpoli', width: '15%', cellsalign: 'left', align: 'center' },
|
||||
{ text: 'Update', sortable: false, filterable: false, columntype: 'button', align: 'center', width: '10%', cellsrenderer: function () {
|
||||
return "Update";
|
||||
}, buttonclick: function (row) {
|
||||
|
||||
@@ -400,6 +400,7 @@
|
||||
</div>
|
||||
@endsection
|
||||
@push('script')
|
||||
<script src="https://cdnjs.cloudflare.com/ajax/libs/jspdf/2.5.1/jspdf.umd.min.js"></script>
|
||||
<script type="text/javascript">
|
||||
$("#noregister").on('change', function () {
|
||||
var val01 = document.getElementById('noregister').value;
|
||||
@@ -437,7 +438,7 @@
|
||||
var start = new Date();
|
||||
CountDownTimer(start, 'timeremaining');
|
||||
function CountDownTimer(dt, id) {
|
||||
var end = new Date(dt.getTime() + 60000);
|
||||
var end = new Date(dt.getTime() + 1500000);
|
||||
var _second = 1000;
|
||||
var _minute = _second * 60;
|
||||
var _hour = _minute * 60;
|
||||
@@ -697,16 +698,12 @@
|
||||
editrowjabatan = row;
|
||||
var offset = $("#gridpemeriksaan").offset();
|
||||
var dataRecord = $("#gridpemeriksaan").jqxGrid('getrowdata', editrowjabatan);
|
||||
var nofoto = dataRecord.nofoto || '000000';
|
||||
var asalpasien = dataRecord.asalpasien || 'RSSA';
|
||||
var kd_spesimen = dataRecord.kd_spesimen || '00';
|
||||
var noregister = dataRecord.noregister || '00000';
|
||||
var nama = dataRecord.nama || 'xx';
|
||||
var tgllahir = dataRecord.tgllahir || '0000-00-00';
|
||||
var reques = dataRecord.poli || '-';
|
||||
var daftartgl = dataRecord.daftartgl || '0000-00-00';
|
||||
var item = `${asalpasien}<>${kd_spesimen}<>${noregister}<>${nama}<>${tgllahir}<>${reques}<>${daftartgl}`;
|
||||
jQueryOpenBarCode(item, nofoto);
|
||||
var token = document.getElementById('token').value;
|
||||
$.post('{{ route("exCekAksess") }}', { nofoto: 'stiker', noregister: dataRecord.noregister, daftartgl: dataRecord.daftartgl, nm_spesimen: dataRecord.nm_spesimen, _token: token },
|
||||
function(data){
|
||||
jQueryOpenBarCode(data.item, data.nofoto);
|
||||
});
|
||||
|
||||
}
|
||||
},
|
||||
{ text: 'Ulang', filterable: false, columntype: 'button', align: 'center', width: 50, cellsrenderer: function () {
|
||||
@@ -783,7 +780,7 @@
|
||||
reader.readAsDataURL(input.files[0]);
|
||||
}
|
||||
}
|
||||
function jQueryOpenBarCode(item, nofoto) {
|
||||
function HTMLOpenBarCode(item, nofoto) {
|
||||
var itemParts = item.split('<>');
|
||||
var asalpasien = itemParts[0]?.trim() || "xx";
|
||||
var kd_spesimen = itemParts[1]?.trim() || "xx";
|
||||
@@ -798,13 +795,13 @@
|
||||
var style = `
|
||||
<style>
|
||||
@page {
|
||||
size: 5.5cm 4cm landscape;
|
||||
size: 5cm 3.5cm landscape;
|
||||
margin: 0;
|
||||
}
|
||||
@media print {
|
||||
body {
|
||||
width: 5.5cm;
|
||||
height: 4cm;
|
||||
width: 5cm;
|
||||
height: 3.5cm;
|
||||
margin: 0;
|
||||
top: 0mm;
|
||||
padding: 0mm;
|
||||
@@ -812,8 +809,8 @@
|
||||
}
|
||||
}
|
||||
body {
|
||||
width: 5.5cm;
|
||||
height: 4cm;
|
||||
width: 5cm;
|
||||
height: 3.5cm;
|
||||
margin: 0;
|
||||
padding: 0mm;
|
||||
font-family: Tahoma, Arial, sans-serif;
|
||||
@@ -848,16 +845,16 @@
|
||||
<body>
|
||||
<table>
|
||||
<tr>
|
||||
<td>${nofoto} / ${kd_spesimen} / ${asalpasien}</td>
|
||||
<td> </td><td>${kd_spesimen} / ${asalpasien}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><svg id="barcode"></svg></td>
|
||||
<td> </td><td><svg id="barcode"></svg></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>${noregister} / ${nama} / ${tgllahir}</td>
|
||||
<td> </td><td>${noregister} / ${nama} / ${tgllahir}</td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>${reques} ( ${daftartgl} )</td>
|
||||
<td> </td><td>${reques} ( ${daftartgl} )</td>
|
||||
</tr>
|
||||
</table>
|
||||
</body>
|
||||
@@ -872,7 +869,7 @@
|
||||
if (barcodeElement) {
|
||||
JsBarcode(barcodeElement, nofoto, {
|
||||
format: "CODE128",
|
||||
displayValue: false,
|
||||
displayValue: true,
|
||||
height: 25,
|
||||
margin: 0
|
||||
});
|
||||
@@ -890,6 +887,93 @@
|
||||
}
|
||||
};
|
||||
}
|
||||
function jQueryOpenBarCode(item, nofoto) {
|
||||
// Pastikan library sudah termuat
|
||||
if (typeof window.jspdf === 'undefined' || typeof JsBarcode === 'undefined') {
|
||||
alert('Kesalahan: Library jsPDF atau JsBarcode belum dimuat.');
|
||||
return;
|
||||
}
|
||||
|
||||
// 1. Parsing data (sama seperti sebelumnya)
|
||||
const itemParts = item.split('<>');
|
||||
const asalpasien = itemParts[0]?.trim() || "xx";
|
||||
const kd_spesimen = itemParts[1]?.trim() || "xx";
|
||||
const noregister = itemParts[2]?.trim() || "xx";
|
||||
let nama = itemParts[3]?.trim() || "xx";
|
||||
const tgllahir = itemParts[4]?.trim() || "0000-00-00";
|
||||
const reques = itemParts[5]?.trim() || "xx";
|
||||
const daftartgl = itemParts[6]?.trim() || "xx";
|
||||
if (nama.length > 12) {
|
||||
nama = nama.substring(0, 12) + ".";
|
||||
}
|
||||
// 2. Inisialisasi dokumen PDF
|
||||
const { jsPDF } = window.jspdf;
|
||||
const doc = new jsPDF({
|
||||
orientation: 'landscape',
|
||||
unit: 'mm',
|
||||
format: [50, 35]
|
||||
});
|
||||
|
||||
// 3. Pengaturan Teks dan Posisi
|
||||
const leftMargin = 2;
|
||||
const contentWidth = 50 - (leftMargin * 2);
|
||||
let yPosition = 4;
|
||||
|
||||
doc.setFont('helvetica', 'bold');
|
||||
doc.setFontSize(7);
|
||||
doc.text(`${kd_spesimen} / ${asalpasien}`, leftMargin, yPosition, {
|
||||
maxWidth: contentWidth,
|
||||
});
|
||||
yPosition += 4; // Geser posisi Y ke bawah untuk barcode
|
||||
|
||||
// 4. Generate Barcode dan tambahkan ke PDF (BAGIAN YANG DIUBAH)
|
||||
try {
|
||||
const canvas = document.createElement('canvas');
|
||||
JsBarcode(canvas, nofoto, {
|
||||
format: "CODE128",
|
||||
displayValue: false, // DIUBAH: Tidak menampilkan teks bawaan
|
||||
height: 40,
|
||||
width: 1.5,
|
||||
margin: 5 // Beri sedikit margin agar tidak terpotong
|
||||
});
|
||||
const barcodeDataUrl = canvas.toDataURL('image/png');
|
||||
const barcodeHeight = 10; // Tinggi gambar barcode di PDF (dalam mm)
|
||||
|
||||
// Tambahkan gambar barcode ke PDF
|
||||
doc.addImage(barcodeDataUrl, 'PNG', leftMargin, yPosition, contentWidth, barcodeHeight);
|
||||
|
||||
// Pindahkan posisi Y ke bawah gambar barcode
|
||||
yPosition += barcodeHeight + 3;
|
||||
|
||||
// DITAMBAHKAN: Tulis teks nofoto secara manual di bawah barcode
|
||||
doc.setFont('helvetica', 'bold'); // Set font biasa (tidak bold)
|
||||
doc.setFontSize(8); // Atur ukuran font agar jelas
|
||||
const centerX = 50 / 2; // Titik tengah horizontal halaman
|
||||
doc.text(nofoto, centerX, yPosition, { align: 'center' }); // Teks dibuat rata tengah
|
||||
|
||||
// Pindahkan posisi Y untuk baris selanjutnya
|
||||
yPosition += 4;
|
||||
|
||||
} catch (e) {
|
||||
console.error("Gagal membuat barcode:", e);
|
||||
doc.text("Error Barcode", leftMargin, yPosition);
|
||||
yPosition += 12;
|
||||
}
|
||||
|
||||
// 5. Menambahkan sisa teks
|
||||
doc.setFont('helvetica', 'bold'); // Kembalikan font menjadi bold
|
||||
doc.setFontSize(6.5);
|
||||
doc.text(`${noregister} / ${nama} / ${tgllahir}`, leftMargin, yPosition, {
|
||||
maxWidth: contentWidth,
|
||||
});
|
||||
yPosition += 4;
|
||||
doc.text(`${reques} ( ${daftartgl} )`, leftMargin, yPosition, {
|
||||
maxWidth: contentWidth,
|
||||
});
|
||||
|
||||
// 6. Tampilkan PDF di tab baru
|
||||
doc.output('dataurlnewwindow');
|
||||
}
|
||||
$(window).on('load', function () {
|
||||
openedpage();
|
||||
});
|
||||
|
||||
Reference in New Issue
Block a user