devsofttech_hms_ci4/app/Views/billing/Patient_V.php

675 lines
40 KiB
PHP

<!-- Main content -->
<style>
/* Hide browser autocomplete suggestions */
input:-webkit-autofill,
input:-webkit-autofill:hover,
input:-webkit-autofill:focus {
-webkit-box-shadow: 0 0 0 1000px white inset !important;
box-shadow: 0 0 0 1000px white inset !important;
}
/* Hide autocomplete dropdown suggestions */
input:autofill {
background-color: white !important;
}
</style>
<section class="content">
<div class="row">
<div class="col-md-12">
<div class="card">
<div class="card-body">
<h5 class="card-title">Patient Management</h5>
<ul class="nav nav-tabs" id="patientTabs" role="tablist">
<li class="nav-item" role="presentation">
<button class="nav-link active" id="search-tab" data-bs-toggle="tab"
data-bs-target="#search" type="button" role="tab" aria-controls="search"
aria-selected="true">Search</button>
</li>
<li class="nav-item" role="presentation">
<button class="nav-link" id="nperson-tab" data-bs-toggle="tab"
data-bs-target="#nperson" type="button" role="tab" aria-controls="nperson"
aria-selected="false">New Person</button>
</li>
<li class="nav-item" role="presentation">
<button class="nav-link" id="lastopd-tab" data-bs-toggle="tab"
data-bs-target="#lastopd" type="button" role="tab" aria-controls="lastopd"
aria-selected="false" data-url="<?= base_url('billing/patient/search_opd') ?>">Last OPDs</button>
</li>
<li class="nav-item" role="presentation">
<button class="nav-link" id="abha-tab" data-bs-toggle="tab"
data-bs-target="#abha" type="button" role="tab" aria-controls="abha"
aria-selected="false">ABHA Create/Verify</button>
</li>
</ul>
<div class="tab-content pt-2" id="patientTabsContent">
<div class="tab-pane fade" id="nperson" role="tabpanel" aria-labelledby="nperson-tab">
<div class="danger" id="jsError"></div>
<div class="row">
<div class="col-md-8">
<form action="<?= base_url('billing/patient/create') ?>" method="post" role="form" class="form1 needs-validation" novalidate>
<?= csrf_field() ?>
<div class="row g-3">
<div class="col-md-3">
<div class="form-group">
<label class="form-label">Aadhaar Number</label>
<input class="form-control" name="input_udai" id="input_udai"
placeholder="Aadhaar Number" type="text" autocomplete="off"
data-inputmask='"mask": "999999999999"' data-mask
onchange="onchange_aadhar()">
</div>
</div>
<div class="col-md-3">
<div class="form-group">
<label class="form-label">ABHA ID</label>
<input class="form-control" name="input_abha_id" id="input_abha_id"
placeholder="14-digit ABHA ID" type="text" autocomplete="off"
maxlength="14" data-inputmask='"mask": "99999999999999"' data-mask>
</div>
</div>
<div class="col-md-3">
<div class="form-group">
<label class="form-label">Phone Number</label>
<input class="form-control" name="input_mphone1" id="input_mphone1"
placeholder="Phone Number" type="text" autocomplete="off" required
data-inputmask='"mask": "9999999999"' data-mask
onchange="onchange_feild_number()">
<div class="invalid-feedback">Please enter phone number.</div>
</div>
</div>
<hr/>
<div class="col-md-2">
<div class="form-group">
<label class="form-label">Title</label>
<select class="form-select" name="cbo_title" id="cbo_title"
onchange="onchange_title()">
<option value="Mr.">Mr.</option>
<option value="Mrs.">Mrs.</option>
<option value="Ms.">Ms.</option>
<option value="Master" selected="selected">Master</option>
<option value="Baby">Baby</option>
<option value="Baby Girl">Baby Girl</option>
<option value="Baby Boy">Baby Boy</option>
<option value="Mohd.">Mohd.</option>
</select>
</div>
</div>
<div class="col-md-3">
<div class="form-group">
<label class="form-label">Full Name</label>
<input class="form-control varchar" name="input_name" id="input_name"
placeholder="Full Name" type="text" autocomplete="off" required>
<div class="invalid-feedback">Please enter full name.</div>
</div>
</div>
<div class="col-md-3">
<div class="form-group">
<label class="form-label">Gender</label>
<div>
<div class="form-check form-check-inline">
<input class="form-check-input" name="optionsRadios_gender" id="options_gender1" value="1"
type="radio" checked>
<label class="form-check-label" for="options_gender1">Male</label>
</div>
<div class="form-check form-check-inline">
<input class="form-check-input" name="optionsRadios_gender" id="options_gender2" value="2"
type="radio">
<label class="form-check-label" for="options_gender2">Female</label>
</div>
</div>
</div>
</div>
</div>
<hr />
<div class="row g-3">
<?php
$chk_age = 0;
if ($chk_age == 1) {
$checkbox_checked = "checked";
$age_input_2 = 'style="display: none;"';
$age_input_1 = '';
} else {
$checkbox_checked = "";
$age_input_1 = 'style="display: none;"';
$age_input_2 = '';
}
?>
<div class="col-md-3">
<div class="form-check form-switch">
<input class="form-check-input" type="checkbox" id="chk_age" name="chk_age" <?= $checkbox_checked ?>>
<label class="form-check-label" for="chk_age">Estimate Age</label>
</div>
</div>
<div class="col-md-6" id="age_input_1" <?= $age_input_1 ?>>
<div class="form-group">
<label class="form-label">Age (in Year - Month)</label>
<div class="row g-2">
<div class="col-6">
<input class="form-control number"
name="input_age_year" id="input_age_year"
placeholder="Year" type="text" autocomplete="off">
</div>
<div class="col-6">
<input class="form-control number"
name="input_age_month" id="input_age_month"
placeholder="Month" type="text" autocomplete="off">
</div>
</div>
</div>
</div>
<div class="col-md-4" id="age_input_2" <?= $age_input_2 ?>>
<label class="form-label">Date of Birth</label>
<input class="form-control" name="datepicker_dob" id="datepicker_dob"
type="date" />
</div>
</div>
<hr />
<div class="row g-3">
<div class="col-md-3">
<div class="form-group">
<label class="form-label">Relation</label>
<select class="form-select" name="cbo_relation" id="cbo_relation">
<option value="W/o">W/o</option>
<option value="S/o">S/o</option>
<option value="D/o">D/o</option>
<option value="C/o">C/o</option>
<option value="M/o">M/o</option>
</select>
</div>
</div>
<div class="col-md-3">
<div class="form-group">
<label class="form-label">Relative Name</label>
<input class="form-control" name="input_relative_name"
id="input_relative_name" placeholder="Full Name" type="text"
onchange="onchange_relative_name()"
autocomplete="off" required>
<div class="invalid-feedback">Please enter relative name.</div>
</div>
</div>
<div class="col-md-3">
<div class="form-group">
<label class="form-label">Blood Group</label>
<select class="form-select" name="input_blood_group" id="input_blood_group">
<?php foreach ($blood_group as $row) { ?>
<option value="<?= $row->blood_group ?>" <?= strcasecmp((string) $row->blood_group, 'Not Define') === 0 ? 'selected' : '' ?>><?= $row->blood_group ?></option>
<?php } ?>
</select>
</div>
</div>
<div class="col-md-6">
<div class="form-group">
<label class="form-label">Address</label>
<input class="form-control" name="input_address"
placeholder="Address" type="text" autocomplete="on">
</div>
</div>
<div class="col-md-3">
<div class="form-group">
<label class="form-label">City</label>
<input class="form-control" name="input_city" id="input_city"
placeholder="City" type="text" autocomplete="on">
</div>
</div>
<div class="col-md-3">
<div class="form-group">
<label class="form-label">Pin/Zip Code</label>
<input class="form-control" name="input_zip" id="input_zip"
placeholder="Pin/Zip Code" type="text" autocomplete="on">
</div>
</div>
<div class="col-md-3">
<div class="form-group">
<label class="form-label">District</label>
<input class="form-control" name="input_district"
id="input_district" placeholder="District" type="text"
autocomplete="on">
</div>
</div>
<div class="col-md-3">
<div class="form-group">
<label class="form-label">State</label>
<input class="form-control" name="input_state"
id="input_state" placeholder="State" type="text" autocomplete="on">
</div>
</div>
</div>
<hr />
<div class="row g-3">
<div class="col-md-3">
<button type="submit" id="RegisterPatient" class="btn btn-primary">Register Patient</button>
</div>
</div>
</form>
</div>
<div class="col-md-4" id="search_result_update">
</div>
</div>
</div>
<div class="tab-pane fade show active" id="search" role="tabpanel" aria-labelledby="search-tab">
<form action="<?= base_url('billing/patient/search') ?>" method="post" role="form" class="form2 needs-validation" novalidate>
<?= csrf_field() ?>
<div class="input-group">
<input class="form-control" type="text" id="txtsearch" name="txtsearch" placeholder="Search">
<span class="input-group-btn">
<button type="submit" class="btn btn-info btn-flat">Go!</button>
</span>
</div>
</form>
<div id="search_loading" class="alert alert-info mt-2" style="display:none;">
<span class="spinner-border spinner-border-sm me-2" role="status" aria-hidden="true"></span>
<span id="search_loading_text">Searching...</span>
</div>
<div class="searchresult"></div>
</div>
<div class="tab-pane fade" id="lastopd" role="tabpanel" aria-labelledby="lastopd-tab">
</div>
<div class="tab-pane fade" id="abha" role="tabpanel" aria-labelledby="abha-tab">
<div class="row">
<div class="col-md-12">
<div class="card">
<div class="card-body">
<h6 class="card-title">ABHA Number Create and Verify</h6>
<p class="text-muted">Create and verify your unique health identification number</p>
<ul class="nav nav-tabs" id="abhaSubTabs" role="tablist">
<li class="nav-item" role="presentation">
<button class="nav-link active" id="abha-create-tab" data-bs-toggle="tab"
data-bs-target="#abha-create" type="button" role="tab" aria-controls="abha-create"
aria-selected="true">Create ABHA</button>
</li>
<li class="nav-item" role="presentation">
<button class="nav-link" id="abha-verify-tab" data-bs-toggle="tab"
data-bs-target="#abha-verify" type="button" role="tab" aria-controls="abha-verify"
aria-selected="false">Verify ABHA</button>
</li>
</ul>
<div class="tab-content pt-3" id="abhaSubTabsContent">
<div class="tab-pane fade show active" id="abha-create" role="tabpanel" aria-labelledby="abha-create-tab">
<form id="abha_create_form" class="needs-validation" novalidate>
<?= csrf_field() ?>
<div class="row">
<div class="col-md-6">
<div class="form-group mb-3">
<label class="form-label">Aadhaar Number</label>
<input type="text" class="form-control" id="abha_create_aadhaar"
name="aadhaar" placeholder="12-digit Aadhaar" required
data-inputmask='"mask": "9999-9999-9999"' data-mask>
</div>
</div>
<div class="col-md-6">
<div class="form-group mb-3">
<label class="form-label">Mobile Number</label>
<input type="text" class="form-control" id="abha_create_mobile"
name="mobile" placeholder="10-digit Mobile" required
data-inputmask='"mask": "9999999999"' data-mask>
</div>
</div>
</div>
<div class="row">
<div class="col-md-6">
<div class="form-group mb-3">
<label class="form-label">Full Name</label>
<input type="text" class="form-control" id="abha_create_name"
name="full_name" placeholder="Patient Full Name" required>
</div>
</div>
<div class="col-md-6">
<div class="form-group mb-3">
<label class="form-label">Gender</label>
<select class="form-select" id="abha_create_gender" name="gender" required>
<option value="">Select Gender</option>
<option value="M">Male</option>
<option value="F">Female</option>
<option value="O">Other</option>
</select>
</div>
</div>
</div>
<div class="row">
<div class="col-md-6">
<div class="form-group mb-3">
<label class="form-label">Date of Birth</label>
<input type="date" class="form-control" id="abha_create_dob"
name="dob" required>
</div>
</div>
</div>
<div class="row">
<div class="col-md-12">
<button type="submit" class="btn btn-primary">Generate OTP & Create ABHA</button>
</div>
</div>
</form>
</div>
<div class="tab-pane fade" id="abha-verify" role="tabpanel" aria-labelledby="abha-verify-tab">
<form id="abha_verify_form" class="needs-validation" novalidate>
<?= csrf_field() ?>
<div class="row">
<div class="col-md-6">
<div class="form-group mb-3">
<label class="form-label">ABHA Number / Health ID</label>
<input type="text" class="form-control" id="abha_verify_number"
name="abha_number" placeholder="ABHA Number" required>
</div>
</div>
<div class="col-md-6">
<div class="form-group mb-3">
<label class="form-label">Aadhaar or Mobile</label>
<input type="text" class="form-control" id="abha_verify_mobile"
name="mobile_aadhaar" placeholder="Enter Mobile or Aadhaar" required>
</div>
</div>
</div>
<div class="row">
<div class="col-md-12">
<button type="submit" class="btn btn-success">Verify ABHA</button>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</section>
<!-- /.content -->
<script>
$(document).ready(function() {
$('form.form1').on('submit', function(form) {
$("#RegisterPatient").prop("disabled", true);
form.preventDefault();
$.post('<?= base_url('billing/patient/create') ?>', $('form.form1').serialize(), function(data) {
if (data.insertid == 0) {
notify('error', 'Please Attention', data.error_text);
$("#RegisterPatient").prop("disabled", false);
} else {
load_form('<?= base_url('billing/patient/person_record') ?>/' + data.insertid, 'Patient Record');
}
}, 'json');
});
$('form.form2').on('submit', function(form) {
form.preventDefault();
var searchBtn = $('form.form2 button[type="submit"]');
var loadingDiv = $('#search_loading');
// Show loading indicator and disable button
loadingDiv.show();
searchBtn.prop('disabled', true);
searchBtn.text('Searching...');
$.post('<?= base_url('billing/patient/search') ?>', $('form.form2').serialize(), function(data) {
$('div.searchresult').html(data);
// Hide loading indicator and re-enable button
loadingDiv.hide();
searchBtn.prop('disabled', false);
searchBtn.text('Go!');
});
});
$('#input_abha_id').on('change blur', function() {
var abhaId = ($(this).val() || '').toString().trim();
if (abhaId !== '') {
refreshAdvancedSearchResult({
input_abha_id: abhaId
});
} else {
$('#search_result_update').html('');
}
if (!/^\d{14}$/.test(abhaId)) {
return;
}
$.post('<?= base_url('patient/abha_fetch_profile') ?>', {
abha_id: abhaId,
'<?= csrf_token() ?>': $('input[name="<?= csrf_token() ?>"]').val()
}, function(resp) {
if (!resp || resp.ok != 1 || !resp.profile) {
return;
}
var p = resp.profile || {};
if (p.name && !$('#input_name').val()) {
$('#input_name').val(p.name);
}
if (p.mobile && !$('#input_mphone1').val()) {
$('#input_mphone1').val(p.mobile);
}
if (p.city && !$('#input_city').val()) {
$('#input_city').val(p.city);
}
if (p.state && !$('#input_state').val()) {
$('#input_state').val(p.state);
}
if (p.dob && !$('#datepicker_dob').val()) {
$('#datepicker_dob').val(p.dob);
if ($('#chk_age').is(':checked')) {
$('#chk_age').prop('checked', false).trigger('click');
}
}
if (p.gender) {
var g = (p.gender + '').toLowerCase();
if (g === '1' || g === 'male' || g === 'm') {
$('#options_gender1').prop('checked', true);
} else if (g === '2' || g === 'female' || g === 'f') {
$('#options_gender2').prop('checked', true);
}
}
}, 'json');
});
$("#input_city").autocomplete({
source: "<?= base_url('billing/patient/city') ?>",
minLength: 3,
autofocus: true,
select: function(event, ui) {
$("#input_district").val(ui.item.l_district);
$("#input_state").val(ui.item.l_state);
}
});
$("#chk_age").on("click", function() {
if (this.checked) {
$('#age_input_1').show();
$('#age_input_2').hide();
} else {
$('#age_input_1').hide();
$('#age_input_2').show();
}
});
function split(val) {
return val.split(/ \s*/);
}
function extractLast(term) {
return split(term).pop();
}
$('[data-bs-toggle="tab"]').click(function(e) {
e.preventDefault();
var loadurl = $(this).data('url') || $(this).attr('href');
if (loadurl && loadurl !== '#') {
var targ = $(this).attr('data-bs-target');
$.get(loadurl, function(data) {
$(targ).html(data);
});
}
var tabTrigger = new bootstrap.Tab(this);
tabTrigger.show();
});
$("#input_name")
.on("focus", function() {
// Suppress browser autocomplete suggestions
$(this).removeAttr('readonly').off('mousedown.autocomplete');
})
// don't navigate away from the field on tab when selecting an item
.on("keydown", function(event) {
if (event.keyCode === $.ui.keyCode.TAB &&
$(this).autocomplete("instance").menu.active) {
event.preventDefault();
}
})
.autocomplete({
source: function(request, response) {
$.getJSON("<?= base_url('billing/patient/get_name') ?>", {
term: extractLast(request.term)
}, response);
},
search: function() {
// custom minLength
var term = extractLast(this.value);
if (term.length < 2) {
return false;
}
},
focus: function() {
// prevent value inserted on focus
return false;
},
select: function(event, ui) {
var terms = split(this.value);
// remove the current input
terms.pop();
// add the selected item
terms.push(ui.item.value);
// add placeholder to get the comma-and-space at the end
terms.push("");
this.value = terms.join(" ");
return false;
}
});
$("#input_relative_name")
// don't navigate away from the field on tab when selecting an item
.on("keydown", function(event) {
if (event.keyCode === $.ui.keyCode.TAB &&
$(this).autocomplete("instance").menu.active) {
event.preventDefault();
}
})
.autocomplete({
source: function(request, response) {
$.getJSON("<?= base_url('billing/patient/get_name') ?>", {
term: extractLast(request.term)
}, response);
},
search: function() {
// custom minLength
var term = extractLast(this.value);
if (term.length < 2) {
return false;
}
},
focus: function() {
// prevent value inserted on focus
return false;
},
select: function(event, ui) {
var terms = split(this.value);
// remove the current input
terms.pop();
// add the selected item
terms.push(ui.item.value);
// add placeholder to get the comma-and-space at the end
terms.push("");
this.value = terms.join(" ");
return false;
}
});
$('[data-bs-toggle="gpill"]').click(function(e) {
e.preventDefault();
var loadurl = $(this).data('url') || $(this).attr('href');
if (loadurl && loadurl !== '#') {
var targ = $(this).attr('data-bs-target');
$.get(loadurl, function(data) {
$(targ).html(data);
});
}
var tabTrigger = new bootstrap.Tab(this);
tabTrigger.show();
});
});
function getCsrfData() {
var csrfName = '<?= csrf_token() ?>';
var csrfValue = $('input[name="<?= csrf_token() ?>"]').first().val() || '<?= csrf_hash() ?>';
return {
name: csrfName,
value: csrfValue
};
}
function refreshAdvancedSearchResult(payload) {
var csrf = getCsrfData();
var postData = $.extend({}, payload || {});
postData[csrf.name] = csrf.value;
$.post('<?= base_url('billing/patient/search_adv') ?>', postData, function(data) {
$('#search_result_update').html(data);
});
}
function onchange_feild_number(control_button) {
var input_mphone1 = $('#input_mphone1').val();
refreshAdvancedSearchResult({
"input_mphone1": input_mphone1
});
}
function onchange_aadhar(control_button) {
var input_udai = $('#input_udai').val();
refreshAdvancedSearchResult({
"input_udai": input_udai
});
}
function onchange_relative_name(control_button) {
var input_relative_name = $('#input_relative_name').val();
var input_name = $('#input_name').val();
refreshAdvancedSearchResult({
"input_relative_name": input_relative_name,
"input_name": input_name
});
}
function onchange_title() {
var d = $('#cbo_title').val();
if (d == "Mr." || d == "Master" || d == "Baby Boy" || d == "Mohd.") {
$("#options_gender1").prop("checked", true);
} else {
$("#options_gender2").prop("checked", true);
}
}
</script>