ABDM Custom Request modal: Purpose as fixed dropdown + add Expiry Date field
This commit is contained in:
parent
25db2e5ddc
commit
7256858562
|
|
@ -1377,7 +1377,22 @@ class Patient extends BaseController
|
|||
|
||||
$dateFromInput = trim((string) $this->request->getPost('date_from'));
|
||||
$dateToInput = trim((string) $this->request->getPost('date_to'));
|
||||
$purposeInput = trim((string) $this->request->getPost('purpose'));
|
||||
$eraseDateInput = trim((string) $this->request->getPost('erase_date'));
|
||||
|
||||
// Purpose is a fixed ABDM vocabulary, selected from a dropdown (not free
|
||||
// text) so it can never be mistyped into an invalid purpose code.
|
||||
$purposeTextByCode = [
|
||||
'CAREMGT' => 'Care Management',
|
||||
'BTG' => 'Break The Glass',
|
||||
'PUBHLTH' => 'Public Health',
|
||||
'HPAYMT' => 'Healthcare Payment',
|
||||
'DSRCH' => 'Disease Specific Healthcare Research',
|
||||
'PATRQT' => 'Self Requested',
|
||||
];
|
||||
$purposeCode = strtoupper(trim((string) $this->request->getPost('purpose_code')));
|
||||
if (! array_key_exists($purposeCode, $purposeTextByCode)) {
|
||||
$purposeCode = 'CAREMGT';
|
||||
}
|
||||
|
||||
$istTz = new \DateTimeZone('Asia/Kolkata');
|
||||
$utcTz = new \DateTimeZone('UTC');
|
||||
|
|
@ -1388,7 +1403,7 @@ class Patient extends BaseController
|
|||
} catch (\Throwable $e) {
|
||||
return $this->response->setStatusCode(422)->setJSON([
|
||||
'ok' => 0,
|
||||
'error' => 'Invalid "Valid From" date.',
|
||||
'error' => 'Invalid "Date From" date.',
|
||||
]);
|
||||
}
|
||||
try {
|
||||
|
|
@ -1396,13 +1411,28 @@ class Patient extends BaseController
|
|||
} catch (\Throwable $e) {
|
||||
return $this->response->setStatusCode(422)->setJSON([
|
||||
'ok' => 0,
|
||||
'error' => 'Invalid "Valid To" date.',
|
||||
'error' => 'Invalid "Date To" date.',
|
||||
]);
|
||||
}
|
||||
if ($fromIst->getTimestamp() >= $toIst->getTimestamp()) {
|
||||
return $this->response->setStatusCode(422)->setJSON([
|
||||
'ok' => 0,
|
||||
'error' => '"Valid From" date must be earlier than "Valid To" date.',
|
||||
'error' => '"Date From" must be earlier than "Date To".',
|
||||
]);
|
||||
}
|
||||
|
||||
try {
|
||||
$eraseIst = $eraseDateInput !== '' ? new \DateTimeImmutable($eraseDateInput, $istTz) : $nowIst->modify('+365 days');
|
||||
} catch (\Throwable $e) {
|
||||
return $this->response->setStatusCode(422)->setJSON([
|
||||
'ok' => 0,
|
||||
'error' => 'Invalid "Expiry Date" date.',
|
||||
]);
|
||||
}
|
||||
if ($eraseIst->setTime(23, 59, 59)->getTimestamp() < $toIst->getTimestamp()) {
|
||||
return $this->response->setStatusCode(422)->setJSON([
|
||||
'ok' => 0,
|
||||
'error' => '"Expiry Date" must be on or after "Date To".',
|
||||
]);
|
||||
}
|
||||
|
||||
|
|
@ -1413,12 +1443,12 @@ class Patient extends BaseController
|
|||
|
||||
$fromUtc = $fromIst->setTime(0, 0, 0)->setTimezone($utcTz)->format('Y-m-d\TH:i:s.000\Z');
|
||||
$toUtc = $toIst->setTimezone($utcTz)->format('Y-m-d\TH:i:s.000\Z');
|
||||
$eraseAtUtc = $nowIst->modify('+365 days')->setTime(23, 59, 59)->setTimezone($utcTz)->format('Y-m-d\TH:i:s.000\Z');
|
||||
$eraseAtUtc = $eraseIst->setTime(23, 59, 59)->setTimezone($utcTz)->format('Y-m-d\TH:i:s.000\Z');
|
||||
|
||||
$consent = [
|
||||
'purpose' => [
|
||||
'code' => 'CAREMGT',
|
||||
'text' => $purposeInput !== '' ? $purposeInput : 'Care Management',
|
||||
'code' => $purposeCode,
|
||||
'text' => $purposeTextByCode[$purposeCode],
|
||||
'refUri' => 'https://abdm.gov.in',
|
||||
],
|
||||
'patient' => [
|
||||
|
|
|
|||
|
|
@ -504,19 +504,30 @@ if ($patientPhotoPath === '') {
|
|||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="mb-3">
|
||||
<label class="form-label fw-semibold" for="abdmCustomPurpose">Purpose Of Request</label>
|
||||
<select class="form-select" id="abdmCustomPurpose">
|
||||
<option value="CAREMGT" data-text="Care Management" selected>Care Management</option>
|
||||
<option value="BTG" data-text="Break The Glass">Break The Glass</option>
|
||||
<option value="PUBHLTH" data-text="Public Health">Public Health</option>
|
||||
<option value="HPAYMT" data-text="Healthcare Payment">Healthcare Payment</option>
|
||||
<option value="DSRCH" data-text="Disease Specific Healthcare Research">Disease Specific Healthcare Research</option>
|
||||
<option value="PATRQT" data-text="Self Requested">Self Requested</option>
|
||||
</select>
|
||||
</div>
|
||||
<div class="row g-3 mb-3">
|
||||
<div class="col-md-6">
|
||||
<label class="form-label fw-semibold" for="abdmCustomDateFrom">Valid From</label>
|
||||
<div class="col-md-4">
|
||||
<label class="form-label fw-semibold" for="abdmCustomDateFrom">Date From</label>
|
||||
<input type="date" class="form-control" id="abdmCustomDateFrom">
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<label class="form-label fw-semibold" for="abdmCustomDateTo">Valid To</label>
|
||||
<div class="col-md-4">
|
||||
<label class="form-label fw-semibold" for="abdmCustomDateTo">Date To</label>
|
||||
<input type="date" class="form-control" id="abdmCustomDateTo">
|
||||
</div>
|
||||
</div>
|
||||
<div class="mb-2">
|
||||
<label class="form-label fw-semibold" for="abdmCustomPurpose">Purpose</label>
|
||||
<input type="text" class="form-control" id="abdmCustomPurpose" value="Care Management">
|
||||
<div class="col-md-4">
|
||||
<label class="form-label fw-semibold" for="abdmCustomEraseDate">Expiry Date</label>
|
||||
<input type="date" class="form-control" id="abdmCustomEraseDate">
|
||||
</div>
|
||||
</div>
|
||||
<div class="small text-danger d-none" id="abdmCustomConsentError"></div>
|
||||
</div>
|
||||
|
|
@ -1074,6 +1085,11 @@ $(function() {
|
|||
if (!$('#abdmCustomDateTo').val()) {
|
||||
$('#abdmCustomDateTo').val(new Date().toISOString().slice(0, 10));
|
||||
}
|
||||
if (!$('#abdmCustomEraseDate').val()) {
|
||||
var erase = new Date();
|
||||
erase.setDate(erase.getDate() + 365);
|
||||
$('#abdmCustomEraseDate').val(erase.toISOString().slice(0, 10));
|
||||
}
|
||||
});
|
||||
|
||||
$(document).off('click.abdmOpd', '#btnSendCustomConsent').on('click.abdmOpd', '#btnSendCustomConsent', function() {
|
||||
|
|
@ -1092,8 +1108,13 @@ $(function() {
|
|||
|
||||
var dateFrom = $('#abdmCustomDateFrom').val();
|
||||
var dateTo = $('#abdmCustomDateTo').val();
|
||||
var eraseDate = $('#abdmCustomEraseDate').val();
|
||||
if (dateFrom && dateTo && dateFrom >= dateTo) {
|
||||
$('#abdmCustomConsentError').removeClass('d-none').text('"Valid From" date must be earlier than "Valid To" date.');
|
||||
$('#abdmCustomConsentError').removeClass('d-none').text('"Date From" must be earlier than "Date To".');
|
||||
return;
|
||||
}
|
||||
if (eraseDate && dateTo && eraseDate < dateTo) {
|
||||
$('#abdmCustomConsentError').removeClass('d-none').text('"Expiry Date" must be on or after "Date To".');
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
@ -1109,7 +1130,8 @@ $(function() {
|
|||
hi_types: hiTypes,
|
||||
date_from: dateFrom,
|
||||
date_to: dateTo,
|
||||
purpose: $('#abdmCustomPurpose').val()
|
||||
erase_date: eraseDate,
|
||||
purpose_code: $('#abdmCustomPurpose').val()
|
||||
}
|
||||
}).done(function(data) {
|
||||
if (!data || data.ok !== 1) {
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user