Browse Source

Optimize mc initializer invocation

Vijayakrishnan 4 năm trước cách đây
mục cha
commit
79c187bd63
31 tập tin đã thay đổi với 196 bổ sung1512 xóa
  1. 0 4
      app/Http/Controllers/PatientController.php
  2. 17 7
      public/js/mc-init.js
  3. 137 134
      resources/views/app/dashboard.blade.php
  4. 1 1
      resources/views/app/patient/appointment-calendar.blade.php
  5. 1 1
      resources/views/app/patient/canvas-sections/allergies/form.blade.php
  6. 1 1
      resources/views/app/patient/canvas-sections/care-team/form.blade.php
  7. 1 1
      resources/views/app/patient/canvas-sections/dx/form.blade.php
  8. 1 1
      resources/views/app/patient/canvas-sections/fancy/form.blade.php
  9. 1 1
      resources/views/app/patient/canvas-sections/fhx/form.blade.php
  10. 5 5
      resources/views/app/patient/canvas-sections/pmhx/form.blade.php
  11. 5 5
      resources/views/app/patient/canvas-sections/pshx/form.blade.php
  12. 1 1
      resources/views/app/patient/canvas-sections/rx/form.blade.php
  13. 6 6
      resources/views/app/patient/canvas-sections/sochx/form.blade.php
  14. 1 1
      resources/views/app/patient/canvas-sections/vitals/form.blade.php
  15. 0 94
      resources/views/app/patient/dx-and-focus-areas.blade.php
  16. 0 240
      resources/views/app/patient/manage-appointment.blade.php
  17. 0 124
      resources/views/app/patient/medications.blade.php
  18. 1 1
      resources/views/app/patient/note/dashboard.blade.php
  19. 0 140
      resources/views/app/patient/partials/_appointment-form.blade.php
  20. 0 143
      resources/views/app/patient/partials/appointments.blade.php
  21. 0 105
      resources/views/app/patient/partials/dx-table-row.blade.php
  22. 0 196
      resources/views/app/patient/partials/dx-table.blade.php
  23. 0 157
      resources/views/app/patient/partials/dx.blade.php
  24. 3 3
      resources/views/app/patient/sections.blade.php
  25. 7 2
      resources/views/app/patient/settings.blade.php
  26. 1 1
      resources/views/app/practice-management/calendar.blade.php
  27. 2 2
      resources/views/app/practice-management/pro-availability.blade.php
  28. 0 64
      resources/views/layouts/guest_template.blade.php
  29. 0 64
      resources/views/layouts/template.blade.php
  30. 0 3
      routes/web.php
  31. 4 4
      storage/sections/assessment/form.blade.php

+ 0 - 4
app/Http/Controllers/PatientController.php

@@ -231,10 +231,6 @@ class PatientController extends Controller
         return view('app.patient.partials.' . $section, compact('patient', 'selectable'));
     }
 
-    public function manageAppointment(Request $request, Client $patient, Appointment $appointment) {
-        return view('app.patient.manage-appointment', compact('patient', 'appointment'));
-    }
-
     public function calendar(Request $request, Client $patient, Appointment $currentAppointment) {
         return view('app.patient.appointment-calendar', compact('patient', 'currentAppointment'));
     }

+ 17 - 7
public/js/mc-init.js

@@ -1,21 +1,31 @@
 window.mcInitializers = {};
-window.addMCInitializer = function(_name, _func) {
+window.addMCInitializer = function(_name, _func, _container) {
     // if(!!window.mcInitializers[_name]) {
     //     console.warn('ALIX initializer ' + _name + ' exists. Will overwrite.');
     // }
-    window.mcInitializers[_name] = _func;
+    window.mcInitializers[_name] = {
+        func: _func,
+        container: _container
+    };
 };
 window.runMCInitializers = function() {
     if(!!mcInitializers) {
-        for(let func in mcInitializers) {
-            if(mcInitializers.hasOwnProperty(func)) {
+        console.log('ALIX -----------------');
+        for(let initer in mcInitializers) {
+            if(mcInitializers.hasOwnProperty(initer)) {
                 try {
-                    // console.log("ALIX running MC initer", func);
-                    mcInitializers[func]();
+                    let initerObj = mcInitializers[initer];
+                    if(!initerObj.container || $(initerObj.container).length) {
+                        console.log("ALIX running MC initer", initer);
+                        initerObj.func();
+                    }
+                    else {
+                        console.warn("ALIX not running MC initer, not in context", initer);
+                    }
                 }
                 catch(e) {
                     console.warn('MC init error: ', e);
-                    console.warn('Initer: ', func);
+                    console.warn('Initer: ', initer);
                 }
             }
         }

+ 137 - 134
resources/views/app/dashboard.blade.php

@@ -194,154 +194,157 @@
 </div>
 
 <script>
-    addMCInitializer('pro-dashboard', function () {
-        window.apapp = new Vue({
-            el: '#pro-dashboard-container',
-            delimiters: ['@{{', '}}'],
-            data: {
-                selectedDate: '{{ date('Y-m-d') }}',
-                selectedStatus: 'CREATED',
-                events: [],
-                numEventsForDate: 0,
-                filterStatus: '',
-                calendarElem: null,
-                currentMonth: null,
-                currentYear: null,
-            },
-            methods: {
-                formatDate: function (date) {
-                    let d = new Date(date),
-                        month = '' + (d.getMonth() + 1),
-                        day = '' + d.getDate(),
-                        year = d.getFullYear();
+    (function() {
+        function init() {
+            window.apapp = new Vue({
+                el: '#pro-dashboard-container',
+                delimiters: ['@{{', '}}'],
+                data: {
+                    selectedDate: '{{ date('Y-m-d') }}',
+                    selectedStatus: 'CREATED',
+                    events: [],
+                    numEventsForDate: 0,
+                    filterStatus: '',
+                    calendarElem: null,
+                    currentMonth: null,
+                    currentYear: null,
+                },
+                methods: {
+                    formatDate: function (date) {
+                        let d = new Date(date),
+                            month = '' + (d.getMonth() + 1),
+                            day = '' + d.getDate(),
+                            year = d.getFullYear();
 
-                    if (month.length < 2)
-                        month = '0' + month;
-                    if (day.length < 2)
-                        day = '0' + day;
+                        if (month.length < 2)
+                            month = '0' + month;
+                        if (day.length < 2)
+                            day = '0' + day;
 
-                    return [year, month, day].join('-');
-                },
-                onDateChange: function (_newDate) {
-                    // this.loadEvents();
+                        return [year, month, day].join('-');
+                    },
+                    onDateChange: function (_newDate) {
+                        // this.loadEvents();
 
-                    let self = this;
-                    self.selectedDate = _newDate;
-                    this.loadEvents(function() {
-                        self.highlightDatesWithEvents();
-                        self.updateNumEventsForDate();
-                    });
-                },
-                selectToday: function () {
-                    $('.pro-dashboard-inline-calendar table td[data-date]').removeClass('active');
-                    $('.pro-dashboard-inline-calendar table td[data-date="{{ $milliseconds }}"]')
-                        .addClass('active');
-                    // this.onDateChange('{{ date('Y-m-d') }}');
-                },
-                highlightDatesWithEvents: function () {
-                    $('.pro-dashboard-inline-calendar table td[data-date]').removeAttr('has-events');
-                    for (let i = 0; i < this.events.length; i++) {
-                        $('.pro-dashboard-inline-calendar table td[data-date="' + this.events[i].milliseconds + '"]')
-                            .attr('has-events', 1);
-                    }
-                },
-                updateNumEventsForDate: function() {
-                    this.numEventsForDate = 0;
-                    for (let i = 0; i < this.events.length; i++) {
-                        if(this.events[i].dateYMD === this.selectedDate &&
-                            (this.filterStatus === '' || this.filterStatus === this.events[i].status)) {
-                            this.numEventsForDate++;
+                        let self = this;
+                        self.selectedDate = _newDate;
+                        this.loadEvents(function() {
+                            self.highlightDatesWithEvents();
+                            self.updateNumEventsForDate();
+                        });
+                    },
+                    selectToday: function () {
+                        $('.pro-dashboard-inline-calendar table td[data-date]').removeClass('active');
+                        $('.pro-dashboard-inline-calendar table td[data-date="{{ $milliseconds }}"]')
+                            .addClass('active');
+                        // this.onDateChange('{{ date('Y-m-d') }}');
+                    },
+                    highlightDatesWithEvents: function () {
+                        $('.pro-dashboard-inline-calendar table td[data-date]').removeAttr('has-events');
+                        for (let i = 0; i < this.events.length; i++) {
+                            $('.pro-dashboard-inline-calendar table td[data-date="' + this.events[i].milliseconds + '"]')
+                                .attr('has-events', 1);
                         }
-                    }
-                },
-                updateStatus: function(_event) {
-                    $.post('/api/appointment/updateStatus', {
-                        uid: _event.uid,
-                        status: _event.newStatus
-                    }, function(_data) {
-                        if(!_data) {
-                            toastr.error('Unable to update appointment status!');
+                    },
+                    updateNumEventsForDate: function() {
+                        this.numEventsForDate = 0;
+                        for (let i = 0; i < this.events.length; i++) {
+                            if(this.events[i].dateYMD === this.selectedDate &&
+                                (this.filterStatus === '' || this.filterStatus === this.events[i].status)) {
+                                this.numEventsForDate++;
+                            }
                         }
-                        else {
-                            if(!_data.success) {
-                                toastr.error(_data.message);
+                    },
+                    updateStatus: function(_event) {
+                        $.post('/api/appointment/updateStatus', {
+                            uid: _event.uid,
+                            status: _event.newStatus
+                        }, function(_data) {
+                            if(!_data) {
+                                toastr.error('Unable to update appointment status!');
                             }
                             else {
-                                _event.status = _event.newStatus;
-                                toastr.success('The appointment has been updated');
+                                if(!_data.success) {
+                                    toastr.error(_data.message);
+                                }
+                                else {
+                                    _event.status = _event.newStatus;
+                                    toastr.success('The appointment has been updated');
+                                }
                             }
+                        }, 'json')
+                    },
+                    showEditForm: function(_trigger) {
+                        let form = $(_trigger).closest('[moe]').find('form').first();
+                        showMoeFormMask();
+                        form.show();
+                        setTimeout(function() {
+                            initPrimaryForm(form);
+                        }, 0);
+                    },
+                    submitEditForm: function(_trigger) {
+                        let form = $(_trigger).closest('[moe]').find('form').first();
+                        if(!form[0].checkValidity()) {
+                            form[0].reportValidity();
+                            return;
                         }
-                    }, 'json')
-                },
-                showEditForm: function(_trigger) {
-                    let form = $(_trigger).closest('[moe]').find('form').first();
-                    showMoeFormMask();
-                    form.show();
-                    setTimeout(function() {
-                        initPrimaryForm(form);
-                    }, 0);
-                },
-                submitEditForm: function(_trigger) {
-                    let form = $(_trigger).closest('[moe]').find('form').first();
-                    if(!form[0].checkValidity()) {
-                        form[0].reportValidity();
-                        return;
-                    }
-                    $.post(form.attr('url'), form.serialize(), function(_data) {
-                        if(_data && _data.success) {
-                            fastReload();
-                        }
-                        else {
-                            if(_data.message) {
-                                toastr.error(_data.message);
+                        $.post(form.attr('url'), form.serialize(), function(_data) {
+                            if(_data && _data.success) {
+                                fastReload();
                             }
                             else {
-                                toastr.error('Unable to update the appointment');
+                                if(_data.message) {
+                                    toastr.error(_data.message);
+                                }
+                                else {
+                                    toastr.error('Unable to update the appointment');
+                                }
                             }
-                        }
-                    });
-                },
-                cancelEditForm: function(_trigger) {
-                    let form = $(_trigger).closest('[moe]').find('form').first();
-                    hideMoeFormMask();
-                    form.hide();
-                },
-                loadEvents: function(_callback) {
-                    let today = this.calendarElem.datepicker('getDate'),
-                        firstOfMonth = new Date(today.getFullYear(), today.getMonth(), 1),
-                        lastOfMonth = new Date(today.getFullYear(), today.getMonth() + 1, 0),
-                        self = this;
-                    if(this.currentMonth === today.getMonth() && this.currentYear === today.getFullYear()) {
-                        _callback.call(self);
-                    }
-                    else {
-                        $.get('/pro-dashboard-events/' +
-                            this.formatDate(firstOfMonth) + '/' +
-                            this.formatDate(lastOfMonth), function(_data) {
-                            self.events = _data;
-                            self.currentMonth = firstOfMonth.getMonth();
-                            self.currentYear = firstOfMonth.getFullYear();
+                        });
+                    },
+                    cancelEditForm: function(_trigger) {
+                        let form = $(_trigger).closest('[moe]').find('form').first();
+                        hideMoeFormMask();
+                        form.hide();
+                    },
+                    loadEvents: function(_callback) {
+                        let today = this.calendarElem.datepicker('getDate'),
+                            firstOfMonth = new Date(today.getFullYear(), today.getMonth(), 1),
+                            lastOfMonth = new Date(today.getFullYear(), today.getMonth() + 1, 0),
+                            self = this;
+                        if(this.currentMonth === today.getMonth() && this.currentYear === today.getFullYear()) {
                             _callback.call(self);
-                        }, 'json');
+                        }
+                        else {
+                            $.get('/pro-dashboard-events/' +
+                                this.formatDate(firstOfMonth) + '/' +
+                                this.formatDate(lastOfMonth), function(_data) {
+                                self.events = _data;
+                                self.currentMonth = firstOfMonth.getMonth();
+                                self.currentYear = firstOfMonth.getFullYear();
+                                _callback.call(self);
+                            }, 'json');
+                        }
                     }
-                }
-            },
-            mounted: function () {
-                let self = this;
-                this.calendarElem = $('.pro-dashboard-inline-calendar');
-                this.calendarElem.datepicker({
-                    format: 'yyyy-mm-dd'
-                });
-                this.calendarElem.on('changeDate', function () {
-                    self.onDateChange(self.calendarElem.datepicker('getFormattedDate'));
-                });
-                this.selectToday();
-                this.updateNumEventsForDate();
+                },
+                mounted: function () {
+                    let self = this;
+                    this.calendarElem = $('.pro-dashboard-inline-calendar');
+                    this.calendarElem.datepicker({
+                        format: 'yyyy-mm-dd'
+                    });
+                    this.calendarElem.on('changeDate', function () {
+                        self.onDateChange(self.calendarElem.datepicker('getFormattedDate'));
+                    });
+                    this.selectToday();
+                    this.updateNumEventsForDate();
 
-                // this.loadEvents();
-                $('.datepicker-days .day.active').trigger('click');
-            }
-        });
-    });
+                    // this.loadEvents();
+                    $('.datepicker-days .day.active').trigger('click');
+                }
+            });
+        }
+        addMCInitializer('pro-dashboard', init, '#pro-dashboard-container');
+    })();
 </script>
 @endsection

+ 1 - 1
resources/views/app/patient/appointment-calendar.blade.php

@@ -824,7 +824,7 @@
                 });
             }
 
-            addMCInitializer('patient-calendar', init);
+            addMCInitializer('patient-calendar', init, '#calendarApp');
         })();
     </script>
 @endsection

+ 1 - 1
resources/views/app/patient/canvas-sections/allergies/form.blade.php

@@ -158,6 +158,6 @@ $formID = rand(0, 100000);
                 }
             });
         }
-        addMCInitializer('client-allergy', init);
+        addMCInitializer('client-allergy', init, '#allergySection');
     })();
 </script>

