|
@@ -0,0 +1,261 @@
|
|
|
+<div id="erxApp">
|
|
|
+ <div class="d-flex align-items-center pb-2">
|
|
|
+ <h4 class="font-weight-bold m-0">ERx</h4>
|
|
|
+ <span class="mx-2 text-secondary">|</span>
|
|
|
+ <a class="py-0 font-weight-normal c-pointer" v-on:click.prevent="showPopup('erx-poppup')">Add</a>
|
|
|
+ </div>
|
|
|
+ <table class="table table-sm table-bordered mb-0" style="table-layout: fixed">
|
|
|
+ <thead>
|
|
|
+ <tr>
|
|
|
+ <th class="px-2 text-secondary border-bottom-0 width-30px">#</th>
|
|
|
+ <th class="px-2 text-secondary border-bottom-0">Medication</th>
|
|
|
+ <th class="px-2 text-secondary border-bottom-0">Strength</th>
|
|
|
+ <th class="px-2 text-secondary border-bottom-0">Amount</th>
|
|
|
+ <th class="px-2 text-secondary border-bottom-0">Route</th>
|
|
|
+ <th class="px-2 text-secondary border-bottom-0">Frequency</th>
|
|
|
+ <th class="px-2 text-secondary border-bottom-0">Dispense</th>
|
|
|
+ <th class="px-2 text-secondary border-bottom-0">Refills</th>
|
|
|
+ <th class="px-2 text-secondary border-bottom-0">Purpose</th>
|
|
|
+ <th class="px-2 text-secondary border-bottom-0">Pharmacy</th>
|
|
|
+ <th class="px-2 text-secondary border-bottom-0"> </th>
|
|
|
+ </tr>
|
|
|
+ </thead>
|
|
|
+ <tbody>
|
|
|
+ <tr v-for="(item, index) in items">
|
|
|
+ <td class="px-2">#</td>
|
|
|
+ <td class="px-2">@{{item.medication}}</td>
|
|
|
+ <td class="px-2">@{{item.strength}}</td>
|
|
|
+ <td class="px-2">@{{item.amount}}</td>
|
|
|
+ <td class="px-2">@{{item.route}}</td>
|
|
|
+ <td class="px-2">@{{item.frequency}}</td>
|
|
|
+ <td class="px-2">@{{item.dispense}}</td>
|
|
|
+ <td class="px-2">@{{item.refills}}</td>
|
|
|
+ <td class="px-2">@{{item.purpose}}</td>
|
|
|
+ <td class="px-2">@{{item.pharmacy}}</td>
|
|
|
+ <td class="px-2 text-nowrap">
|
|
|
+ <a class="mr-2 c-pointer" v-on:click.prevent="showPopup('erx-popup', item)">Edit</a>
|
|
|
+ <a class="mr-2 c-pointer" v-if="item.is_open" v-on:click.prevent="closeItem(item)">Close</a>
|
|
|
+ <a class="mr-2 c-pointer" v-if="!item.is_open" v-on:click.prevent="openItem(item)">Open</a>
|
|
|
+ </td>
|
|
|
+ </tr>
|
|
|
+ </tbody>
|
|
|
+ </table>
|
|
|
+ <div class="stag-popup stag-popup-sm mcp-theme-1" stag-popup-key="erx-popup">
|
|
|
+ <form method="POST" action="/api/appointment/create">
|
|
|
+ <h3 class="stag-popup-title mb-2">
|
|
|
+ <span>@{{ popupMode === 'add' ? 'Add ERx Item' : 'Edit ERx Item' }}</span>
|
|
|
+ <a href="#" class="ml-auto text-secondary"
|
|
|
+ onclick="return closeStagPopup()"><i class="fa fa-times-circle"></i></a>
|
|
|
+ </h3>
|
|
|
+ <div class="row mb-2">
|
|
|
+ <div class="col-6">
|
|
|
+ <label class="text-sm text-secondary mb-1">Medication</label>
|
|
|
+ <input type="text" v-model="popupItem.medication" class="form-control form-control-sm">
|
|
|
+ </div>
|
|
|
+ <div class="col-6">
|
|
|
+ <label class="text-sm text-secondary mb-1">Strength</label>
|
|
|
+ <input type="text" v-model="popupItem.strength" class="form-control form-control-sm">
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="row mb-2">
|
|
|
+ <div class="col-6">
|
|
|
+ <label class="text-sm text-secondary mb-1">Amount</label>
|
|
|
+ <input type="text" v-model="popupItem.amount" class="form-control form-control-sm">
|
|
|
+ </div>
|
|
|
+ <div class="col-6">
|
|
|
+ <label class="text-sm text-secondary mb-1">Route</label>
|
|
|
+ <input type="text" v-model="popupItem.route" class="form-control form-control-sm">
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="row mb-2">
|
|
|
+ <div class="col-6">
|
|
|
+ <label class="text-sm text-secondary mb-1">Frequency</label>
|
|
|
+ <input type="text" v-model="popupItem.frequency" class="form-control form-control-sm">
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="row mb-2">
|
|
|
+ <div class="col-6">
|
|
|
+ <label class="text-sm text-secondary mb-1">Dispense</label>
|
|
|
+ <input type="text" v-model="popupItem.dispense" class="form-control form-control-sm">
|
|
|
+ </div>
|
|
|
+ <div class="col-6">
|
|
|
+ <label class="text-sm text-secondary mb-1">Refills</label>
|
|
|
+ <input type="text" v-model="popupItem.refills" class="form-control form-control-sm">
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="row mb-2">
|
|
|
+ <div class="col-12">
|
|
|
+ <label class="text-sm text-secondary mb-1">Purpose</label>
|
|
|
+ <input type="text" v-model="popupItem.purpose" class="form-control form-control-sm">
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <hr class="mt-3 mb-2">
|
|
|
+
|
|
|
+ <div class="row mb-2">
|
|
|
+ <div class="col-12">
|
|
|
+ <label class="text-sm text-secondary mb-1 font-weight-bold">Preferred Pharmacy</label>
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="row mb-2">
|
|
|
+ <div class="col-8">
|
|
|
+ <label class="text-sm text-secondary mb-1">Business Name</label>
|
|
|
+ <input type="text" v-model="popupItem.pharmacyName" class="form-control form-control-sm">
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="row mb-2">
|
|
|
+ <div class="col-6">
|
|
|
+ <label class="text-sm text-secondary mb-1">City</label>
|
|
|
+ <input type="text" v-model="popupItem.pharmacyCity" class="form-control form-control-sm">
|
|
|
+ </div>
|
|
|
+ <div class="col-6">
|
|
|
+ <label class="text-sm text-secondary mb-1">State</label>
|
|
|
+ <input type="text" v-model="popupItem.pharmacyState" class="form-control form-control-sm">
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="row mb-2">
|
|
|
+ <div class="col-12">
|
|
|
+ <label class="text-sm text-secondary mb-1">Address Memo</label>
|
|
|
+ <input type="text" v-model="popupItem.pharmacyAddressMemo" class="form-control form-control-sm">
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+ <div class="row mb-2">
|
|
|
+ <div class="col-6">
|
|
|
+ <label class="text-sm text-secondary mb-1">Phone</label>
|
|
|
+ <input type="text" v-model="popupItem.pharmacyPhone" class="form-control form-control-sm">
|
|
|
+ </div>
|
|
|
+ <div class="col-6">
|
|
|
+ <label class="text-sm text-secondary mb-1">Fax</label>
|
|
|
+ <input type="text" v-model="popupItem.pharmacyFax" class="form-control form-control-sm">
|
|
|
+ </div>
|
|
|
+ </div>
|
|
|
+
|
|
|
+ <div class="d-flex align-items-center justify-content-center mt-3">
|
|
|
+ <button type="button" class="btn btn-sm btn-primary mr-2" v-on:click.prevent="savePopupItem()">Submit</button>
|
|
|
+ <button type="button" class="btn btn-sm btn-default border" onclick="return closeStagPopup()">Cancel</button>
|
|
|
+ </div>
|
|
|
+ </form>
|
|
|
+ </div>
|
|
|
+</div>
|
|
|
+<script>
|
|
|
+ (function() {
|
|
|
+ <?php
|
|
|
+ $tickets = $patient->tickets->filter(function($_item) {
|
|
|
+ return $_item->category === 'erx';
|
|
|
+ });
|
|
|
+ $items = [];
|
|
|
+ foreach ($tickets as $ticket) {
|
|
|
+ $item = json_decode($ticket->data);
|
|
|
+ $item->uid = $ticket->uid;
|
|
|
+ $item->is_open = $ticket->is_open;
|
|
|
+ $items[] = $item;
|
|
|
+ }
|
|
|
+ ?>
|
|
|
+ function init() {
|
|
|
+ let items = [];
|
|
|
+ let erxApp = new Vue({
|
|
|
+ el: '#erxApp',
|
|
|
+ delimiters: ['@{{', '}}'],
|
|
|
+ data: {
|
|
|
+ popupMode: 'add',
|
|
|
+ items: {!! json_encode($items) !!},
|
|
|
+ popupItem: {
|
|
|
+ uid: '',
|
|
|
+ is_open: true,
|
|
|
+ medication: '',
|
|
|
+ strength: '',
|
|
|
+ amount: '',
|
|
|
+ route: '',
|
|
|
+ frequency: '',
|
|
|
+ dispense: '',
|
|
|
+ refills: '',
|
|
|
+ purpose: '',
|
|
|
+ pharmacyName: '',
|
|
|
+ pharmacyCity: '',
|
|
|
+ pharmacyState: '',
|
|
|
+ pharmacyAddressMemo: '',
|
|
|
+ pharmacyPhone: '',
|
|
|
+ pharmacyFax: '',
|
|
|
+ },
|
|
|
+ },
|
|
|
+ methods: {
|
|
|
+ showPopup: function(_name, _item) {
|
|
|
+ closeStagPopup();
|
|
|
+ this.popupMode = _item ? 'edit' : 'add';
|
|
|
+ this.popupItem = _item ? _item : {
|
|
|
+ uid: '',
|
|
|
+ is_open: true,
|
|
|
+ medication: '',
|
|
|
+ strength: '',
|
|
|
+ amount: '',
|
|
|
+ route: '',
|
|
|
+ frequency: '',
|
|
|
+ dispense: '',
|
|
|
+ refills: '',
|
|
|
+ purpose: '',
|
|
|
+ pharmacy: '',
|
|
|
+ pharmacyName: '',
|
|
|
+ pharmacyCity: '',
|
|
|
+ pharmacyState: '',
|
|
|
+ pharmacyAddressMemo: '',
|
|
|
+ pharmacyPhone: '',
|
|
|
+ pharmacyFax: '',
|
|
|
+ };
|
|
|
+ showStagPopup('erx-popup');
|
|
|
+ },
|
|
|
+ savePopupItem: function() {
|
|
|
+ let form = $('#erxApp form').first();
|
|
|
+ if(!form[0].checkValidity()) {
|
|
|
+ form[0].reportValidity();
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ // showMask();
|
|
|
+ let payload = {};
|
|
|
+ if(this.popupMode === 'add') {
|
|
|
+ payload.clientUid = '{{ $patient->uid }}';
|
|
|
+ payload.category = 'erx';
|
|
|
+ payload.assignedProUid = '{{ $pro->uid }}';
|
|
|
+ payload.managerProUid = '{{ $pro->uid }}';
|
|
|
+ payload.orderingProUid = '{{ $pro->uid }}';
|
|
|
+ payload.initiatingProUid = '{{ $pro->uid }}';
|
|
|
+ payload.data = JSON.stringify(this.popupItem);
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ payload.uid = this.popupItem.uid;
|
|
|
+ payload.newData = JSON.stringify(this.popupItem);
|
|
|
+ }
|
|
|
+
|
|
|
+ $.post(
|
|
|
+ '/api/ticket/' + (this.popupMode === 'add' ? 'create' : 'updateData'),
|
|
|
+ payload,
|
|
|
+ function(_data) {
|
|
|
+ console.log(_data);
|
|
|
+ fastReload();
|
|
|
+ },
|
|
|
+ 'json');
|
|
|
+
|
|
|
+ return false;
|
|
|
+ },
|
|
|
+ closeItem: function(_item) {
|
|
|
+ $.post('/api/ticket/close', {
|
|
|
+ uid: _item.uid
|
|
|
+ }, function(_data) {
|
|
|
+ fastReload();
|
|
|
+ });
|
|
|
+ },
|
|
|
+ openItem: function(_item) {
|
|
|
+ $.post('/api/ticket/open', {
|
|
|
+ uid: _item.uid
|
|
|
+ }, function(_data) {
|
|
|
+ fastReload();
|
|
|
+ });
|
|
|
+ }
|
|
|
+ },
|
|
|
+ mounted: function () {
|
|
|
+
|
|
|
+ }
|
|
|
+ })
|
|
|
+ }
|
|
|
+ addMCInitializer('erx', init, '#erxApp');
|
|
|
+ })();
|
|
|
+</script>
|