4 次代码提交 13ad792a63 ... 66e5510432

作者 SHA1 备注 提交日期
  Vijayakrishnan Krishnan 66e5510432 Note: free-text generic, ui tweak 1 周之前
  Vijayakrishnan Krishnan 52e4d23246 Note: refresh rhs only on popup close 1 周之前
  Vijayakrishnan Krishnan 3e6e0dd764 Insurance card: order by coverageOrder 1 周之前
  Vijayakrishnan Krishnan 54bd8ce01b After segment update, batch refresh dependent segments 1 周之前

+ 1 - 1
app/Http/Controllers/PatientController.php

@@ -763,7 +763,7 @@ class PatientController extends Controller
     }
 
     public function insuranceCards(Request $request, Client $patient){
-        $insuranceCards = InsuranceCard::where('client_id', $patient->id)->orderBy('created_at', 'DESC')->get();
+        $insuranceCards = InsuranceCard::where('client_id', $patient->id)->orderBy('coverage_order', 'ASC')->get();
         return view('app.patient.insurance-cards', compact('patient', 'insuranceCards'));
     }
 

+ 1 - 1
config/debugbar.php

@@ -14,7 +14,7 @@ return [
      |
      */
 
-    'enabled' => env('DEBUGBAR_ENABLED', null),
+    'enabled' => env('DEBUGBAR_ENABLED', false),
     'except' => [
         'telescope*',
         'horizon*',

+ 39 - 1
js-dev/mc.js

@@ -598,9 +598,25 @@ window.refreshAffectedSegmentsByType = function(_type) {
     }
     let segments = window.segmentRefreshConfig.typeToSegments[_type];
     if(segments && segments.length) {
-        for (let i = 0; i < segments.length; i++) {
+
+        // 2024-05-30: optimization round #1
+        // Before: An ajax call per segment to /api/visit/updateSegmentHtml (uid)
+        // After: One ajax call to /api/visit/updateSegmentHtmlMultiple [uid, uid, ..]
+
+        /*for (let i = 0; i < segments.length; i++) {
             refreshSegment(segments[i]);
+        }*/
+
+        // collect the uids
+        let segmentUids = [];
+        for (let i = 0; i < segments.length; i++) {
+            let segment = $('.visit-segment[data-segment-template-name="' + segments[i] + '"]');
+            let uid = segment.attr('data-segment-uid');
+            if(!!uid) segmentUids.push(uid);
         }
+
+        // update all
+        if(!!segmentUids.length) refreshSegmentByUidMultiple(segmentUids);
     }
     else {
         if(!_type) {
@@ -608,6 +624,28 @@ window.refreshAffectedSegmentsByType = function(_type) {
         }
     }
 };
+
+window.refreshSegmentByUidMultiple = function(_uids) {
+
+    for (let i = 0; i < _uids.length; i++) {
+        $('.visit-segment[data-segment-uid="' + _uids[i] + '"]').addClass('refreshing');
+    }
+
+    $.post('/api/visit/updateSegmentHtmlMultiple', {
+        segmentUids: _uids.join(',')
+    }, _data => {
+        // noteSection.removeClass('refreshing');
+        // updateAllSegmentsInResponse(_data);
+        console.log(_data);
+
+        updateAllSegmentsInResponseMultiple(_data);
+
+        for (let i = 0; i < _uids.length; i++) {
+            $('.visit-segment[data-segment-uid="' + _uids[i] + '"]').removeClass('refreshing');
+        }
+    }, 'json');
+}
+
 window.refreshAffectedSegmentsByPopupKey = function(_key) {
     let types = [];
     for(let x in window.segmentRefreshConfig.wizardToTypes) {

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

@@ -1455,6 +1455,7 @@ use App\Models\Handout;
                              mc-initer="medications-center-{{$note->id}}"
                              title="Medications Center"
                              popup-style="overflow-visible"
+                             update-parent="refreshRHSSidebar"
                              href="/medications-center/{{$patient->uid}}/{{$note->uid}}">
                             <i class="fa fa-bolt mr-1"></i>
                             <span>Rx</span>
@@ -1467,6 +1468,7 @@ use App\Models\Handout;
                              mc-initer="problems-center-{{$note->id}}"
                              title="Problems Center"
                              popup-style="overflow-visible"
+                             update-parent="refreshRHSSidebar"
                              href="/problems-center/{{$patient->uid}}/{{$note->uid}}">
                             <i class="fa fa-bolt mr-1"></i>
                             <span>Dx</span>
@@ -1479,6 +1481,7 @@ use App\Models\Handout;
                              mc-initer="goals-center-{{$note->id}}"
                              title="Goals Center"
                              popup-style="overflow-visible"
+                             update-parent="refreshRHSSidebar"
                              href="/goals-center/{{$patient->uid}}/{{$note->uid}}">
                             <i class="fa fa-bolt mr-1"></i>
                             <span>Goals</span>
@@ -1491,6 +1494,7 @@ use App\Models\Handout;
                              mc-initer="allergies-center-{{$note->id}}"
                              title="Allergies Center"
                              popup-style="overflow-visible"
+                             update-parent="refreshRHSSidebar"
                              href="/allergies-center/{{$patient->uid}}/{{$note->uid}}">
                             <i class="fa fa-bolt mr-1"></i>
                             <span>Allergies</span>
@@ -1503,6 +1507,7 @@ use App\Models\Handout;
                              mc-initer="careteam-center-{{$note->id}}"
                              title="Care Team Center"
                              popup-style="overflow-visible"
+                             update-parent="refreshRHSSidebar"
                              href="/careteam-center/{{$patient->uid}}/{{$note->uid}}">
                             <i class="fa fa-bolt mr-1"></i>
                             <span>Care Team</span>

+ 1 - 1
resources/views/app/patient/note/rhs-sidebar-nrc.blade.php

@@ -1,4 +1,4 @@
-<div class="note-rhs-sidebar screen-only pb-5" id="note-rhs-sidebar">
+<div class="note-rhs-sidebar screen-only pb-5 nrc" id="note-rhs-sidebar">
 
     <?php
     $cmStartDate = date('Y-m-01', strtotime($note->effective_dateest));

+ 7 - 1
resources/views/app/patient/note/rhs-sidebar.blade.php

@@ -1,4 +1,4 @@
-<div class="note-rhs-sidebar screen-only pb-5" id="note-rhs-sidebar">
+<div class="note-rhs-sidebar screen-only pb-5 non-nrc" id="note-rhs-sidebar">
 
     <?php
     $cmStartDate = date('Y-m-01', strtotime($note->effective_dateest));
@@ -69,6 +69,7 @@
          mc-initer="allergies-center-{{$note->id}}"
          title="Allergies Center"
          popup-style="overflow-visible"
+         update-parent="refreshRHSSidebar"
          href="/allergies-center/{{$patient->uid}}/{{$note->uid}}">
         <div class="font-weight-bold mb-2">
             Allergies
@@ -100,6 +101,7 @@
          mc-initer="medications-center-{{$note->id}}"
          title="Medications Center"
          popup-style="overflow-visible"
+         update-parent="refreshRHSSidebar"
          href="/medications-center/{{$patient->uid}}/{{$note->uid}}">
         <div class="font-weight-bold mb-2">
             Medications
@@ -139,6 +141,7 @@
          mc-initer="problems-center-{{$note->id}}"
          title="Problems Center"
          popup-style="overflow-visible"
+         update-parent="refreshRHSSidebar"
          href="/problems-center/{{$patient->uid}}/{{$note->uid}}">
         <div class="font-weight-bold mb-2">
             Problems
@@ -164,6 +167,7 @@
          mc-initer="goals-center-{{$note->id}}"
          title="Goals Center"
          popup-style="overflow-visible"
+         update-parent="refreshRHSSidebar"
          href="/goals-center/{{$patient->uid}}/{{$note->uid}}">
         <div class="font-weight-bold mb-2">
             Goals
@@ -187,6 +191,7 @@
          mc-initer="careteam-center-{{$note->id}}"
          title="Care Team Center"
          popup-style="overflow-visible"
+         update-parent="refreshRHSSidebar"
          href="/careteam-center/{{$patient->uid}}/{{$note->uid}}">
         <div class="font-weight-bold">
             Care Team
@@ -237,6 +242,7 @@
          mc-initer="surveys-center-{{$note->id}}"
          title="Surveys"
          popup-style="overflow-visible"
+         update-parent="refreshRHSSidebar"
          href="/patients/view/{{$patient->uid}}/surveys?popup=1">
         <div class="font-weight-bold mb-2">
             Surveys

+ 60 - 2
resources/views/app/patient/note/segment_script.blade.php

@@ -40,27 +40,85 @@
             }
         }
 
+        // 2024-05-30: optimization round #1
+        // Handler for response from /api/visit/updateSegmentHtmlMultiple [uid, uid, ..]
+        window.updateAllSegmentsInResponseMultiple = function(_response, _updateListeners = true, _updateOnlySummary = false) {
+            if(!hasResponseError(_response)) {
+
+                // _response.data is an array
+                for(let i=0; i<_response.data.length; i++) {
+
+                    let item = _response.data[i];
+
+                    // refresh primary segment (where uid is _response.data.uid)
+                    if(item && item.uid) {
+                        updateSegmentByUid(item.uid, item.summaryHtml, item.editHtml, _updateOnlySummary);
+                    }
+
+                    // refresh listening segments
+                    // TODO: batch it
+                    if(_updateListeners) {
+                        if(item && item.listenerSegmentUids && item.listenerSegmentUids.length) {
+                            for (let i=0; i<item.listenerSegmentUids.length; i++) {
+                                let listenerSegment = $('.note-section[data-segment-uid="' + item.listenerSegmentUids[i] + '"]');
+                                let listenerSegmentTemplateName = listenerSegment.attr('data-segment-template-name');
+                                if(listenerSegment && listenerSegment.length) {
+                                    $.post('/api/visit/updateSegmentHtml', {
+                                        segmentUid: item.listenerSegmentUids[i]
+                                    }, _data => {
+                                        updateAllSegmentsInResponse(_data, false, _updateOnlySummary);
+
+                                        // ugly hack!
+                                        if(listenerSegmentTemplateName === 'medrisk_vigilence') {
+                                            $('.mrv-trigger')
+                                                .empty()
+                                                .append('<div class="text-info font-weight-bold text-center font-size-11">MRV</div>')
+                                                .append(_data.data.summaryHtml);
+                                        }
+
+                                    }, 'json');
+                                }
+                            }
+                        }
+                    }
+
+                }
+
+                // refresh rhs-sidebar
+                window.refreshRHSSidebar();
+
+            }
+        }
+
         window.refreshRHSSidebar = function() {
+            // this function no longer refreshes the rhs sidebar
+            // kept here only so that callers don't err out
+        };
+
+        window.refreshRHSSidebarActual = function() {
             let noteRHSSidebar = $('#note-rhs-sidebar');
             if(noteRHSSidebar.length) {
                 let lastUpdatedAt = noteRHSSidebar.attr('last-updated-at');
                 if(lastUpdatedAt) {
                     lastUpdatedAt = +lastUpdatedAt;
-                    if(new Date().getTime() - lastUpdatedAt < 500) { // dont refresh if refreshed less than a second ago
+                    // don't refresh if refreshed less than a second ago
+                    if(new Date().getTime() - lastUpdatedAt < 1000) {
                         console.log('Skipping rhs sidebar refresh');
                         return false;
                     }
                 }
-                noteRHSSidebar.attr('last-updated-at', new Date().getTime());
                 $.get('/note-rhs-sidebar/{{$patient->uid}}/{{$note->uid}}', _data => {
                     noteRHSSidebar
                         .empty()
                         .html($(_data).html());
+                    noteRHSSidebar.attr('last-updated-at', new Date().getTime());
                     $(window).trigger('scroll');
                 });
             }
         };
 
+        addMCHook('refreshRHSSidebar', refreshRHSSidebarActual);
+
         window.updateSegmentByUid = function(_uid, _summaryHtml, _editHtml, _updateOnlySummary) {
             let segment = $('.note-section[data-segment-uid="' + _uid + '"]');
             if(segment && segment.length) {

+ 1 - 1
resources/views/app/patient/segment-templates/_simple_text_segment/edit.php

@@ -14,7 +14,7 @@ if (!!@$point->data) {
         <input type="hidden" name="category" value="<?= $category ?>">
         <input type="hidden" name="data">
         <div note-rte
-             class="form-group mb-2 border-left border-right rte-holder"
+             class="form-group mb-0 rte-holder"
              data-field-name="free_text"
         ><?= $parsed && @$parsed->free_text ? $parsed->free_text : '' ?></div>
         <div class="m-2">

+ 1 - 1
resources/views/app/patient/segment-templates/omega_subjective_free_text/edit.blade.php

@@ -42,7 +42,7 @@ else {
         <input type="hidden" name="category" value="SUBJECTIVE_GENERAL">
         <input type="hidden" name="data">
         <div note-rte
-             class="form-group mb-2 border-left border-right rte-holder"
+             class="form-group mb-0 rte-holder"
              data-field-name="free_text"
         ><?= $content ?></div>
         <div class="m-2">