+ 1 - 1
resources/views/app/patient/canvas-sections/care-team/form.blade.php

@@ -167,6 +167,6 @@ $formID = rand(0, 100000);
                 }
             });
         }
-        addMCInitializer('client-care-team', init);
+        addMCInitializer('client-care-team', init, '#careTeamSection');
     })();
 </script>

+ 1 - 1
resources/views/app/patient/canvas-sections/dx/form.blade.php

@@ -274,6 +274,6 @@ $formID = rand(0, 100000);
                 }
             });
         }
-        addMCInitializer('client-dx', init);
+        addMCInitializer('client-dx', init, '#dxSection');
     })();
 </script>

+ 1 - 1
resources/views/app/patient/canvas-sections/fancy/form.blade.php

@@ -90,6 +90,6 @@ $formID = rand(0, 100000);
                 }
             });
         }
-        addMCInitializer('client-fancy', init);
+        addMCInitializer('client-fancy', init, '#fancyModule');
     })();
 </script>

+ 1 - 1
resources/views/app/patient/canvas-sections/fhx/form.blade.php

@@ -302,6 +302,6 @@ $formID = rand(0, 100000);
                 }
             });
         }
-        addMCInitializer('client-fhx', init);
+        addMCInitializer('client-fhx', init, '#fhxSection');
     })();
 </script>

+ 5 - 5
resources/views/app/patient/canvas-sections/pmhx/form.blade.php

