소스 검색

added note reasons

Josh 4 년 전
부모
커밋
65d4578f2a

+ 5 - 0
app/Models/Note.php

@@ -50,6 +50,11 @@ class Note extends Model
             ->orderBy('position_index', 'asc');
     }
 
+    public function reasons()
+    {
+        return $this->hasMany(NoteReason::class, 'note_id', 'id');
+    }
+
     public function summary()
     {
         $parts = [];

+ 12 - 0
app/Models/NoteReason.php

@@ -0,0 +1,12 @@
+<?php
+
+namespace App\Models;
+
+use Illuminate\Database\Eloquent\Model;
+
+class NoteReason extends Model
+{
+
+    protected $table = 'note_reason';
+    //
+}

+ 106 - 0
resources/views/app/patient/note/_create-note-reason.blade.php

@@ -0,0 +1,106 @@
+<div moe wide class="pt-2">
+    <a class="" href="" show start>Update Note Reasons</a>
+    <form url="/api/note/update-note-reasons">
+        <input type="hidden" name="uid" value="{{$note->uid}}">
+        <table class="table table-sm table-condensed" id="note-reasons-table">
+            <thead>
+                <tr>
+                    <td>Code</td>
+                    <td>Description</td>
+                    <td></td>
+                </tr>
+            </thead>
+            <tbody>
+                @if(count($note->reasons))
+                @foreach($note->reasons as $reason)
+                <tr class="data-row">
+                    <td><input type="text" class="form-control note-reason-icd" data-index="{{$loop->index}}" id="icd_{{$loop->index}}" name="noteReasonDTOs[{{$loop->index}}].code" value="{{$reason->code}}"></td>
+                    <td><input type="text" class="form-control note-reason-description" data-index="{{$loop->index}}" id="description_{{$loop->index}}" name="noteReasonDTOs[{{$loop->index}}].description" value="{{$reason->description}}"></td>
+                    <td>
+                        @if(!$loop->first)
+                        <a href="" class="btn-remove-row">-</a>
+                        @endif
+                    </td>
+                </tr>
+                @endforeach
+                @else
+                <tr class="data-row">
+                    <td><input type="text" class="form-control note-reason-icd"  data-index="0" id="icd_0" name="noteReasonDTOs[0].code"></td>
+                    <td><input type="text" class="form-control note-reason-description" data-index="0" id="description_0" name="noteReasonDTOs[0].description"></td>
+                    <td>
+                        <a href="" class="btn-remove-row">-</a>
+                    </td>
+                </tr>
+                <tr class="data-row">
+                    <td><input type="text" class="form-control note-reason-icd" data-index="1" id="icd_1" name="noteReasonDTOs[1].code"></td>
+                    <td><input type="text" class="form-control note-reason-description" data-index="1" id="description_1" name="noteReasonDTOs[1].description"></td>
+                    <td>
+                        <a href="" class="btn-remove-row">-</a>
+                    </td>
+                </tr>
+                <tr class="data-row">
+                    <td><input type="text" class="form-control note-reason-icd" data-index="2" id="icd_2" name="noteReasonDTOs[2].code"></td>
+                    <td><input type="text" class="form-control note-reason-description" data-index="2" id="description_2" name="noteReasonDTOs[2].description"></td>
+                    <td>
+                        <a href="" class="btn-remove-row">-</a>
+                    </td>
+                </tr>
+                @endif
+            </tbody>
+        </table>
+        <div class="form-group">
+            <button class="btn btn-outline-primary btn-sm btn-add-row">Add row</button>
+        </div>
+        <div class="form-group">
+            <button class="btn btn-primary btn-sm" submit>Submit</button>
+            <button class="btn btn-default border btn-sm" cancel>Cancel</button>
+        </div>
+    </form>
+</div>
+<script>
+    (function() {
+        $(".btn-add-row").click(function() {
+            var rowCount = $('#note-reasons-table').find('tr').length;
+            var nextIndex = rowCount -1;
+            var $clone = $('#note-reasons-table tr.data-row:first').clone();
+            $($clone).find('input').attr('data-index', nextIndex);
+            $($clone).find('input.note-reason-icd').attr('name','noteReasonDTOs['+nextIndex+'].code').val('');
+            $($clone).find('input.note-reason-icd').attr('id','icd_'+nextIndex);
+            $($clone).find('input.note-reason-description').attr('name','noteReasonDTOs['+nextIndex+'].description').val('');
+            $($clone).find('input.note-reason-description').attr('id','description_'+nextIndex);
+            $('#note-reasons-table').append($clone);
+            attachAutocompleterToField(nextIndex);
+
+            return false;
+        });
+
+        $('#note-reasons-table').on('click', '.btn-remove-row', function() {
+            $(this).closest('tr').remove();
+            return false;
+        });
+
+        $('#note-reasons-table .note-reason-icd').each(function(i,e) {
+            var fieldIndex = $(e).attr('data-index');
+            attachAutocompleterToField(fieldIndex);
+        });
+
+        function attachAutocompleterToField(fieldIndex){
+            var e = $('#icd_'+fieldIndex)[0];
+            new Def.Autocompleter.Search('icd_'+fieldIndex, 'https://clinicaltables.nlm.nih.gov/api/icd10cm/v3/search?sf=code,name', {
+                tableFormat: true,
+                valueCols: [1],
+                colHeaders: ['Code', 'Name']
+            });
+            Def.Autocompleter.Event.observeListSelections('icd_'+fieldIndex, function(data) {
+                console.log("DATA:", data);
+                var descriptionInput = $(e).closest('tr').find('.note-reason-description')[0];
+                console.log("Setting value of e to : ", data.item_code);
+                $('#icd_'+fieldIndex).val(data.item_code);
+                $('#description_'+fieldIndex).val(data.final_val);
+                $('#icd_'+fieldIndex).focus();
+                return false;
+            });
+        }
+
+    })();
+</script>

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

@@ -395,6 +395,33 @@
                     </div>
                 @endif
 
+                <div class="border-top p-3">
+                        <div class="">
+                            <div class="d-flex align-items-center mb-2">
+                                <p class="font-weight-bold text-secondary m-0">Note Reasons</p>
+                            </div>
+                            <table class="table table-sm tabe-striped border-left border-right border-bottom m-0">
+                                <thead class="bg-light">
+                                <tr>
+                                    <th class="border-bottom-0 pl-2 w-75">Code</th>
+                                    <th class="border-bottom-0">Description</th>
+                                </tr>
+                                </thead>
+                                <tbody>
+                                @foreach ($note->reasons as $reason)
+                                    <tr>
+                                        <td class="pl-2">{{ $reason->code }}</td>
+                                        <td class="">{{ $reason->description}}</td>
+                                    </tr>
+                                @endforeach
+                                </tbody>
+                            </table>
+                        </div>
+                        <div class="d-flex">
+                            @include('app/patient/note/_create-note-reason')
+                        </div>
+                </div>
+
                 <div class="border-top p-3">
                     @if($note->addendums->count())
                         <div class="">