@@ -43,7 +43,7 @@ if(!$contentData) {
 
 $formID = rand(0, 100000);
 ?>
-<div id="pmhx_{{ $formID }}">
+<div id="pmhxSection">
     <input type="hidden" name="data" value="{{json_encode($contentData)}}">
     <div class="mb-3 d-flex align-items-start">
         <div class="width-100px mr-3">
@@ -180,16 +180,16 @@ $formID = rand(0, 100000);
 
         function init() {
             window.clientPMHXApp = new Vue({
-                el: '#pmhx_{{ $formID }}',
+                el: '#pmhxSection',
                 data: model,
                 mounted: function () {
-                    $('#pmhx_{{ $formID }} [moe][initialized]').removeAttr('initialized');
+                    $('#pmhxSection [moe][initialized]').removeAttr('initialized');
                     initMoes();
                 },
                 watch: {
                     $data: {
                         handler: function(val, oldVal) {
-                            $(this.$el).closest('#pmhx_{{ $formID }}').find('[name="data"]').val(JSON.stringify({
+                            $(this.$el).closest('#pmhxSection').find('[name="data"]').val(JSON.stringify({
                                 bloodType: this.bloodType,
                                 bloodRH: this.bloodRH,
                                 common: this.cleanObject(this.common),
@@ -250,6 +250,6 @@ $formID = rand(0, 100000);
                 }
             });
         }
-        addMCInitializer('client-pmhx', init);
+        addMCInitializer('client-pmhx', init, '#pmhxSection');
     })();
 </script>

+ 5 - 5
resources/views/app/patient/canvas-sections/pshx/form.blade.php

@@ -29,7 +29,7 @@ if(!$contentData) {
 
 $formID = rand(0, 100000);
 ?>
-<div id="pshx_{{ $formID }}">
+<div id="pshxSection">
     <input type="hidden" name="data" value="{{json_encode($contentData)}}">
     <div class="row">
         <div class="col-12">
@@ -158,16 +158,16 @@ $formID = rand(0, 100000);
 
         function init() {
             window.clientPSHXApp = new Vue({
-                el: '#pshx_{{ $formID }}',
+                el: '#pshxSection',
                 data: model,
                 mounted: function () {
-                    $('#pshx_{{ $formID }} [moe][initialized]').removeAttr('initialized');
+                    $('#pshxSection [moe][initialized]').removeAttr('initialized');
                     initMoes();
                 },
                 watch: {
                     $data: {
                         handler: function(val, oldVal) {
-                            $(this.$el).closest('#pshx_{{ $formID }}').find('[name="data"]').val(JSON.stringify({
+                            $(this.$el).closest('#pshxSection').find('[name="data"]').val(JSON.stringify({
                                 common: this.cleanObject(this.common),
                                 customFields: this.customFields,
                                 comments: this.comments,
@@ -226,6 +226,6 @@ $formID = rand(0, 100000);
                 }
             });
         }
-        addMCInitializer('client-pshx', init);
+        addMCInitializer('client-pshx', init, '#pshxSection');
     })();
 </script>

+ 1 - 1
resources/views/app/patient/canvas-sections/rx/form.blade.php

@@ -209,6 +209,6 @@ $formID = rand(0, 100000);
                 }
             });
         }
-        addMCInitializer('client-rx', init);
+        addMCInitializer('client-rx', init, '#rxSection');
     })();
 </script>

+ 6 - 6
resources/views/app/patient/canvas-sections/sochx/form.blade.php

@@ -32,7 +32,7 @@ if(!$contentData) {
 
 $formID = rand(0, 100000);
 ?>
-<div id="sochx_{{ $formID }}">
+<div id="sochxSection">
     <input type="hidden" name="data" value="{{json_encode($contentData)}}">
     <div class="row">
         @for ($i = 0; $i < count($fields); $i++)
@@ -149,12 +149,12 @@ $formID = rand(0, 100000);
 
         function init() {
             window.clientSocHXApp = new Vue({
-                el: '#sochx_{{ $formID }}',
+                el: '#sochxSection',
                 data: model,
                 mounted: function () {
-                    $('#sochx_{{ $formID }} [moe][initialized]').removeAttr('initialized');
+                    $('#sochxSection [moe][initialized]').removeAttr('initialized');
                     initMoes();
-                    $('#sochx_{{ $formID }}').find('[name="data"]').val(JSON.stringify({
+                    $('#sochxSection').find('[name="data"]').val(JSON.stringify({
                         common: this.cleanObject(this.common),
                         customFields: this.customFields,
                         comments: this.comments,
@@ -163,7 +163,7 @@ $formID = rand(0, 100000);
                 watch: {
                     $data: {
                         handler: function(val, oldVal) {
-                            $('#sochx_{{ $formID }}').find('[name="data"]').val(JSON.stringify({
+                            $('#sochxSection').find('[name="data"]').val(JSON.stringify({
                                 common: this.cleanObject(this.common),
                                 customFields: this.customFields,
                                 comments: this.comments,
@@ -222,6 +222,6 @@ $formID = rand(0, 100000);
                 }
             });
         }
-        addMCInitializer('client-sochx', init);
+        addMCInitializer('client-sochx', init, '#sochxSection');
     })();
 </script>

+ 1 - 1
resources/views/app/patient/canvas-sections/vitals/form.blade.php

@@ -183,6 +183,6 @@ $formID = rand(0, 100000);
                 }
             });
         }
-        addMCInitializer('client-vitals', init);
+        addMCInitializer('client-vitals', init, '#vitalsSection');
     })();
 </script>

+ 0 - 94
resources/views/app/patient/dx-and-focus-areas.blade.php

@@ -1,100 +1,6 @@
 @extends ('layouts.patient')
 
 @section('inner-content')
-    {{--<div class="">
-        <div class="d-flex align-items-center pb-2">
-            <h4 class="font-weight-bold m-0">Dx and Focus Areas</h4>
-            <span class="mx-2 text-secondary">|</span>
-            <div moe>
-                <a start show class="">Add</a>
-                <form url="/api/clientInfoLine/create">
-                    <input type="hidden" name="clientUid" value="{{ $patient->uid }}">
-                    <input type="hidden" name="category" value="dx">
-                    <div class="mb-2"><input type="text" class="form-control form-control-sm" name="ICD" value="" placeholder="ICD"></div>
-                    <div class="mb-2"><input type="text" class="form-control form-control-sm" name="contentText" value="" placeholder="Title"></div>
-                    <div class="mb-2">
-                        <select name="Chronic or Acute" class="form-control form-control-sm pl-1">
-                            <option value="">Chronic or Acute (select one)</option>
-                            <option value="Chronic">Chronic</option>
-                            <option value="Acute">Acute</option>
-                        </select>
-                    </div>
-                    <div class="mb-2">
-                        <label class="m-0 text-left d-flex align-items-center">
-                            <input type="checkbox" name="IsCurrent" value="">
-                            <span class="ml-1">Is Current?</span>
-                        </label>
-                    </div>
-                    <div class="mb-2"><input type="text" class="form-control form-control-sm" name="Prognosis" value="" placeholder="Prognosis"></div>
-                    <div class="mb-2"><textarea type="text" class="form-control form-control-sm" name="Treatment Goal" value="" placeholder="Treatment Goal"></textarea></div>
-                    <div class="mb-2"><textarea type="text" class="form-control form-control-sm" name="Treatment Plan" value="" placeholder="Treatment Plan"></textarea></div>
-                    <div class="d-flex align-items-center">
-                        <button class="btn btn-sm btn-primary mr-2" type="button" submit>Save</button>
-                        <button class="btn btn-sm btn-default mr-2 border" type="button" cancel>Cancel</button>
-                    </div>
-                </form>
-            </div>
-        </div>
-        <table class="table table-striped table-sm table-bordered mb-0">
-            <thead>
-            <tr>
-                <th class="px-2 text-secondary">Title</th>
-                <th class="px-2 text-secondary">ICD</th>
-                <th class="px-2 text-secondary">Chronic or Acute</th>
-                <th class="px-2 text-secondary">Current?</th>
-                <th class="px-2 text-secondary">Prognosis</th>
-                <th class="px-2 text-secondary">Treatment Goal</th>
-                <th class="px-2 text-secondary">Treatment Plan</th>
-                <th class="px-2 text-secondary">Created By</th>
-                <th class="px-2 text-secondary">Created At</th>
-                <th class="px-2 text-secondary delete-column">&nbsp;</th>
-            </tr>
-            </thead>
-            <tbody>
-            <?php
-            $currentDxs = new \Illuminate\Support\Collection();
-            $previousDxs = new \Illuminate\Support\Collection();
-            foreach($dxInfoLines as $line) {
-                if(@$line->contentDetail()->{"IsCurrent"}) {
-                    $currentDxs->add($line);
-                }
-                else {
-                    $previousDxs->add($line);
-                }
-            }
-            ?>
-            @include('app.patient.partials.dx-table-row', ['dxRows' => $currentDxs, 'showCreated' => true])
-            @include('app.patient.partials.dx-table-row', ['dxRows' => $previousDxs, 'showCreated' => true])
-            </tbody>
-        </table>
-    </div>
-    <script>
-        (function() {
-            function init() {
-                $('input[type="text"][name="ICD"]').each(function() {
-                    var elem = this, dynID = 'icd-' + Math.ceil(Math.random() * 1000000);
-                    $(elem).attr('id', dynID);
-                    new window.Def.Autocompleter.Search(dynID,
-                        'https://clinicaltables.nlm.nih.gov/api/icd10cm/v3/search?sf=code,name&ef=name',
-                        {
-                            tableFormat: true,
-                            valueCols: [0],
-                            colHeaders: ['Code', 'Name'],
-                        }
-                    );
-                    window.Def.Autocompleter.Event.observeListSelections(dynID, function() {
-                        var autocomp = elem.autocomp;
-                        var name = autocomp.getSelectedItemData()[0].data['name'];
-                        $(elem).closest('form').find('[name="contentText"]').val(name);
-                        return false;
-                    });
-                });
-            }
-            addMCInitializer('patient-dx-list', init);
-        })();
-    </script>
-
-    <hr>--}}
     <div class="client-single-dashboard">
         <div class="d-flex align-items-center pb-2">
             <h6 class="my-0 font-weight-bold">Current Problems / Focus Areas</h6>

+ 0 - 240
resources/views/app/patient/manage-appointment.blade.php

@@ -1,240 +0,0 @@
-@extends ('layouts.patient')
-
-@section('inner-content')
-    <link href='/fullcalendar-5.3.2/lib/main.css' rel='stylesheet' />
-    <script src='/fullcalendar-5.3.2/lib/main.js'></script>
-    <div class="d-flex align-items-center pb-2">
-        <h4 class="font-weight-bold m-0 font-size-16">
-            {{ $appointment && $appointment->uid ? 'Edit Appointment' : 'Book New Appointment' }}
-            @if($appointment && $appointment->uid)
-                <span class="text-secondary mx-2">|</span>
-                <a href="/patients/view/{{$patient->uid}}/manage-appointment" class="font-weight-normal">Book New Appointment</a>
-            @endif
-        </h4>
-    </div>
-    <hr class="mt-2 mb-3">
-    <div class="d-flex align-items-start appt-form">
-        <form action="/api/appointment/{{ $appointment && $appointment->uid ? 'update' : 'create' }}" method="post" class="appt-form-col pr-2">
-            @if($appointment && $appointment->uid)
-                <?php $defaultProUid = $appointment->pro->uid; ?>
-                <input name="uid" type="hidden" value="{{ $appointment->uid }}">
-            @else
-                <?php $defaultProUid = $pro->uid; ?>
-                <input name="clientUid" type="hidden" value="{{ $patient->uid }}">
-            @endif
-            <div class="mb-3">
-                <label class="text-secondary mb-1">Patient</label>
-                <div class="font-weight-bold">{{ $patient->displayName() }}</div>
-            </div>
-            <div class="mb-3">
-                <label class="text-secondary mb-1">Pro *</label>
-                <select name="proUid" class="form-control form-control-sm">
-                    <option value="">-- select --</option>
-                    @foreach($pros as $iPro)
-                        <option value="{{$iPro->uid}}" {{ $iPro->uid === $defaultProUid ? 'selected' : '' }}>{{$iPro->displayName()}}</option>
-                    @endforeach
-                </select>
-            </div>
-            <div class="mb-3">
-                <label class="text-secondary mb-1">Timezone *</label>
-                <select name="timeZone" class="form-control form-control-sm" required>
-                    <option value=""> --select-- </option>
-                    <option {{ ($appointment && $appointment->timezone === 'EASTERN') || (!$appointment || !$appointment->uid) ? 'selected' : '' }}
-                            value="EASTERN">Eastern</option>
-                    <option {{ $appointment && $appointment->timezone === 'CENTRAL' ? 'selected' : '' }}
-                            value="CENTRAL">Central</option>
-                    <option {{ $appointment && $appointment->timezone === 'MOUNTAIN' ? 'selected' : '' }}
-                            value="MOUNTAIN">Mountain</option>
-                    <option {{ $appointment && $appointment->timezone === 'PACIFIC' ? 'selected' : '' }}
-                            value="PACIFIC">Pacific</option>
-                    <option {{ $appointment && $appointment->timezone === 'ALASKA' ? 'selected' : '' }}
-                            value="ALASKA">Alaska</option>
-                    <option {{ $appointment && $appointment->timezone === 'HAWAII' ? 'selected' : '' }}
-                            value="HAWAII">Hawaii</option>
-                    <option {{ $appointment && $appointment->timezone === 'PUERTO_RICO' ? 'selected' : '' }}
-                            value="PUERTO_RICO">Puerto Rico</option>
-                </select>
-            </div>
-            <div class="mb-3">
-                <label class="text-secondary mb-1">Date *</label>
-                <input name="date" class="form-control form-control-sm" type="date"
-                       value="{{ $appointment && $appointment->raw_date ? $appointment->raw_date : date('Y-m-d') }}"
-                       required>
-            </div>
-            <div class="mb-3">
-                <label class="text-secondary mb-1">Start Time *</label>
-                <input name="startTime" class="form-control form-control-sm" type="time"
-                       value="{{ $appointment && $appointment->raw_start_time ? $appointment->raw_start_time : '' }}"
-                       required>
-            </div>
-            <div class="mb-3">
-                <label class="text-secondary mb-1">End Time</label>
-                <input name="endTime" class="form-control form-control-sm" type="time"
-                       value="{{ $appointment && $appointment->raw_end_time ? $appointment->raw_end_time : '' }}">
-            </div>
-            <div class="mb-3">
-                <label class="text-secondary mb-1">Title</label>
-                <input name="title" class="form-control form-control-sm" type="text"
-                       value="{{ $appointment && $appointment->title ? $appointment->title : '' }}"
-                       placeholder="(optional)">
-            </div>
-            <div class="mb-3">
-                <label class="text-secondary mb-1">Description</label>
-                <textarea name="description" class="form-control form-control-sm"
-                          type="text"
-                          placeholder="(optional)"
-                >{{ $appointment && $appointment->description ? $appointment->description : '' }}</textarea>
-            </div>
-            <div class="mb-3">
-                <button class="btn btn-sm btn-primary d-block w-100 font-weight-bold apply-appt-button" disabled>
-                    @if($appointment && $appointment->uid)
-                        Update Appointment
-                    @else
-                        Book Appointment
-                    @endif
-                </button>
-            </div>
-        </form>
-        <div class="appt-calendar-col pl-2 border-left border-light">
-            <div class="stag-fc-container">
-
-            </div>
-        </div>
-    </div>
-    <script>
-        (function() {
-            let calendarObject = null;
-            function init() {
-                calendarObject = new FullCalendar.Calendar($('.stag-fc-container')[0], {
-                    headerToolbar: {
-                        left: 'prev,next today',
-                        center: 'title',
-                        right: 'dayGridMonth,timeGridWeek,timeGridDay'
-                    },
-                    initialDate: '{{ date('Y-m-d') }}',
-                    editable: false,
-                    navLinks: true,
-                    dayMaxEvents: false,
-                    events: function(info, successCallback, failureCallback) {
-                        let proUid = $('.appt-form [name="proUid"]').val();
-                        if(!proUid) {
-                            successCallback([]); // no events if no pro selected
-                            return;
-                        }
-                        let timeZone = $('.appt-form [name="timeZone"]').val();
-                        if(!timeZone) {
-                            successCallback([]); // no events if no tz selected
-                            return;
-                        }
-                        $.get('/api/appointment/getAllAppointmentsForPro' +
-                            '?proUid=' + proUid +
-                            '&start=' + info.startStr.substr(0, 10) +
-                            '&end=' + info.endStr.substr(0, 10) +
-                            '&timeZone=' + timeZone, function(_data) {
-                        // $.get('/api/appointment/getAllAppointmentsForPro?start=1990-01-01&end=2025-01-01&timeZone=CENTRAL', function(_data) {
-                            if(_data && _data.success) {
-                                successCallback(_data.data);
-                            }
-                            else {
-                                failureCallback('Unable to fetch appointments!');
-                            }
-                        }, 'json');
-                    },
-                    loading: function(bool) {
-
-                    },
-                    dateClick: function(info) {
-                        $('.appt-form td.stag-selected').removeClass('stag-selected');
-                        $(info.dayEl).addClass('stag-selected');
-                        $('.appt-form [name="date"]').val(info.dateStr.substr(0, 10));
-                        $('.apply-appt-button').prop('disabled', false);
-                    },
-                    eventClassNames: function(arg) {
-                        @if($appointment && $appointment->uid)
-                            if(arg.event.extendedProps.appointmentUid === '{{ $appointment->uid }}') {
-                                return ['stag-current-appt'];
-                            }
-                        @endif
-                    }
-                });
-                calendarObject.render();
-
-                $(document).on('change', '.appt-form [name="proUid"], .appt-form [name="timeZone"]', function() {
-                    calendarObject.refetchEvents();
-                });
-
-                $(document).on('change', '.appt-form [name="date"]', function() {
-                    $('.appt-form td.stag-selected').removeClass('stag-selected');
-                    if(!$(this).val()) return;
-                    calendarObject.gotoDate($(this).val());
-                    $('.fc-day[data-date="' + $(this).val() + '"]').addClass('stag-selected');
-                });
-
-                $('.appt-form [name="date"]').trigger('change');
-
-                $('form.appt-form-col').on('submit', function() {
-                    let form = $(this);
-                    if(!form[0].checkValidity()) {
-                        form[0].reportValidity();
-                        return false;
-                    }
-                    $('.apply-appt-button').prop('disabled', true);
-                    $('.appt-form [name="startTime"]').val($('.appt-form [name="startTime"]').val().substr(0, 5));
-                    $('.appt-form [name="endTime"]').val($('.appt-form [name="endTime"]').val().substr(0, 5));
-                    $.post(form.attr('action'), form.serialize(), function(_data) {
-                        if(_data && _data.success) {
-                            @if($appointment && $appointment->uid)
-                                toastr.success('Appointment updated successfully');
-                                $('.apply-appt-button').prop('disabled', true);
-                            @else
-                                toastr.success('Appointment booked successfully');
-                                fastLoad('/patients/view/{{ $patient->uid  }}/manage-appointment/' + _data.data);
-                            @endif
-                            calendarObject.refetchEvents();
-                        }
-                        else {
-                            if(_data && _data.message) {
-                                toastr.error(_data.message);
-                            }
-                            else {
-                                @if($appointment && $appointment->uid)
-                                    toastr.error('Unable to update appointment!');
-                                @else
-                                    toastr.error('Unable to book appointment!');
-                                @endif
-
-                            }
-                        }
-                    }, 'json');
-                    return false;
-                });
-
-                $(document).on('change input paste', '.appt-form-col *', function() {
-                    updateCalendarTitle();
-                    $('.apply-appt-button').prop('disabled', false);
-                });
-
-                function updateCalendarTitle() {
-                    $('.stag-calendar-header-extra').remove();
-                    if(!$('.appt-form [name="proUid"]').val() || !$('.appt-form [name="timeZone"]').val()) {
-                        $('.fc-toolbar-title').parent().addClass('mb-3').removeClass('text-center');
-                        return;
-                    }
-                    else {
-                        $('.fc-toolbar-title').parent().removeClass('mb-3').addClass('text-center');
-                    }
-                    let html = '<div class="stag-calendar-header-extra d-inline-flex">' +
-                        '<span class="text-secondary">Pro:</span>&nbsp;' +
-                        '<span class="font-weight-bold mr-4">' + $('.appt-form [name="proUid"] option:selected').text() + '</span>' +
-                        '<span class="text-secondary">Times in</span>&nbsp;' +
-                        '<span class="font-weight-bold">' + $('.appt-form [name="timeZone"] option:selected').text() + '</span>' +
-                        '</div>';
-                    $(html).insertAfter('.fc-toolbar-title');
-                }
-
-                updateCalendarTitle();
-            }
-            addMCInitializer('patient-manage-appointment', init);
-        })();
-    </script>
-@endsection

+ 0 - 124
resources/views/app/patient/medications.blade.php

@@ -1,129 +1,5 @@
 @extends ('layouts.patient')
 @section('inner-content')
-    {{--<div class="">
-        <div class="d-flex align-items-center pb-2">
-            <h4 class="font-weight-bold m-0">Medications</h4>
-            <span class="mx-2 text-secondary">|</span>
-            <div moe>
-                <a start show class="">Add</a>
-                <form url="/api/clientInfoLine/create">
-                    <input type="hidden" name="clientUid" value="{{ $patient->uid }}">
-                    <input type="hidden" name="category" value="rx">
-                    <div class="mb-2">
-                        <input type="text" class="form-control form-control-sm" name="contentText" value="" placeholder="Medication">
-                    </div>
-                    <div class="mb-2">
-                        <input type="text" class="form-control form-control-sm" name="strength" value="" placeholder="Strength/Form">
-                    </div>
-                    <div class="mb-2">
-                        <input type="text" class="form-control form-control-sm" name="frequency" value="" placeholder="Frequency">
-                    </div>
-                    <div class="d-flex align-items-center">
-                        <button class="btn btn-sm btn-primary mr-2" type="button" submit>Save</button>
-                        <button class="btn btn-sm btn-default mr-2 border" type="button" cancel>Cancel</button>
-                    </div>
-                </form>
-            </div>
-		&nbsp;|&nbsp;
-	    <div moe>
-		<a start show class="">Add Multiple</a>
-		<form url="/api/clientInfoLine/createMultiple">
-		    <input type="hidden" name="clientUid" value="{{ $patient->uid }}">
-                    <input type="hidden" name="category" value="rx">
-                    <div class="mb-2"><textarea class="form-control form-control-sm" rows="8" name="contentTexts" value="" placeholder="Medications"></textarea></div>
-                    <div class="d-flex align-items-center">
-                        <button class="btn btn-sm btn-primary mr-2" submit>Save</button>
-                        <button class="btn btn-sm btn-default mr-2 border" cancel>Cancel</button>
-                    </div>
-		</form>
-            </div>
-        </div>
-        <table class="table table-striped table-sm table-bordered mb-0">
-            <thead>
-            <tr>
-                <th class="px-2 text-secondary">Medication</th>
-                <th class="px-2 text-secondary">Strength / Form</th>
-                <th class="px-2 text-secondary">Frequency</th>
-                <th class="px-2 text-secondary">Created By</th>
-                <th class="px-2 text-secondary">Created At</th>
-                <th class="px-2 text-secondary delete-column">&nbsp;</th>
-            </tr>
-            </thead>
-            <tbody>
-            @foreach($infoLines as $line)
-                <tr>
-                    <td class="px-2">{{$line->content_text}}</td>
-                    <td class="px-2">{{isset($line->contentDetail()->strength) ? $line->contentDetail()->strength : '-' }}</td>
-                    <td class="px-2">{{isset($line->contentDetail()->frequency) ? $line->contentDetail()->frequency : '-' }}</td>
-                    <td class="px-2">{{$line->createdBySession && $line->createdBySession->pro ? $line->createdBySession->pro->displayName() : '-'}}</td>
-                    <td class="px-2">{{ friendly_date_time($line->created_at) }}</td>
-                    <td class="px-2 text-center delete-column">
-                        <span moe relative class="mr-2">
-                            <a class="on-hover-opaque" start show title="Edit">
-                                <i class="font-size-11 fa fa-edit"></i>
-                            </a>
-                            <form url="/api/clientInfoLine/updateContent" right>
-                                <input type="hidden" name="uid" value="{{ $line->uid }}">
-                                <input type="hidden" name="clientUid" value="{{ $patient->uid }}">
-                                <input type="hidden" name="category" value="rx">
-                                <div class="mb-2">
-                                    <input type="text" class="form-control form-control-sm" name="contentText" value="{{$line->content_text}}" placeholder="Medication">
-                                </div>
-                                <div class="mb-2">
-                                    <input type="text" class="form-control form-control-sm" name="strength" value="{{isset($line->contentDetail()->strength) ? $line->contentDetail()->strength : '' }}" placeholder="Strength/Form">
-                                </div>
-                                <div class="mb-2">
-                                    <input type="text" class="form-control form-control-sm" name="frequency" value="{{isset($line->contentDetail()->frequency) ? $line->contentDetail()->frequency : '' }}" placeholder="Frequency">
-                                </div>
-                                <div class="d-flex align-items-center">
-                                    <button class="btn btn-sm btn-primary mr-2" type="button" submit>Save</button>
-                                    <button class="btn btn-sm btn-default mr-2 border" type="button" cancel>Cancel</button>
-                                </div>
-                            </form>
-                        </span>
-                        <span moe relative>
-                            <a start show class="on-hover-opaque"><i class="fa fa-trash-alt text-danger"></i></a>
-                            <form url="/api/clientInfoLine/remove" right>
-                                <input type="hidden" name="uid" value="{{ $line->uid }}">
-                                <p class="small">Are you sure you want to delete this entry?</p>
-                                <div class="d-flex align-items-center">
-                                    <button class="btn btn-sm btn-danger mr-2" submit>Delete</button>
-                                    <button class="btn btn-sm btn-default mr-2 border" cancel>Cancel</button>
-                                </div>
-                            </form>
-                        </span>
-                    </td>
-                </tr>
-            @endforeach
-            </tbody>
-        </table>
-    </div>
-    <script>
-        (function() {
-            function init() {
-                $('input[type="text"][name="contentText"]').each(function() {
-                    var elem = this, dynID = 'rx-' + Math.ceil(Math.random() * 1000000);
-                    $(elem).attr('id', dynID);
-                    var strengthElem = $(elem).closest('form').find('[name="strength"]')[0],
-                        dynStrengthsID = 'rx-' + Math.ceil(Math.random() * 1000000) + '-strengths';
-                    $(strengthElem).attr('id', dynStrengthsID);
-                    new window.Def.Autocompleter.Prefetch(dynStrengthsID, []);
-                    new window.Def.Autocompleter.Search(dynID,
-                        'https://clinicaltables.nlm.nih.gov/api/rxterms/v3/search?ef=STRENGTHS_AND_FORMS');
-                    window.Def.Autocompleter.Event.observeListSelections(dynID, function() {
-                        var autocomp = elem.autocomp;
-                        var strengths =
-                            autocomp.getSelectedItemData()[0].data['STRENGTHS_AND_FORMS'];
-                        if (strengths)
-                            strengthElem.autocomp.setListAndField(strengths, '');
-                    });
-                });
-            }
-            addMCInitializer('patient-rx-list', init);
-        })();
-    </script>
-
-    <hr>--}}
     {{-- canvas based rx --}}
     <div class="client-single-dashboard">
         <div class="d-flex align-items-center pb-2">

+ 1 - 1
resources/views/app/patient/note/dashboard.blade.php

@@ -545,7 +545,7 @@
                     $(this).load($(this).attr('embed'));
                 });
             }
-            addMCInitializer('sections-widget', initSectionsWidget);
+            addMCInitializer('note-sections-widget', initSectionsWidget, '#note-sections-app');
         })();
     </script>
     @endif

+ 0 - 140
resources/views/app/patient/partials/_appointment-form.blade.php

@@ -1,140 +0,0 @@
-<form url="/api/appointment/{{ $appointment ? 'update' : 'create' }}"
-      class="mcp-theme-1 add-appt-form"
-      {{ $appointment ? 'trigger-reload' : '' }}>
-    @if($appointment)
-        <input type="hidden" name="uid" value="{{$appointment->uid}}">
-    @else
-        <input type="hidden" name="clientUid" value="{{$patient->uid}}">
-    @endif
-    <div class="row mb-3">
-        <div class="col-6 pr-2">
-            <label class="text-secondary text-sm mb-1">Pro *</label>
-            <select name="proUid" class="form-control form-control-sm appointment-pro-select"
-                    required>
-                <option value=""> --select-- </option>
-                @foreach($pros as $iPro)
-                    <option value="{{$iPro->uid}}"
-                        {{ ($appointment ? ($iPro->uid === $appointment->pro->uid) : ($iPro->uid === $pro->uid)) ? 'selected' : '' }}>
-                        {{$iPro->displayName()}}
-                    </option>
-                @endforeach
-            </select>
-        </div>
-        <div class="col-6 pl-0">
-            <label class="text-secondary text-sm mb-1">Timezone *</label>
-            <select name="timeZone" class="form-control form-control-sm" {{ $appointment ? ' data-trigger="change"' : '' }} required>
-                <option value=""> --select-- </option>
-                <option {{ $appointment && $appointment->timezone === 'EASTERN' ? 'selected' : '' }}
-                        value="EASTERN">Eastern</option>
-                <option {{ $appointment && $appointment->timezone === 'CENTRAL' ? 'selected' : '' }}
-                        value="CENTRAL">Central</option>
-                <option {{ $appointment && $appointment->timezone === 'MOUNTAIN' ? 'selected' : '' }}
-                        value="MOUNTAIN">Mountain</option>
-                <option {{ $appointment && $appointment->timezone === 'PACIFIC' ? 'selected' : '' }}
-                        value="PACIFIC">Pacific</option>
-                <option {{ $appointment && $appointment->timezone === 'ALASKA' ? 'selected' : '' }}
-                        value="ALASKA">Alaska</option>
-                <option {{ $appointment && $appointment->timezone === 'HAWAII' ? 'selected' : '' }}
-                        value="HAWAII">Hawaii</option>
-                <option {{ $appointment && $appointment->timezone === 'PUERTO_RICO' ? 'selected' : '' }}
-                        value="PUERTO_RICO">Puerto Rico</option>
-            </select>
-        </div>
-    </div>
-    <input type="hidden" name="date" min="{{ date('Y-m-d') }}"
-           value="{{ $appointment ? date("Y-m-d", strtotime($appointment->raw_date)) : '' }}">
-    <input type="hidden" name="startTime" class="form-control form-control-sm"
-           value="{{ $appointment ? date("H:i", strtotime($appointment->raw_start_time)) : '' }}">
-    <input type="hidden" name="endTime" class="form-control form-control-sm"
-           value="{{ $appointment ? date("H:i", strtotime($appointment->raw_end_time)) : '' }}">
-    <div class="mb-2 d-flex align-items-start">
-        <div class="pro-appointment-calendar disabled flex-grow-0 d-inline-flex justify-content-center"></div>
-        <div class="pro-appointment-time-selector pl-2 flex-grow-1 border-left">
-            <div class="slot-picker start-time disabled mb-2">
-                <table class="table-condensed w-100">
-                    <thead>
-                    <tr>
-                        <th class="prev"></th>
-                        <th colspan="4" class="datepicker-switch text-center selected-date pb-1">Start Time</th>
-                        <th class="next"></th>
-                    </tr>
-                    </thead>
-                    <tbody>
-                    <tr>
-                        <td class="slot" data-start="540" data-end="570">9:00</td>
-                        <td class="slot" data-start="570" data-end="600">9:30</td>
-                        <td class="slot" data-start="600" data-end="630">10:00</td>
-                        <td class="slot" data-start="630" data-end="660">10:30</td>
-                        <td class="slot" data-start="660" data-end="690">11:00</td>
-                        <td class="slot" data-start="690" data-end="720">11:30</td>
-                    </tr>
-                    <tr>
-                        <td class="slot" data-start="720" data-end="750">12:00</td>
-                        <td class="slot" data-start="750" data-end="780">12:30</td>
-                        <td class="slot" data-start="780" data-end="810">13:00</td>
-                        <td class="slot" data-start="810" data-end="840">13:30</td>
-                        <td class="slot" data-start="840" data-end="870">14:00</td>
-                        <td class="slot" data-start="870" data-end="900">14:30</td>
-                    </tr>
-                    <tr>
-                        <td class="slot" data-start="900" data-end="930">15:00</td>
-                        <td class="slot" data-start="930" data-end="960">15:30</td>
-                        <td class="slot" data-start="960" data-end="990">16:00</td>
-                        <td class="slot" data-start="990" data-end="1020">16:30</td>
-                        <td class="slot" data-start="1020" data-end="1050">17:00</td>
-                        <td class="slot" data-start="1050" data-end="1080">17:30</td>
-                    </tr>
-                </table>
-            </div>
-
-            <div class="slot-picker end-time disabled pt-0">
-                <table class="table-condensed w-100">
-                    <thead>
-                    <tr>
-                        <th class="prev"></th>
-                        <th colspan="4" class="datepicker-switch text-center selected-date pb-1">End Time</th>
-                        <th class="next"></th>
-                    </tr>
-                    </thead>
-                    <tbody>
-                    <tr>
-                        <td class="slot" data-start="540" data-end="570">9:30</td>
-                        <td class="slot" data-start="570" data-end="600">10:00</td>
-                        <td class="slot" data-start="600" data-end="630">10:30</td>
-                        <td class="slot" data-start="630" data-end="660">11:00</td>
-                        <td class="slot" data-start="660" data-end="690">11:30</td>
-                        <td class="slot" data-start="690" data-end="720">12:00</td>
-                    </tr>
-                    <tr>
-                        <td class="slot" data-start="720" data-end="750">12:30</td>
-                        <td class="slot" data-start="750" data-end="780">13:00</td>
-                        <td class="slot" data-start="780" data-end="810">13:30</td>
-                        <td class="slot" data-start="810" data-end="840">14:00</td>
-                        <td class="slot" data-start="840" data-end="870">14:30</td>
-                        <td class="slot" data-start="870" data-end="900">15:00</td>
-                    </tr>
-                    <tr>
-                        <td class="slot" data-start="900" data-end="930">15:30</td>
-                        <td class="slot" data-start="930" data-end="960">16:00</td>
-                        <td class="slot" data-start="960" data-end="990">16:30</td>
-                        <td class="slot" data-start="990" data-end="1020">17:00</td>
-                        <td class="slot" data-start="1020" data-end="1050">17:30</td>
-                        <td class="slot" data-start="1050" data-end="1080">18:00</td>
-                    </tr>
-                </table>
-            </div>
-        </div>
-    </div>
-    <div class="mb-2">
-        <label class="text-secondary text-sm mb-1">Title</label>
-        <input type="text" name="title" class="form-control form-control-sm" value="{{ $appointment ? $appointment->title : '' }}">
-    </div>
-    <div class="mb-2">
-        <label class="text-secondary text-sm mb-1">Description</label>
-        <textarea name="description" class="form-control form-control-sm">{{ $appointment ? $appointment->description : '' }}</textarea>
-    </div>
-    <div>
-        <button submit class="btn btn-sm btn-primary mr-1">Submit</button>
-        <button cancel class="btn btn-sm btn-default border">Cancel</button>
-    </div>
-</form>

+ 0 - 143
resources/views/app/patient/partials/appointments.blade.php

@@ -1,11 +1,6 @@
 <div class="mt-0 pb-1">
     <div class="d-flex align-items-center mb-2 py-2 border-top border-bottom">
         <h6 class="my-0 font-weight-bold text-secondary">Appointments</h6>
-        {{--<span class="mx-2 text-secondary">|</span>
-        <div moe center>
-            <a start show>Add</a>
-            @include('app/patient/partials/_appointment-form', ['appointment' => false])
-        </div>--}}
         <span class="mx-2 text-secondary">|</span>
         <a href="/patients/view/{{$patient->uid}}/calendar">Calendar</a>
     </div>
@@ -82,142 +77,4 @@
         </tbody>
     </table>
 </div>
-<script>
-    (function() {
-        let selectedStart = false, booked = false;
-        function toMinutes(_s, _backTrack) {
-            _s = _s.split(':');
-            let mins = (+_s[0]) * 60 + +_s[1];
-            if(_backTrack) mins -= mins % 30;
-            return mins;
-        }
-        function markBookedSlots(_parent) {
-            _parent.find('.slot').removeClass('blocked').removeClass('selected');
-            for(let i=0; i<booked.length; i++) {
-                let startSlot = false;
-                _parent.find('.slot').each(function() {
-                    let slot = $(this), slotStart = +slot.attr('data-start');
-                    if(booked[i].start === slotStart) {
-                        startSlot = slot.addClass('blocked');
-                        return false;
-                    }
-                });
-                if(startSlot && startSlot.length) {
-                    startSlot = startSlot.next();
-                }
-                if(startSlot && startSlot.length) {
-                    while(+startSlot.attr('data-start') < booked[i].end) {
-                        startSlot.addClass('blocked');
-                        startSlot = startSlot.next();
-                    }
-                }
-            }
-            if(_parent.is('.end-time')) {
-                _parent.find('.slot').each(function() {
-                    if(+$(this).attr('data-start') < selectedStart) {
-                        $(this).addClass('blocked');
-                    }
-                });
-            }
-        }
-        function initSingleCalendar(_elem) {
-            _elem.datepicker({
-                format: 'yyyy-mm-dd'
-            });
-            _elem.on('changeDate', function () {
-                console.log(_elem.datepicker('getFormattedDate'));
-                let parentForm = $(this).closest('form');
-                parentForm.find('[name="date"]').val(_elem.datepicker('getFormattedDate'));
-                // parentForm.find('[name="startTime"], [name="endTime"]').val('');
-                parentForm.find('.slot-picker.start-time').removeClass('disabled');
-                let params = 'proUid={{ $pro->uid }}&' +
-                    'timeZone=' + parentForm.find('[name="timeZone"]').val() + '&' +
-                    'localDate=' + _elem.datepicker('getFormattedDate');
-                $.get('/api/appointment/getBookedTimesForProAndTimezone?' + params, function(_data) {
-                    console.log(_data);
-                    selectedStart = 0;
-                    if(_data.success && _data.data) {
-                        booked = _data.data;
-                        if(parentForm.is('[trigger-reload]')) {
-                            booked = booked.filter(function(_item) {
-                                return !(_item.startTime === parentForm.find('[name="startTime"]').val() &&
-                                    _item.endTime === parentForm.find('[name="endTime"]').val());
-                            });
-                        }
-                        for(let i=0; i<booked.length; i++) {
-                            booked[i].start = toMinutes(booked[i].startTime, true);
-                            booked[i].end = toMinutes(booked[i].endTime);
-                        }
-                        markBookedSlots(parentForm.find('.slot-picker.start-time'), booked);
-                        markBookedSlots(parentForm.find('.slot-picker.end-time'), booked);
-                        parentForm.find('.slot-picker.end-time').addClass('disabled');
 
-                        // reload stuff!
-                        if(parentForm.is('[trigger-reload]')) {
-                            parentForm.find('.slot-picker.start-time td.selected').removeClass('selected');
-                            parentForm.find('.slot-picker.start-time td').each(function() {
-                                let minutes = toMinutes(parentForm.find('[name="startTime"]').val(), true);
-                                if(+$(this).attr('data-start') === minutes) {
-                                    console.log('Matched: ', $(this).text())
-                                    $(this).addClass('selected');
-                                    selectedStart = +$(this).attr('data-start');
-                                    return false;
-                                }
-                            });
-                            parentForm.find('.slot-picker.end-time td.selected').removeClass('selected');
-                            parentForm.find('.slot-picker.end-time td').each(function() {
-                                if($(this).text() === parentForm.find('[name="endTime"]').val()) {
-                                    $(this).addClass('selected');
-                                    return false;
-                                }
-                            });
-                            parentForm.find('.slot-picker.end-time').removeClass('disabled');
-
-                        }
-                    }
-
-                }, 'json');
-            });
-        }
-        function initAppointmentCalendar() {
-            $('.pro-appointment-calendar').each(function() {
-                initSingleCalendar($(this));
-            });
-
-            $(document).on('click', '.slot-picker td:not(.blocked)', function() {
-                let parentForm = $(this).closest('form');
-                $(this).closest('.slot-picker').find('td.selected').removeClass('selected');
-                $(this).addClass('selected');
-                selectedStart = +$(this).attr('data-start');
-                if($(this).closest('.slot-picker').is('.start-time')) {
-                    parentForm.find('.slot-picker.end-time td.selected').removeClass('selected');
-                    parentForm.find('.slot-picker.end-time').removeClass('disabled');
-                    parentForm.find('[name="startTime"]').val($(this).text());
-                    markBookedSlots(parentForm.find('.slot-picker.end-time'), booked);
-                }
-                else {
-                    parentForm.find('[name="endTime"]').val($(this).text());
-                }
-            });
-
-            $(document).on('change', '[name="timeZone"]', function() {
-                if(this.value) {
-                    $(this).closest('form').find('.pro-appointment-calendar').removeClass('disabled');
-                }
-                else {
-                    $(this).closest('form').find('.pro-appointment-calendar').addClass('disabled');
-                }
-            });
-
-            $('form[trigger-reload]').each(function() {
-                let form = $(this);
-                form.find('[name="timeZone"]').trigger('change');
-                form.find('.pro-appointment-calendar').datepicker(
-                    'setDate',
-                    new Date(form.find('[name="date"]').val())
-                );
-            });
-        }
-        addMCInitializer('patient-single-appointment-calendar', initAppointmentCalendar);
-    })();
-</script>

+ 0 - 105
resources/views/app/patient/partials/dx-table-row.blade.php

@@ -1,105 +0,0 @@
-@foreach($dxRows as $line)
-    <?php
-    $isCurrent = @$line->contentDetail()->{"IsCurrent"} && intval(@$line->contentDetail()->{"IsCurrent"}) === 1;
-    ?>
-    <tr>
-        <td class="px-2">{{$line->content_text}}</td>
-        <td class="px-2">{{ @$line->contentDetail()->{"ICD"} }}</td>
-        <td class="px-2">{{ @$line->contentDetail()->{"Chronic or Acute"} }}</td>
-        <td class="px-2"><pre style="white-space:pre-wrap">{{ @$line->contentDetail()->{"Prognosis"} }}</pre></td>
-        <td class="px-2"><pre style="white-space:pre-wrap">{{ @$line->contentDetail()->{"History"} }}</pre></td>
-        <td class="px-2"><pre style="white-space:pre-wrap">{{ @$line->contentDetail()->{"Treatment Goal"} }}</pre></td>
-        <td class="px-2"><pre style="white-space:pre-wrap">{{ @$line->contentDetail()->{"Treatment Plan"} }}</pre></td>
-        @if(@$showCreated)
-        <td class="px-2">{{ $line->createdBySession && $line->createdBySession->pro ? $line->createdBySession->pro->displayName() : '-'}}</td>
-        <td class="px-2">{{ friendly_date_time($line->created_at) }}</td>
-        @endif
-        <td class="px-2 text-center delete-column">
-            <span moe wide relative class="">
-                <a class="on-hover-opaque" start show title="Edit">
-                    <i class="font-size-11 fa fa-edit"></i>
-                </a>
-                <form url="/api/clientInfoLine/updateContent" right>
-                    <input type="hidden" name="uid" value="{{ $line->uid }}">
-                    <input type="hidden" name="clientUid" value="{{ $patient->uid }}">
-                    <input type="hidden" name="category" value="dx">
-                    <input type="hidden" name="IsCurrent" value="{{ $isCurrent ? 1 : 0 }}">
-                    <div class="mb-2">
-                        <label for="" class="control-label text-sm mb-1 float-left">ICD</label>
-                        <input type="text" class="form-control form-control-sm" name="ICD"
-                               value="{{ @$line->contentDetail()->{"ICD"} }}" placeholder="">
-                    </div>
-                    <div class="mb-2">
-                        <label for="" class="control-label text-sm mb-1">Title</label>
-                        <input type="text" class="form-control form-control-sm" name="contentText"
-                               value="{{$line->content_text}}" placeholder="Title">
-                    </div>
-                    <div class="mb-2">
-                        <label for="" class="control-label text-sm mb-1 float-left">Chronic or Acute (select one)</label>
-                        <select name="Chronic or Acute" class="form-control form-control-sm pl-1">
-                            <option value="">Chronic or Acute (select one)</option>
-                            <option
-                                {{ @$line->contentDetail()->{"Chronic or Acute"} === 'Chronic' ? 'selected' : '' }} value="Chronic">Chronic</option>
-                            <option
-                                {{ @$line->contentDetail()->{"Chronic or Acute"} === 'Acute' ? 'selected' : '' }} value="Acute">Acute</option>
-                        </select>
-                    </div>
-                    <div class="mb-2">
-                        <label for="" class="control-label text-sm mb-1 float-left">Prognosis</label>
-                        <input type="text" class="form-control form-control-sm" name="Prognosis"
-                               value="{{ @$line->contentDetail()->{"Prognosis"} }}" placeholder="">
-                    </div>
-                    <div class="mb-2">
-                        <label for="" class="control-label text-sm mb-1 float-left">History</label>
-                        <textarea type="text" class="form-control form-control-sm" name="History"
-                                  placeholder="">{{ @$line->contentDetail()->{"History"} }}</textarea>
-                    </div>
-                    <div class="mb-2">
-                        <label for="" class="control-label text-sm mb-1 float-left">Treatment Goal</label>
-                        <textarea type="text" class="form-control form-control-sm" name="Treatment Goal"
-                                  placeholder="">{{ @$line->contentDetail()->{"Treatment Goal"} }}</textarea>
-                    </div>
-                    <div class="mb-2">
-                        <label for="" class="control-label text-sm mb-1 float-left">Treatment Plan</label>
-                        <textarea type="text" class="form-control form-control-sm" name="Treatment Plan"
-                                  placeholder="">{{ @$line->contentDetail()->{"Treatment Plan"} }}</textarea>
-                    </div>
-                    <div class="d-flex align-items-center">
-                        <button class="btn btn-sm btn-primary mr-2" type="button" submit>Save</button>
-                        <button class="btn btn-sm btn-default mr-2 border" type="button"
-                                cancel>Cancel</button>
-                    </div>
-                </form>
-            </span>
-            <span moe>
-                <form url="/api/clientInfoLine/updateContent" show class="d-inline-block">
-                    <input type="hidden" name="uid" value="{{ $line->uid }}">
-                    <input type="hidden" name="clientUid" value="{{ $patient->uid }}">
-                    <input type="hidden" name="category" value="dx">
-                    <input type="hidden" name="IsCurrent" value="{{ $isCurrent ? 0 : 1 }}">
-                    <input type="hidden" name="ICD" value="{{ @$line->contentDetail()->{"ICD"} }}" placeholder="">
-                    <input type="hidden" name="contentText" value="{{$line->content_text}}" placeholder="Title">
-                    <input type="hidden" name="Chronic or Acute" value="{{ @$line->contentDetail()->{"Chronic or Acute"} }}">
-                    <input type="hidden" name="Prognosis" value="{{ @$line->contentDetail()->{"Prognosis"} }}">
-                    <input type="hidden" name="History" value="{{ @$line->contentDetail()->{"History"} }}">
-                    <input type="hidden" name="Treatment Goal" value="{{ @$line->contentDetail()->{"Treatment Goal"} }}">
-                    <input type="hidden" name="Treatment Plan" value="{{ @$line->contentDetail()->{"Treatment Plan"} }}">
-                    <div>
-                        <button submit class="on-hover-opaque border-0 bg-transparent" title="Move to {{ $isCurrent ? 'past' : 'current' }}"><i class="fa fa-arrow-{{ $isCurrent ? 'down' : 'up' }} text-primary"></i></button>
-                    </div>
-                </form>
-            </span>
-            <span moe relative>
-                <a start show class="on-hover-opaque"><i class="fa fa-trash-alt text-danger"></i></a>
-                <form url="/api/clientInfoLine/remove" right>
-                    <input type="hidden" name="uid" value="{{ $line->uid }}">
-                    <p class="small">Are you sure you want to delete this entry?</p>
-                    <div class="d-flex align-items-center">
-                        <button class="btn btn-sm btn-danger mr-2" submit>Delete</button>
-                        <button class="btn btn-sm btn-default mr-2 border" cancel>Cancel</button>
-                    </div>
-                </form>
-            </span>
-        </td>
-    </tr>
-@endforeach

+ 0 - 196
resources/views/app/patient/partials/dx-table.blade.php

@@ -1,196 +0,0 @@
-<?php
-$currentDxs = new \Illuminate\Support\Collection();
-$previousDxs = new \Illuminate\Support\Collection();
-foreach($dxInfoLines as $line) {
-    if(@$line->contentDetail()->{"IsCurrent"} && intval($line->contentDetail()->{"IsCurrent"}) === 1) {
-        $currentDxs->add($line);
-    }
-    else {
-        $previousDxs->add($line);
-    }
-}
-?>
-<div class="pt-3 mb-3">
-    <div class="d-flex align-items-center pb-2">
-        <h4 class="font-weight-bold m-0">Current Dx / Focus Areas</h4>
-        <span class="mx-2 text-secondary">|</span>
-        <div moe wide>
-            <a start show class="">Add</a>
-            <form url="/api/clientInfoLine/create">
-                <input type="hidden" name="clientUid" value="{{ $patient->uid }}">
-                <input type="hidden" name="category" value="dx">
-                <input type="hidden" name="IsCurrent" value="1">
-                <div class="mb-2">
-                    <label for="" class="control-label text-sm  mb-1" >ICD</label>
-                    <input type="text" class="form-control form-control-sm" name="ICD" value="">
-                </div>
-                <div class="mb-2">
-                    <label for="" class="control-label text-sm  mb-1" >Title</label>
-                    <input type="text" class="form-control form-control-sm" name="contentText" value="">
-                </div>
-                <div class="mb-2">
-                    <label for="" class="control-label text-sm  mb-1" >Chronic or Acute (select one)</label>
-                    <select name="Chronic or Acute" class="form-control form-control-sm pl-1">
-                        <option value="Chronic">Chronic</option>
-                        <option value="Acute">Acute</option>
-                    </select>
-                </div>
-                <div class="mb-2">
-                    <label for="" class="control-label text-sm  mb-1" >Prognosis</label>
-                    <input type="text" class="form-control form-control-sm" name="Prognosis" value="">
-                </div>
-                <div class="mb-2">
-                    <label for="" class="control-label text-sm  mb-1" >History</label>
-                    <textarea type="text" class="form-control form-control-sm" name="History" value="""></textarea>
-                </div>
-                <div class="mb-2">
-                    <label for="" class="control-label text-sm  mb-1" >Treatment Goal</label>
-                    <textarea type="text" class="form-control form-control-sm" name="Treatment Goal" value=""></textarea>
-                </div>
-                <div class="mb-2">
-                    <label for="" class="control-label text-sm  mb-1" >Treatment Plan</label>
-                    <textarea type="text" class="form-control form-control-sm" name="Treatment Plan" value="" ></textarea>
-                </div>
-                <div class="d-flex align-items-center">
-                    <button class="btn btn-sm btn-primary mr-2" type="button" submit>Save</button>
-                    <button class="btn btn-sm btn-default mr-2 border" type="button" cancel>Cancel</button>
-                </div>
-            </form>
-        </div>
-        <span class="mx-2 text-secondary">|</span>
-        <div moe>
-            <a start show class="">Multi</a>
-            <form url="/api/clientInfoLine/createMultiple">
-                <input type="hidden" name="clientUid" value="{{ $patient->uid }}">
-                <input type="hidden" name="category" value="dx">
-                <input type="hidden" name="IsCurrent" value="1">
-                <div class="mb-2">
-                    <textarea class="form-control form-control-sm" rows="8" name="contentTexts" value="" placeholder="Dx & Focus Areas *" required></textarea>
-                </div>
-                <div class="d-flex align-items-center">
-                    <button class="btn btn-sm btn-primary mr-2" submit>Save</button>
-                    <button class="btn btn-sm btn-default mr-2 border" cancel>Cancel</button>
-                </div>
-            </form>
-        </div>
-    </div>
-    <table class="table table-striped table-sm table-bordered mb-0" style="table-layout:fixed">
-        <thead>
-        <tr>
-            <th class="px-2 text-secondary">Title</th>
-            <th class="px-2 text-secondary">ICD</th>
-            <th class="px-2 text-secondary w-100px">Chr/Act</th>
-            <th class="px-2 text-secondary">Prognosis</th>
-            <th class="px-2 text-secondary">History</th>
-            <th class="px-2 text-secondary">Goal</th>
-            <th class="px-2 text-secondary w-25">Plan</th>
-            <th class="px-2 text-secondary delete-column">&nbsp;</th>
-        </tr>
-        </thead>
-        <tbody>
-        @include('app.patient.partials.dx-table-row', ['dxRows' => $currentDxs])
-        </tbody>
-    </table>
-</div>
-<div class="pt-3">
-    <div class="d-flex align-items-center pb-2">
-        <h4 class="font-weight-bold m-0">PMHx</h4>
-        <span class="mx-2 text-secondary">|</span>
-        <div moe wide>
-            <a start show class="">Add</a>
-            <form url="/api/clientInfoLine/create">
-                <input type="hidden" name="clientUid" value="{{ $patient->uid }}">
-                <input type="hidden" name="category" value="dx">
-                <input type="hidden" name="IsCurrent" value="0">
-                <div class="mb-2">
-                    <label for="" class="control-label text-sm mb-1">ICD</label>
-                    <input type="text" class="form-control form-control-sm" name="ICD" value="" placeholder=""></div>
-                <div class="mb-2">
-                    <label for="" class="control-label text-sm mb-1">Title</label>
-                    <input type="text" class="form-control form-control-sm" name="contentText" value="" placeholder=""></div>
-                <div class="mb-2">
-                    <label for="" class="control-label text-sm mb-1"></label>
-                    <select name="Chronic or Acute" class="form-control form-control-sm pl-1">
-                        <option value="">Chronic or Acute (select one)</option>
-                        <option value="Chronic">Chronic</option>
-                        <option value="Acute">Acute</option>
-                    </select>
-                </div>
-                <div class="mb-2">
-                    <label for="" class="control-label text-sm mb-1">Prognosis</label>
-                    <input type="text" class="form-control form-control-sm" name="Prognosis" value="" placeholder=""></div>
-                <div class="mb-2">
-                    <label for="" class="control-label text-sm mb-1">History</label>
-                    <textarea type="text" class="form-control form-control-sm" name="History" value="" placeholder=""></textarea></div>
-                <div class="mb-2">
-                    <label for="" class="control-label text-sm mb-1">Treatment Goal</label>
-                    <textarea type="text" class="form-control form-control-sm" name="Treatment Goal" value="" placeholder=""></textarea></div>
-                <div class="mb-2">
-                    <label for="" class="control-label text-sm mb-1">Treatment Plan</label>
-                    <textarea type="text" class="form-control form-control-sm" name="Treatment Plan" value="" placeholder=""></textarea></div>
-                <div class="d-flex align-items-center">
-                    <button class="btn btn-sm btn-primary mr-2" type="button" submit>Save</button>
-                    <button class="btn btn-sm btn-default mr-2 border" type="button" cancel>Cancel</button>
-                </div>
-            </form>
-        </div>
-        <span class="mx-2 text-secondary">|</span>
-        <div moe>
-            <a start show class="">Multi</a>
-            <form url="/api/clientInfoLine/createMultiple">
-                <input type="hidden" name="clientUid" value="{{ $patient->uid }}">
-                <input type="hidden" name="category" value="dx">
-                <input type="hidden" name="IsCurrent" value="0">
-                <div class="mb-2">
-                    <textarea class="form-control form-control-sm" rows="8" name="contentTexts" value="" placeholder="Dx & Focus Areas *" required></textarea>
-                </div>
-                <div class="d-flex align-items-center">
-                    <button class="btn btn-sm btn-primary mr-2" submit>Save</button>
-                    <button class="btn btn-sm btn-default mr-2 border" cancel>Cancel</button>
-                </div>
-            </form>
-        </div>
-    </div>
-    <table class="table table-striped table-sm table-bordered mb-0">
-        <thead>
-        <tr>
-            <th class="px-2 text-secondary">Title</th>
-            <th class="px-2 text-secondary">ICD</th>
-            <th class="px-2 text-secondary w-60px">Chr/Act</th>
-            <th class="px-2 text-secondary">Prognosis</th>
-            <th class="px-2 text-secondary">History</th>
-            <th class="px-2 text-secondary">Goal</th>
-            <th class="px-2 text-secondary w-25">Plan</th>
-            <th class="px-2 text-secondary delete-column">&nbsp;</th>
-        </tr>
-        </thead>
-        <tbody>
-        @include('app.patient.partials.dx-table-row', ['dxRows' => $previousDxs])
-        </tbody>
-    </table>
-</div>
-<script>
-    (function() {
-        function init() {
-            $('input[type="text"][name="ICD"]').each(function() {
-                var elem = this, dynID = 'icd-' + Math.ceil(Math.random() * 1000000);
-                $(elem).attr('id', dynID);
-                new window.Def.Autocompleter.Search(dynID,
-                    'https://clinicaltables.nlm.nih.gov/api/icd10cm/v3/search?sf=code,name&ef=name',
-                    {
-                        tableFormat: true,
-                        valueCols: [0],
-                        colHeaders: ['Code', 'Name'],
-                    }
-                );
-                window.Def.Autocompleter.Event.observeListSelections(dynID, function() {
-                    var autocomp = elem.autocomp;
-                    var name = autocomp.getSelectedItemData()[0].data['name'];
-                    $(elem).closest('form').find('[name="contentText"]').val(name);
-                    return false;
-                });
-            });
-        }
-        addMCInitializer('patient-dx-list', init);
-    })();
-</script>

+ 0 - 157
resources/views/app/patient/partials/dx.blade.php

@@ -1,157 +0,0 @@
-<?php $infoLines = json_decode($patient->info_lines);?>
-<?php $infoLines = !$infoLines ? [] : $infoLines; ?>
-<div moe-parent
-     url="/embed/{{ $patient->uid }}/dx/{{ @$selectable ? 1 : 0 }}"
-     class="<?= !@$selectable ? '' : 'border-bottom' ?> pb-1">
-    <div class="d-flex align-items-center mb-2 py-2 <?= @$selectable ? 'px-2' : 'border-top' ?> border-bottom">
-
-        @if(!@$selectable)
-        <h6 class="my-0 font-weight-bold text-secondary">Current Problems / Focus Areas</h6>
-        <span class="mx-2 text-secondary">|</span>
-        @endif
-
-        <div moe>
-            <a start show class="py-0 font-weight-normal">Add</a>
-            <form url="/api/clientInfoLine/create">
-                <input type="hidden" name="clientUid" value="{{ $patient->uid }}">
-                <input type="hidden" name="category" value="dx">
-                <div class="mb-2">
-                    <input type="text" class="form-control form-control-sm" name="ICD" value="" placeholder="ICD *" required>
-                </div>
-                <div class="mb-2">
-                    <input type="text" class="form-control form-control-sm" name="contentText" value="" placeholder="Title *" required>
-                </div>
-                <div class="mb-2">
-                    <select name="Chronic or Acute" class="form-control form-control-sm pl-1" required>
-                        <option value="">Chronic or Acute (select one)</option>
-                        <option value="Chronic" selected>Chronic</option>
-                        <option value="Acute">Acute</option>
-                    </select>
-                </div>
-                <div class="mb-2"><input type="text" class="form-control form-control-sm" name="Prognosis" value="" placeholder="Prognosis"></div>
-                <div class="mb-2"><textarea type="text" class="form-control form-control-sm" name="Treatment Goal" value="" placeholder="Treatment Goal"></textarea></div>
-                <div class="mb-2"><textarea type="text" class="form-control form-control-sm" name="Treatment Plan" value="" placeholder="Treatment Plan"></textarea></div>
-                <div class="d-flex align-items-center">
-                    <button class="btn btn-sm btn-primary mr-2" type="button" submit>Save</button>
-                    <button class="btn btn-sm btn-default mr-2 border" type="button" cancel>Cancel</button>
-                </div>
-            </form>
-        </div>
-
-        <span class="mx-2 text-secondary">|</span>
-        <div moe>
-            <a start show class="">Multi</a>
-            <form url="/api/clientInfoLine/createMultiple">
-                <input type="hidden" name="clientUid" value="{{ $patient->uid }}">
-                <input type="hidden" name="category" value="dx">
-                <div class="mb-2">
-                    <textarea class="form-control form-control-sm" rows="8" name="contentTexts" value="" placeholder="Dx & Focus Areas *" required></textarea>
-                </div>
-                <div class="d-flex align-items-center">
-                    <button class="btn btn-sm btn-primary mr-2" submit>Save</button>
-                    <button class="btn btn-sm btn-default mr-2 border" cancel>Cancel</button>
-                </div>
-            </form>
-        </div>
-
-        @if(!@$selectable)
-        <span class="mx-2 text-secondary">|</span>
-        <a start show class="py-0 font-weight-normal"
-           href="/patients/view/{{ $patient->uid }}/dx-and-focus-areas">
-            View All
-        </a>
-        @endif
-    </div>
-    <div class="px-2">
-    <table class="table table-sm border-0 my-0">
-        <tbody>
-        <?php $itemCount = 0; ?>
-        @foreach($infoLines as $category => $lines)
-            @if($category === "dx")
-                @foreach ($lines as $line)
-                    <?php $itemCount++; ?>
-                    <tr>
-                        <td class="text-black p-0 border-0">
-                            <div class="d-flex dx-item">
-                                @if(@$selectable)
-                                    <span class="mr-2 d-inline-flex align-items-center">
-                                        <input type="checkbox" class="my-0 dx-item-checkbox">
-                                    </span>
-                                @endif
-                                <span moe relative class="mr-2">
-                                    <a class="on-hover-opaque" start show title="Delete">
-                                        <i class="font-size-11 fa fa-trash-alt text-danger"></i>
-                                    </a>
-                                    <form url="/api/clientInfoLine/remove">
-                                        <input type="hidden" name="uid" value="{{ $line->uid }}">
-                                        <p class="small">Are you sure you want to delete this entry?</p>
-                                        <div class="d-flex align-items-center">
-                                            <button class="btn btn-sm btn-danger mr-2" submit>Delete</button>
-                                            <button class="btn btn-sm btn-default mr-2 border" cancel>Cancel</button>
-                                        </div>
-                                    </form>
-                                </span>
-                                <div moe relative class="mr-2">
-                                    <a class="on-hover-opaque" start show title="Edit">
-                                        <i class="font-size-11 fa fa-edit"></i>
-                                    </a>
-                                    <form url="/api/clientInfoLine/updateContent">
-                                        <input type="hidden" name="uid" value="{{ $line->uid }}">
-                                        <input type="hidden" name="clientUid" value="{{ $patient->uid }}">
-                                        <input type="hidden" name="category" value="dx">
-                                        <div class="mb-2">
-                                            <input type="text" class="form-control form-control-sm" name="ICD" value="{{ getVal($line->contentDetail, "ICD") }}" placeholder="ICD *" required>
-                                        </div>
-                                        <div class="mb-2">
-                                            <input type="text" class="form-control form-control-sm" name="contentText" value="{{$line->contentText}}" placeholder="Title *" required>
-                                        </div>
-                                        <div class="mb-2">
-                                            <select name="Chronic or Acute" class="form-control form-control-sm pl-1" required>
-                                                <option value="">Chronic or Acute (select one)</option>
-                                                <option {{ getVal($line->contentDetail, ("Chronic or Acute")) === 'Chronic' ? 'selected' : '' }} value="Chronic">Chronic</option>
-                                                <option {{ getVal($line->contentDetail, ("Chronic or Acute")) === 'Acute' ? 'selected' : '' }} value="Acute">Acute</option>
-                                            </select>
-                                        </div>
-                                        <div class="mb-2">
-                                            <input type="text" class="form-control form-control-sm" name="Prognosis" value="{{ getVal($line->contentDetail, "Prognosis") }}" placeholder="Prognosis">
-                                        </div>
-                                        <div class="mb-2">
-                                            <textarea type="text" class="form-control form-control-sm" name="Treatment Goal" placeholder="Treatment Goal">{{ getVal($line->contentDetail, "Treatment Goal") }}</textarea>
-                                        </div>
-                                        <div class="mb-2">
-                                            <textarea type="text" class="form-control form-control-sm" name="Treatment Plan" placeholder="Treatment Plan">{{ getVal($line->contentDetail, "Treatment Plan") }}</textarea>
-                                        </div>
-                                        <div class="d-flex align-items-center">
-                                            <button class="btn btn-sm btn-primary mr-2" type="button" submit>Save</button>
-                                            <button class="btn btn-sm btn-default mr-2 border" type="button" cancel>Cancel</button>
-                                        </div>
-                                    </form>
-                                </div>
-                                <div class="content-html">
-                                    <b>{{$line->contentText}}</b>
-                                    @if(!empty(getVal($line->contentDetail, "Chronic or Acute")))
-                                        <span class="text-secondary mx-1">/</span>
-                                        <span class="text-secondary">{{ getVal($line->contentDetail, "Chronic or Acute") }}</span>
-                                    @endif
-                                    @if(!empty(getVal($line->contentDetail, "ICD")))
-                                        <span class="text-secondary mx-1">/</span>
-                                        <span class="text-secondary">ICD: {{ getVal($line->contentDetail, "ICD") ? getVal($line->contentDetail, "ICD") : '-' }}</span>
-                                    @endif
-                                </div>
-                            </div>
-                        </td>
-                    </tr>
-                @endforeach
-            @endif
-        @endforeach
-        @if($itemCount === 0)
-            <tr>
-                <td class="text-secondary p-0 border-0">
-                    No items to show
-                </td>
-            </tr>
-        @endif
-        </tbody>
-    </table>
-    </div>
-</div>

+ 3 - 3
resources/views/app/patient/sections.blade.php

@@ -45,7 +45,7 @@
 @endsection
 
 @section('left-nav-content')
-    <div class="left-nav-content" id="note-sections-app">
+    <div class="left-nav-content" id="client-sections-app">
         <div class="note-widget-title px-2 py-1">Note Sections</div>
         <input type="search" class="d-block w-100 border-0 outline-0 px-2 py-1"
                v-model="q" placeholder="Filter">
@@ -86,7 +86,7 @@
             function initSectionsWidget() {
                 var allSections = <?= json_encode($allSections) ?>;
                 new Vue({
-                    el: '#note-sections-app',
+                    el: '#client-sections-app',
                     delimiters: ['@{{', '}}'],
                     data: {
                         q: '',
@@ -136,7 +136,7 @@
                     $(this).load($(this).attr('embed'));
                 });
             }
-            addMCInitializer('sections-widget', initSectionsWidget);
+            addMCInitializer('client-sections-widget', initSectionsWidget, '#client-sections-app');
         })();
     </script>
 @endsection

+ 7 - 2
resources/views/app/patient/settings.blade.php

@@ -1,6 +1,9 @@
 @extends ('layouts.patient')
 
 @section('inner-content')
+
+    <div id="client-settings-container">
+
     <div class="d-flex align-items-center mb-2">
         <div class="font-weight-bold">Home Address</div>
         <span class="text-secondary mx-2">|</span>
@@ -209,6 +212,7 @@
             </div>
         </form>
     </span>
+    </div>
 
     <script>
         window.setSettingsMailingAddress = function() {
@@ -232,9 +236,10 @@
             }
         }
         @if($isSame)
-            addMCInitializer('copy-mailing-address', function() {
+            function init() {
                 copyHomeToMailingAndReadOnly(true);
-            });
+            }
+            addMCInitializer('copy-mailing-address', init, '#client-settings-container');
         @endif
     </script>
 @endsection

+ 1 - 1
resources/views/app/practice-management/calendar.blade.php

@@ -807,7 +807,7 @@
                 });
             }
 
-            addMCInitializer('patient-calendar', init);
+            addMCInitializer('pro-calendar', init, '#proCalendarApp');
         })();
     </script>
 @endsection

+ 2 - 2
resources/views/app/practice-management/pro-availability.blade.php

@@ -3,7 +3,7 @@
 @section('content')
 <link href='/fullcalendar-5.3.2/lib/main.css' rel='stylesheet' />
 <script src='/fullcalendar-5.3.2/lib/main.js'></script>
-<div class="container-fluid mcp-theme-1">
+<div class="container-fluid mcp-theme-1" id="pro-availability-container">
     <div class="row mt-3">
         <div class="col-md-12 mb-3" moe>
             <form show url="{{route('pro-availability-filter')}}" method="POST" class="form-inline" redir="/practice-management/pro-availability/[data]">
@@ -480,7 +480,7 @@
             });
             calendar.render();
         }
-        addMCInitializer('pro-availability-calendar', initAvailabilityCalendar);
+        addMCInitializer('pro-availability-calendar', initAvailabilityCalendar, '#pro-availability-container');
     })();
 </script>
 @endsection

+ 0 - 64
resources/views/layouts/guest_template.blade.php

@@ -217,70 +217,6 @@
             addMCInitializer('stag-popups', window.initStagPopupEvents);
         })();
     </script>
-    <script>
-        (function() {
-            window.initAutoRxAndICDComplete = function () {
-                $('input[type="text"][name="ICD"]:not([ac-initialized])').each(function() {
-                    var elem = this,
-                        dynID = 'icd-' + Math.ceil(Math.random() * 1000000);
-                    $(elem).attr('id', dynID);
-                    new window.Def.Autocompleter.Search(dynID,
-                        'https://clinicaltables.nlm.nih.gov/api/icd10cm/v3/search?sf=code,name&ef=name', {
-                            tableFormat: true,
-                            valueCols: [0],
-                            colHeaders: ['Code', 'Name'],
-                        }
-                    );
-                    window.Def.Autocompleter.Event.observeListSelections(dynID, function() {
-                        var autocomp = elem.autocomp;
-                        var name = autocomp.getSelectedItemData()[0].data['name'];
-                        $(elem).closest('form').find('[name="contentText"]').val(name);
-                        return false;
-                    });
-                    $(elem).attr('ac-initialized', 1);
-                });
-                $('[rx-section] input[type="text"][name="contentText"]:not([ac-initialized])').each(function() {
-                    let elem = this,
-                        randPart = Math.ceil(Math.random() * 1000000),
-                        dynID = 'rx-' + randPart;
-                    $(elem).attr('id', dynID);
-                    var strengthElem = $(elem).closest('form').find('[name="strength"]')[0],
-                        dynStrengthsID = 'rx-' + randPart + '-strengths';
-                    $(strengthElem).attr('id', dynStrengthsID);
-                    $(strengthElem).attr('rx-id', dynID);
-                    new window.Def.Autocompleter.Prefetch(dynStrengthsID, []);
-                    new window.Def.Autocompleter.Search(dynID,
-                        'https://clinicaltables.nlm.nih.gov/api/rxterms/v3/search?ef=STRENGTHS_AND_FORMS');
-                    window.Def.Autocompleter.Event.observeListSelections(dynID, function() {
-                        var autocomp = elem.autocomp;
-                        var strengths =
-                            autocomp.getSelectedItemData()[0].data['STRENGTHS_AND_FORMS'];
-                        if (strengths)
-                            strengthElem.autocomp.setListAndField(strengths, '');
-                    });
-                    $(elem).attr('ac-initialized', 1);
-                });
-                window.rxEditMoeOpened = function() { // note "this" is the "form"
-                    let form = $(this),
-                        rxElem = form.find('input[type="text"][name="contentText"]').first(),
-                        strengthElem = form.find('input[type="text"][name="strength"]').first(),
-                        q = $.trim(rxElem.val());
-                    if(q !== '') {
-                        $.get('https://clinicaltables.nlm.nih.gov/api/rxterms/v3/search?' +
-                            'authenticity_token=' + (window._token || '') + '&' +
-                            'maxList=100&' +
-                            'terms=' + encodeURIComponent(q) + '&' +
-                            'ef=STRENGTHS_AND_FORMS', function(_data) {
-                            if(Array.isArray(_data) && _data.length >= 3 && Array.isArray(_data[2]['STRENGTHS_AND_FORMS']) && Array.isArray(_data[2]['STRENGTHS_AND_FORMS'][0])) {
-                                strengthElem[0].autocomp.setListAndField(_data[2]['STRENGTHS_AND_FORMS'][0], '', true);
-                            }
-                        }, 'json');
-                    }
-                }
-            }
-            addMCInitializer('patient-single', window.initAutoRxAndICDComplete);
-        })();
-    </script>
 
 </body>
 

+ 0 - 64
resources/views/layouts/template.blade.php

@@ -327,70 +327,6 @@
             addMCInitializer('stag-popups', window.initStagPopupEvents);
         })();
     </script>
-    <script>
-        (function() {
-            window.initAutoRxAndICDComplete = function () {
-                $('input[type="text"][name="ICD"]:not([ac-initialized])').each(function() {
-                    var elem = this,
-                        dynID = 'icd-' + Math.ceil(Math.random() * 1000000);
-                    $(elem).attr('id', dynID);
-                    new window.Def.Autocompleter.Search(dynID,
-                        'https://clinicaltables.nlm.nih.gov/api/icd10cm/v3/search?sf=code,name&ef=name', {
-                            tableFormat: true,
-                            valueCols: [0],
-                            colHeaders: ['Code', 'Name'],
-                        }
-                    );
-                    window.Def.Autocompleter.Event.observeListSelections(dynID, function() {
-                        var autocomp = elem.autocomp;
-                        var name = autocomp.getSelectedItemData()[0].data['name'];
-                        $(elem).closest('form').find('[name="contentText"]').val(name);
-                        return false;
-                    });
-                    $(elem).attr('ac-initialized', 1);
-                });
-                $('[rx-section] input[type="text"][name="contentText"]:not([ac-initialized])').each(function() {
-                    let elem = this,
-                        randPart = Math.ceil(Math.random() * 1000000),
-                        dynID = 'rx-' + randPart;
-                    $(elem).attr('id', dynID);
-                    var strengthElem = $(elem).closest('form').find('[name="strength"]')[0],
-                        dynStrengthsID = 'rx-' + randPart + '-strengths';
-                    $(strengthElem).attr('id', dynStrengthsID);
-                    $(strengthElem).attr('rx-id', dynID);
-                    new window.Def.Autocompleter.Prefetch(dynStrengthsID, []);
-                    new window.Def.Autocompleter.Search(dynID,
-                        'https://clinicaltables.nlm.nih.gov/api/rxterms/v3/search?ef=STRENGTHS_AND_FORMS');
-                    window.Def.Autocompleter.Event.observeListSelections(dynID, function() {
-                        var autocomp = elem.autocomp;
-                        var strengths =
-                            autocomp.getSelectedItemData()[0].data['STRENGTHS_AND_FORMS'];
-                        if (strengths)
-                            strengthElem.autocomp.setListAndField(strengths, '');
-                    });
-                    $(elem).attr('ac-initialized', 1);
-                });
-                window.rxEditMoeOpened = function() { // note "this" is the "form"
-                    let form = $(this),
-                        rxElem = form.find('input[type="text"][name="contentText"]').first(),
-                        strengthElem = form.find('input[type="text"][name="strength"]').first(),
-                        q = $.trim(rxElem.val());
-                    if(q !== '') {
-                        $.get('https://clinicaltables.nlm.nih.gov/api/rxterms/v3/search?' +
-                            'authenticity_token=' + (window._token || '') + '&' +
-                            'maxList=100&' +
-                            'terms=' + encodeURIComponent(q) + '&' +
-                            'ef=STRENGTHS_AND_FORMS', function(_data) {
-                            if(Array.isArray(_data) && _data.length >= 3 && Array.isArray(_data[2]['STRENGTHS_AND_FORMS']) && Array.isArray(_data[2]['STRENGTHS_AND_FORMS'][0])) {
-                                strengthElem[0].autocomp.setListAndField(_data[2]['STRENGTHS_AND_FORMS'][0], '', true);
-                            }
-                        }, 'json');
-                    }
-                }
-            }
-            addMCInitializer('patient-single', window.initAutoRxAndICDComplete);
-        })();
-    </script>
     @include('app/pdf/viewer')
 </body>
 

+ 0 - 3
routes/web.php

@@ -119,9 +119,6 @@ Route::middleware('pro.auth')->group(function () {
             Route::get('', 'CareMonthController@dashboard')->name('dashboard');
         });
 
-        // dedicated-page appointment create/edit
-        Route::get('manage-appointment/{appointment?}', 'PatientController@manageAppointment')->name('manage-appointment');
-
         // appointment calendar
         Route::get('calendar/{currentAppointment?}', 'PatientController@calendar')->name('calendar');
 

+ 4 - 4
storage/sections/assessment/form.blade.php

@@ -1,7 +1,7 @@
 <?php
 $formID = rand(0, 100000);
 ?>
-<div id="assessment_{{ $formID }}"
+<div id="assessmentSection"
       onsubmit="return submitForm_NoteSection_{{ $formID }}(this);">
     <input type="hidden" name="count">
     <?php if($section): ?>
@@ -217,7 +217,7 @@ $formID = rand(0, 100000);
             ?>
 
             window.assessmentApp = new Vue({
-                el: '#assessment_{{ $formID }}',
+                el: '#assessmentSection',
                 data: {
                     includeAll: false,
                     items: {!! json_encode($plainRows)  !!},
@@ -285,7 +285,7 @@ $formID = rand(0, 100000);
                         });
                     });
 
-                    $('#assessment_{{ $formID }} [moe][initialized]').removeAttr('initialized');
+                    $('#assessmentSection [moe][initialized]').removeAttr('initialized');
                     initMoes();
                     this.includeChanged();
                     this.generatePayload();
@@ -293,7 +293,7 @@ $formID = rand(0, 100000);
             });
 
         }
-        addMCInitializer('assessment-section', init);
+        addMCInitializer('assessment-section', init, '#assessmentSection');
 
     })();