mirror of
https://gitlab.com/signalytic/client-external/streamline/streamline-emr.git
synced 2026-09-13 03:31:31 +00:00
updated streamline-setup v2
This commit is contained in:
+18287
File diff suppressed because it is too large
Load Diff
+153
@@ -0,0 +1,153 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="{{ app()->getLocale() }}">
|
||||
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<meta name="description" content="">
|
||||
<meta name="author" content="">
|
||||
|
||||
<link rel="icon" type="image/png" sizes="16x16"
|
||||
href="{{ asset('uploads/streamline/color/streamline_icon-02.png') }}">
|
||||
<title>{{ config('app.name', 'Patient Receipt - Stre@mline') }}</title>
|
||||
<!-- Bootstrap Core CSS -->
|
||||
<link href="{{ asset('bootstrap/css/bootstrap.min.css') }}" rel="stylesheet">
|
||||
|
||||
<style>
|
||||
body {
|
||||
font-size: 0.8em;
|
||||
}
|
||||
|
||||
/*thead, tfoot { display: table-row-group }*/
|
||||
thead {
|
||||
display: table-header-group;
|
||||
}
|
||||
|
||||
tfoot {
|
||||
display: table-row-group;
|
||||
}
|
||||
|
||||
tr {
|
||||
page-break-before: always;
|
||||
page-break-after: always;
|
||||
page-break-inside: avoid;
|
||||
}
|
||||
</style>
|
||||
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<div class="container-fluid">
|
||||
@include('layouts.header_pdf_print')
|
||||
|
||||
<table class="table table-bordered">
|
||||
{{-- <tr>
|
||||
<td><b>{{ __('patient_finance.date') }}</b></td>
|
||||
<td colspan="2">{{ streamline_date_time_short($receipt_date) }}</td>
|
||||
<td><b>{{ __('patient_finance.receipt_number') }}</b></td>
|
||||
<td colspan="2">{{ $receipt_number }}</td>
|
||||
<td><b>{{ __('family_accounts.deposit_date') }}</b></td>
|
||||
<td colspan="2">{{ $new_family_deposit->deposit_date }}</td>
|
||||
</tr> --}}
|
||||
</table>
|
||||
|
||||
<table class="table table-bordered" id="receipt_table">
|
||||
<thead>
|
||||
<th>{{ __('No.') }}</th>
|
||||
<th>{{ __('audit_trail.date_and_time') }}</th>
|
||||
<th>{{ __('audit_trail.action_performed') }}</th>
|
||||
<th>{{ __('Old Values') }}</th>
|
||||
<th>{{ __('New Values') }}</th>
|
||||
<th>{{ __('audit_trail.computer_ip_address') }}</th>
|
||||
</thead>
|
||||
<tbody>
|
||||
@foreach ($audit_trail as $key => $value)
|
||||
@php
|
||||
$record_affected = str_replace('Streamline\\', '', $value->auditable_type);
|
||||
$exploded_array = preg_split('/(?=[A-Z])/', $record_affected);
|
||||
$record_affected = implode(' ', $exploded_array);
|
||||
$user = Streamline\Models\User::where('id', $value->user_id)->first();
|
||||
$full_names = $user->first_name . ' ' . $user->last_name;
|
||||
@endphp
|
||||
<tr>
|
||||
<td>{{ ++$key }}</td>
|
||||
<td>{{ streamline_date_time_short($value->created_at) }}</td>
|
||||
<td>
|
||||
@if($value->auditable_type == "Streamline\Models\User")
|
||||
@if($value->user_id == $value->auditable_id && str_contains($value->url, 'login') == 1)
|
||||
<b>{{ get_full_name($value->user_id, 'id', 'first_name', 'last_name', 'users') }}</b>
|
||||
logged into their account </b>
|
||||
@elseif($value->user_id !== $value->auditable_id && str_contains($value->url, 'login')
|
||||
!== 1)
|
||||
<b>{{ get_full_name($value->user_id, 'id', 'first_name', 'last_name', 'users') }}</b>
|
||||
updated account of <b>{{ get_full_name($value->auditable_id, 'id', 'first_name',
|
||||
'last_name', 'users') }}</b>
|
||||
@else
|
||||
<b>{{ get_full_name($value->user_id, 'id', 'first_name', 'last_name', 'users') }}</b>
|
||||
{{ $value->event
|
||||
}} {{ __('audit_trail.a') }} <b>{{ $record_affected
|
||||
}}</b>
|
||||
{{ __('audit_trail.record') }}
|
||||
@endif
|
||||
@else
|
||||
<b>{{ get_full_name($value->user_id, 'id', 'first_name', 'last_name', 'users') }}</b>
|
||||
{{ $value->event
|
||||
}} {{ __('audit_trail.a') }} <b>{{ $record_affected
|
||||
}}</b>
|
||||
{{ __('audit_trail.record') }}
|
||||
@endif
|
||||
</td>
|
||||
@if($value->auditable_type !== "Streamline\Models\User")
|
||||
<td>
|
||||
{!! read_more(json_encode($value->old_values), 'comments_short' . $value->id,
|
||||
'comments_long' . $value->id) !!}
|
||||
|
||||
<div id="comments_long{{ $value->id }}" style="display: none;">
|
||||
{!! json_encode($value->old_values) !!}<br />
|
||||
<a class="read_more" style="color : #0099CC;"
|
||||
onclick="hide('comments_long{{ $value->id }}');show('comments_short{{ $value->id }}');">{{
|
||||
__('patient_episode.read_less') }}</a>
|
||||
</div>
|
||||
</td>
|
||||
@else
|
||||
<td></td>
|
||||
@endif
|
||||
@if($value->auditable_type !== "Streamline\Models\User")
|
||||
<td>
|
||||
{!! read_more(json_encode($value->new_values), 'short_comment' . $value->id,
|
||||
'long_comment' . $value->id) !!}
|
||||
|
||||
<div id="long_comment{{ $value->id }}" style="display: none;">
|
||||
{!! json_encode($value->new_values) !!}<br />
|
||||
<a class="read_more" style="color : #0099CC;"
|
||||
onclick="hide('long_comment{{ $value->id }}');show('short_comment{{ $value->id }}');">{{
|
||||
__('patient_episode.read_less') }}</a>
|
||||
</div>
|
||||
</td>
|
||||
@else
|
||||
<td></td>
|
||||
@endif
|
||||
{{-- <td class="td-truncate">{{ $audit->user_agent }}</td> --}}
|
||||
<td>{{ $value->ip_address }}</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<i style="font-size: 0.8em; float: left">© {{ date('Y') }} Stre@mline</i>
|
||||
</div>
|
||||
<div class="col">
|
||||
<i style="float: right">Printed On {{ date(" d M Y h:ia") }} By {{ auth()->user()->first_name }} {{
|
||||
auth()->user()->last_name }}</i>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
||||
@@ -0,0 +1,106 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="{{ app()->getLocale() }}">
|
||||
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<meta name="description" content="">
|
||||
<meta name="author" content="">
|
||||
|
||||
<link rel="icon" type="image/png" sizes="16x16"
|
||||
href="{{ asset('uploads/streamline/color/streamline_icon-02.png') }}">
|
||||
<title>{{ config('app.name', 'Failed Login - Stre@mline') }}</title>
|
||||
<!-- Bootstrap Core CSS -->
|
||||
<link href="{{ asset('bootstrap/css/bootstrap.min.css') }}" rel="stylesheet">
|
||||
|
||||
<style>
|
||||
body {
|
||||
font-size: 0.8em;
|
||||
}
|
||||
|
||||
/*thead, tfoot { display: table-row-group }*/
|
||||
thead {
|
||||
display: table-header-group;
|
||||
}
|
||||
|
||||
tfoot {
|
||||
display: table-row-group;
|
||||
}
|
||||
|
||||
tr {
|
||||
page-break-before: always;
|
||||
page-break-after: always;
|
||||
page-break-inside: avoid;
|
||||
}
|
||||
</style>
|
||||
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<div class="container-fluid">
|
||||
@include('layouts.header_pdf_print')
|
||||
|
||||
<table class="table table-bordered">
|
||||
{{-- <tr>
|
||||
<td><b>{{ __('patient_finance.date') }}</b></td>
|
||||
<td colspan="2">{{ streamline_date_time_short($receipt_date) }}</td>
|
||||
<td><b>{{ __('patient_finance.receipt_number') }}</b></td>
|
||||
<td colspan="2">{{ $receipt_number }}</td>
|
||||
<td><b>{{ __('family_accounts.deposit_date') }}</b></td>
|
||||
<td colspan="2">{{ $new_family_deposit->deposit_date }}</td>
|
||||
</tr> --}}
|
||||
</table>
|
||||
|
||||
<table class="table table-bordered" id="receipt_table">
|
||||
<thead>
|
||||
<th style="width: 10px;">No.</th>
|
||||
<th style="width: 150px;">Name</th>
|
||||
<th style="width: 50px;">Email</th>
|
||||
<th style="width: 80px;">IP Address</th>
|
||||
<th style="width: 150px;">Time & Date</th>
|
||||
</thead>
|
||||
<tbody>
|
||||
@foreach ($failed_login_data as $key => $value)
|
||||
@php
|
||||
$user = Streamline\Models\User::where('id', $value->user_id)->select('first_name',
|
||||
'last_name')->first();
|
||||
$date = Carbon\Carbon::parse($value->created_at);
|
||||
@endphp
|
||||
<tr>
|
||||
<td>{{ ++$key }}</td>
|
||||
<td>{{ $user->first_name }} {{ $user->last_name }}</td>
|
||||
<td>{{ $value->email_address }}</td>
|
||||
<td>{{ $value->ip_address }}</td>
|
||||
<td>{{ streamline_date_time($value->created_at) }} ({{ $date->diffForHumans() }})
|
||||
</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
{{-- <div class="row">
|
||||
<div class="col">
|
||||
<i style="float: left"> Printed By {{ Auth::user()->first_name }} {{ Auth::user()->last_name }}</i>
|
||||
</div>
|
||||
<div class="col">
|
||||
<i style="float: right">Printed On: {{ Carbon\Carbon::now()->format('d-m-Y'); }}</i>
|
||||
</div>
|
||||
</div> --}}
|
||||
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<i style="font-size: 0.8em; float: left">© {{ date('Y') }} Stre@mline</i>
|
||||
</div>
|
||||
<div class="col">
|
||||
<i style="float: right">Printed On {{ date(" d M Y h:ia") }} By {{ auth()->user()->first_name }} {{
|
||||
auth()->user()->last_name }}</i>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
||||
@@ -0,0 +1,307 @@
|
||||
@extends('layouts.main')
|
||||
|
||||
@push('styles')
|
||||
<link href="{{ asset('elite/bower_components/select2/select2.min.css') }}" rel="stylesheet" />
|
||||
<link href="{{ asset('/elite/bower_components/datatables/jquery.dataTables.min.css') }}" rel="stylesheet"
|
||||
type="text/css" />
|
||||
<link href="{{ asset('elite/tables/css/buttons.dataTables.min.css') }}" rel="stylesheet" type="text/css" />
|
||||
<link href="{{ asset('elite/bower_components/bootstrap-datepicker/bootstrap-datepicker.min.css') }}" rel="stylesheet"
|
||||
type="text/css" />
|
||||
<style>
|
||||
th,
|
||||
td {
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
,
|
||||
table {
|
||||
width: 100%
|
||||
}
|
||||
|
||||
td {
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.td-truncate {
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
width: 100%;
|
||||
max-width: 0;
|
||||
word-break: break-all;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
,
|
||||
.td-truncate:hover {
|
||||
overflow: visible;
|
||||
white-space: normal;
|
||||
height: auto;
|
||||
/* just added this line */
|
||||
}
|
||||
</style>
|
||||
@endpush
|
||||
|
||||
@section('content')
|
||||
<div class="row bg-title">
|
||||
<div class="col-lg-3 col-md-4 col-sm-4 col-xs-12">
|
||||
<h4 class="page-title">{{ __('audit_trail.audit_trail') }}</h4>
|
||||
</div>
|
||||
<div class="col-lg-9 col-sm-8 col-md-8 col-xs-12">
|
||||
<ol class="breadcrumb">
|
||||
<li><a href="{{ route('home') }}">{{ __('audit_trail.dashboard') }}</a></li>
|
||||
<li class="active">{{ __('audit_trail.audit_trail') }}</li>
|
||||
</ol>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@include('audit_trail.menu')
|
||||
|
||||
<div class="white-box">
|
||||
{{ Form::open(['route' => 'audit_trail.search']) }}
|
||||
<div class="row">
|
||||
<div class="col-md-3">
|
||||
<div class="form-group">
|
||||
{{ Form::label('user_id', __('audit_trail.staff_member')) }}
|
||||
{{ Form::select('user_id', $user_id, null, ['class' => 'user_id form-control compulsory', 'required'])
|
||||
}}
|
||||
<div class="help-block with-errors"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
<div class="form-group">
|
||||
{{ Form::label('action_performed',__('audit_trail.action_performed')) }}
|
||||
{{ Form::select('action_performed', $action_performed, null, ['class' => 'action_performed form-control
|
||||
compulsory', 'required']) }}
|
||||
<div class="help-block with-errors"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
<div class="form-group">
|
||||
{{ Form::label('records_affected', __('audit_trail.records_affected')) }}
|
||||
{{ Form::select('records_affected', $records_affected, null, ['class' => 'records_affected form-control
|
||||
compulsory', 'required']) }}
|
||||
<div class="help-block with-errors"></div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
<div class="form-group">
|
||||
{{ Form::label('date_range', __('audit_trail.select_the_date')) }}
|
||||
<select class="form-control compulsory required" name="dates" id="dates" required>
|
||||
<option value="ALL">{{ __('audit_trail.all_dates') }}</option>
|
||||
<option value="today" selected>{{ __('audit_trail.today') }}</option>
|
||||
<option value="yesterday">{{ __('audit_trail.yesterday') }}</option>
|
||||
<option value="week">{{ __('audit_trail.last_7') }}</option>
|
||||
<option value="month">{{ __('audit_trail.last_30') }}</option>
|
||||
<option value="custom-date">{{ __('audit_trail.custom_date') }}</option>
|
||||
<option value="custom-range">{{ __('audit_trail.date_range') }}</option>
|
||||
</select>
|
||||
<div class="help-block with-errors"></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-6"></div>
|
||||
<div class="col-md-3" style="display: none;" id="start-date-div">
|
||||
<div class="form-group">
|
||||
{{ Form::label('start_date', __('audit_trail.date_from')) }}
|
||||
<div class="input-group">
|
||||
{{ Form::text('start_date', '', ['class' => 'form-control compulsory', 'required', 'readonly', 'id'
|
||||
=> 'datepicker-from']) }}
|
||||
<span class="input-group-addon"><i class="icon-calender"></i></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-3" style="display: none;" id="end-date-div">
|
||||
<div class="form-group">
|
||||
{{ Form::label('end_date', __('audit_trail.date_to')) }}
|
||||
<div class="input-group">
|
||||
{{ Form::text('end_date', '', ['class' => 'form-control compulsory', 'required', 'readonly', 'id' =>
|
||||
'datepicker-to']) }}
|
||||
<span class="input-group-addon"><i class="icon-calender"></i></span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="row">
|
||||
<div class="col-md-10">
|
||||
<Code>Colors Codes</Code>
|
||||
<span style="color:black" class="badge badge-danger">Deleted</span>
|
||||
<span style="color:black" class="badge badge-success">Created</span>
|
||||
<span style="color:black" class="badge badge-info">Updated</span>
|
||||
<span style="color:black" class="badge badge-warning">Restored</span>
|
||||
</div>
|
||||
<div class="col-md-0">
|
||||
{{ Form::button(__('audit_trail.search'), ['type' => 'submit', 'class' => 'btn btn-success waves-effect
|
||||
waves-light m-r-10']) }}
|
||||
</div>
|
||||
</div>
|
||||
{{ Form::close() }}
|
||||
<div class="row">
|
||||
<div class="col-md-0">
|
||||
{{ Form::open(['method'=>'post','route' => 'audit_trail_print']) }}
|
||||
{{ Form::hidden('data', json_encode($audits)) }}
|
||||
{{ Form::submit('Print', ['style' => 'float: right;', 'class'=>'btn btn-success btn-success']) }}
|
||||
{{ Form::close() }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-sm-12">
|
||||
<div class="white-box">
|
||||
<div class="table-responsive">
|
||||
<table class="table table-striped">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>{{ __('No.') }}</th>
|
||||
<th>{{ __('audit_trail.date_and_time') }}</th>
|
||||
<th>{{ __('audit_trail.action_performed') }}</th>
|
||||
<th>{{ __('Old Values') }}</th>
|
||||
<th>{{ __('New Values') }}</th>
|
||||
{{-- <th>{{ __('audit_trail.device') }}</th> --}}
|
||||
<th>{{ __('audit_trail.computer_ip_address') }}</th>
|
||||
<th></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@foreach ($audits as $audit)
|
||||
<tr @class([
|
||||
'text-success' => $audit->event === "created",
|
||||
'text-primary' => $audit->event === "updated",
|
||||
'text-danger' => $audit->event === "deleted",
|
||||
'text-warning' => $audit->event === "restored",
|
||||
])>
|
||||
<td>
|
||||
{{ $loop->iteration }}
|
||||
</td>
|
||||
<td>
|
||||
{{ streamline_date_time_short($audit->created_at) }}
|
||||
</td>
|
||||
<td>
|
||||
{{
|
||||
get_audit_trail_action_description(
|
||||
$audit->auditable_type,
|
||||
$audit->user_id,
|
||||
$audit->auditable_id,
|
||||
$audit->url,
|
||||
$audit->event,
|
||||
$audit->record_affected
|
||||
)
|
||||
}}
|
||||
</td>
|
||||
<td>
|
||||
{!! format_audit_trail_values($audit, 'old') !!}
|
||||
</td>
|
||||
<td>
|
||||
{!! format_audit_trail_values($audit, 'new') !!}
|
||||
</td>
|
||||
{{-- <td class="td-truncate">{{ $audit->user_agent }}</td> --}}
|
||||
<td>{{ $audit->ip_address }}</td>
|
||||
<td>
|
||||
<a
|
||||
href="/audit_trail/audit_trail_details/{{ $audit->id }}"
|
||||
class="btn btn-success btn-rounded btn-sm">
|
||||
{{ __('audit_trail.details') }}
|
||||
</a>
|
||||
</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
{{ $audits->links() }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@endsection
|
||||
|
||||
@push('scripts')
|
||||
<script src="{{ asset('elite/bower_components/datatables/jquery.dataTables.min.js') }}"></script>
|
||||
|
||||
<script src="{{ asset('elite/tables/js/dataTables.buttons.min.js') }}"></script>
|
||||
<script src="{{ asset('elite/tables/js/buttons.flash.min.js') }}"></script>
|
||||
<script src="{{ asset('elite/tables/js/jszip.min.js') }}"></script>
|
||||
<script src="{{ asset('elite/tables/js/pdfmake.min.js') }}"></script>
|
||||
<script src="{{ asset('elite/tables/js/vfs_fonts.js') }}"></script>
|
||||
<script src="{{ asset('elite/tables/js/buttons.html5.min.js') }}"></script>
|
||||
<script src="{{ asset('elite/tables/js/buttons.print.min.js') }}"></script>
|
||||
|
||||
<script src="{{ asset('elite/bower_components/bootstrap-datepicker/bootstrap-datepicker.min.js') }}"></script>
|
||||
<script src="{{ asset('elite/bower_components/select2/select2.min.js') }}"></script>
|
||||
|
||||
<script type="text/javascript">
|
||||
function hide(id) {
|
||||
document.getElementById(id).style.display = 'none';
|
||||
}
|
||||
|
||||
function show(id) {
|
||||
if (document.getElementById(id).style.display === 'none') {
|
||||
document.getElementById(id).style.display = '';
|
||||
}
|
||||
}
|
||||
|
||||
$('#datepicker-from, #datepicker-to').datepicker({
|
||||
autoclose: true,
|
||||
todayHighlight: true,
|
||||
format: 'dd-mm-yyyy',
|
||||
});
|
||||
$('.table').DataTable({
|
||||
dom: 'Bfrtip',
|
||||
bInfo: false,
|
||||
bPaginate: false,
|
||||
buttons: [{
|
||||
extend: 'copy',
|
||||
exportOptions: {
|
||||
columns: [0, 1, 2, 3, 4]
|
||||
},
|
||||
title: 'Audit Trail'
|
||||
},
|
||||
{
|
||||
extend: 'csv',
|
||||
exportOptions: {
|
||||
columns: [0, 1, 2, 3, 4]
|
||||
},
|
||||
title: 'Audit Trail'
|
||||
},
|
||||
{
|
||||
extend: 'pdf',
|
||||
exportOptions: {
|
||||
columns: [0, 1, 2, 3, 4]
|
||||
},
|
||||
title: 'Audit Trail'
|
||||
},
|
||||
{
|
||||
extend: 'print',
|
||||
exportOptions: {
|
||||
columns: [0, 1, 2, 3, 4]
|
||||
},
|
||||
title: 'Audit Trail'
|
||||
}
|
||||
]
|
||||
});
|
||||
$('#dates').change(function() {
|
||||
|
||||
var val = $(this).val();
|
||||
switch (val) {
|
||||
case 'custom-date':
|
||||
$('#end-date-div').hide();
|
||||
$('#start-date-div').show();
|
||||
break;
|
||||
case 'custom-range':
|
||||
$('#end-date-div').show();
|
||||
$('#start-date-div').show();
|
||||
break;
|
||||
default:
|
||||
$('#end-date-div').hide();
|
||||
$('#start-date-div').hide();
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
});
|
||||
$('.user_id,.action_performed,.records_affected,#dates').select2({
|
||||
placeholder: "-select-"
|
||||
});
|
||||
</script>
|
||||
@endpush
|
||||
@@ -0,0 +1,12 @@
|
||||
<div class="panel panel-default">
|
||||
<div class="panel-body">
|
||||
<a href="/audit_trail" class="nav-item btn btn-warning" style="border-radius: 5px;"><i class="fa fa-cogs"></i>
|
||||
<span style="margin-left: 10px">{{ __('Audit Trail') }}</span></a>
|
||||
<a href="/failed_logins" class="nav-item btn btn-danger" style="border-radius: 5px;"><i class="fa fa-close"></i>
|
||||
<span style="margin-left: 10px">{{ __('Failed Logins') }}</span></a>
|
||||
<a href="/online_users" class="nav-item btn btn-success" style="border-radius: 5px;"><i class="fa fa-dot-circle-o"></i>
|
||||
<span style="margin-left: 10px">{{ __('Online Users') }}</span></a>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
@@ -0,0 +1,100 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="{{ app()->getLocale() }}">
|
||||
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<meta name="description" content="">
|
||||
<meta name="author" content="">
|
||||
|
||||
<link rel="icon" type="image/png" sizes="16x16"
|
||||
href="{{ asset('uploads/streamline/color/streamline_icon-02.png') }}">
|
||||
<title>{{ config('app.name', 'Online User - Stre@mline') }}</title>
|
||||
<!-- Bootstrap Core CSS -->
|
||||
<link href="{{ asset('bootstrap/css/bootstrap.min.css') }}" rel="stylesheet">
|
||||
|
||||
<style>
|
||||
body {
|
||||
font-size: 0.8em;
|
||||
}
|
||||
|
||||
/*thead, tfoot { display: table-row-group }*/
|
||||
thead {
|
||||
display: table-header-group;
|
||||
}
|
||||
|
||||
tfoot {
|
||||
display: table-row-group;
|
||||
}
|
||||
|
||||
tr {
|
||||
page-break-before: always;
|
||||
page-break-after: always;
|
||||
page-break-inside: avoid;
|
||||
}
|
||||
</style>
|
||||
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<div class="container-fluid">
|
||||
@include('layouts.header_pdf_print')
|
||||
|
||||
<table class="table table-bordered">
|
||||
{{-- <tr>
|
||||
<td><b>{{ __('patient_finance.date') }}</b></td>
|
||||
<td colspan="2">{{ streamline_date_time_short($receipt_date) }}</td>
|
||||
<td><b>{{ __('patient_finance.receipt_number') }}</b></td>
|
||||
<td colspan="2">{{ $receipt_number }}</td>
|
||||
<td><b>{{ __('family_accounts.deposit_date') }}</b></td>
|
||||
<td colspan="2">{{ $new_family_deposit->deposit_date }}</td>
|
||||
</tr> --}}
|
||||
</table>
|
||||
|
||||
<table class="table table-bordered" id="receipt_table">
|
||||
<thead>
|
||||
<th style="width: 10px;">No</th>
|
||||
<th style="width: 10px;">Name</th>
|
||||
<th style="width: 5px;">Email</th>
|
||||
<th style="width: 10px;">Status</th>
|
||||
</thead>
|
||||
<tbody>
|
||||
@foreach ($online_users as $key => $value)
|
||||
@php
|
||||
$now = \Carbon\Carbon::now();
|
||||
$check_online_status =
|
||||
\Carbon\Carbon::parse($value['last_seen'])->diffInDays(\Carbon\Carbon::parse($now));
|
||||
@endphp
|
||||
<tr>
|
||||
<td>{{ $value['id'] }}</td>
|
||||
<td>{{ $value['first_name'] }} {{ $value['last_name'] }}</td>
|
||||
<td>{{ $value['email'] }}</td>
|
||||
<td>
|
||||
@if(Cache::has('user-is-online-' . $value['id']))
|
||||
<span class="badge badge-success">Online</span>
|
||||
@else
|
||||
<span class="badge badge-primary">Offline</span>
|
||||
@endif
|
||||
</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<i style="font-size: 0.8em; float: left">© {{ date('Y') }} Stre@mline</i>
|
||||
</div>
|
||||
<div class="col">
|
||||
<i style="float: right">Printed On {{ date(" d M Y h:ia") }} By {{ auth()->user()->first_name }} {{
|
||||
auth()->user()->last_name }}</i>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
||||
+81
@@ -0,0 +1,81 @@
|
||||
@extends('layouts.main')
|
||||
|
||||
@push('styles')
|
||||
<link href="{{ asset('elite/bower_components/horizontal-timeline/css/horizontal-timeline.css') }}" rel="stylesheet" />
|
||||
<style></style>
|
||||
@endpush
|
||||
|
||||
@section('content')
|
||||
<div class="row bg-title">
|
||||
<div class="col-lg-3 col-md-4 col-sm-4 col-xs-12">
|
||||
<h4 class="page-title">Patient Timeline</h4>
|
||||
</div>
|
||||
<div class="col-lg-9 col-sm-8 col-md-8 col-xs-12">
|
||||
<ol class="breadcrumb">
|
||||
<li><a href="{{ route('home') }}">Dashboard</a></li>
|
||||
<li class="active">Patient Timeline</li>
|
||||
</ol>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="white-box">
|
||||
<div class="row">
|
||||
<div class="col-md-4">
|
||||
@if (!is_null($patient->photo) && $patient->photo != '')
|
||||
<img src='{{ asset($patient->photo) }}' class="img-rounded center" style='height: auto; width: 100%'
|
||||
alt='Photo not available' />
|
||||
@else
|
||||
<img src="/uploads/streamline_images/person-place-holder.jpg" class="img-rounded center"
|
||||
style='height: auto; width: 100%' alt='Photo not available' />
|
||||
@endif
|
||||
</div>
|
||||
<div class="col-md-8">
|
||||
<div class="row">
|
||||
<div class="col-md-4"><b>Patient Names:</b> {{ $patient->first_name }} {{ $patient->last_name }}</div>
|
||||
<div class="col-md-4"><b>Gender:</b> {{ $patient->gender == 1 ? 'Male' : 'Female' }}</div>
|
||||
<div class="col-md-4"><b>Age:</b> {{ get_patients_age($patient->date_of_birth) }}</div>
|
||||
</div>
|
||||
<br><br>
|
||||
<div class="row">
|
||||
<div class="col-md-4"><b>Patient Number:</b> {{ $patient->number }}</div>
|
||||
<div class="col-md-4"><b>Phone:</b> {{ $patient->phone }}</div>
|
||||
<div class="col-md-4"><b>Email:</b> {{ $patient->email }}</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="white-box">
|
||||
<ul class="timeline">
|
||||
@php
|
||||
// invert side to place record
|
||||
$inverted = false;
|
||||
@endphp
|
||||
@foreach ($patient_timeline as $timeline)
|
||||
<li @if ($inverted) class="timeline-inverted" @endif>
|
||||
<div class="timeline-badge success"><i
|
||||
class="fa @if ($inverted) fa-arrow-right @else fa-arrow-left @endif"></i>
|
||||
</div>
|
||||
<div class="timeline-panel">
|
||||
<div class="timeline-heading">
|
||||
<h4 class="timeline-title">{{ $timeline['date'] }}</h4>
|
||||
</div>
|
||||
<div class="timeline-body">
|
||||
<div class="card card-outline-primary text-center text-dark">
|
||||
<div class="card-block">
|
||||
<p>{!! $timeline['text'] !!}</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</li>
|
||||
@php $inverted = !($inverted == true); @endphp
|
||||
@endforeach
|
||||
</ul>
|
||||
</div>
|
||||
@endsection
|
||||
|
||||
@push('scripts')
|
||||
<script src="{{ asset('elite/bower_components/horizontal-timeline/js/horizontal-timeline.js') }}"></script>
|
||||
<script type="text/javascript"></script>
|
||||
@endpush
|
||||
+129
@@ -0,0 +1,129 @@
|
||||
@extends('layouts.main')
|
||||
|
||||
@push('styles')
|
||||
<link href="{{ asset('elite/bower_components/select2/select2.min.css') }}" rel="stylesheet" />
|
||||
@endpush
|
||||
|
||||
@section('content')
|
||||
<div class="row bg-title">
|
||||
<div class="col-md-6">
|
||||
<h4 class="page-title">Select Patient and Episode</h4>
|
||||
</div>
|
||||
<div class="col-md-6">
|
||||
<ol class="breadcrumb">
|
||||
<li><a href="{{ route('home') }}">Dashboard</a></li>
|
||||
<li class="active">Patient Timeline</li>
|
||||
</ol>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="white-box">
|
||||
{{ Form::open(['route' => 'audit_trail.select_patient_and_episode', 'method' => 'ANY', 'role' => 'search']) }}
|
||||
|
||||
{{ Form::hidden('patient_id', 0, ['id' => 'patient_id']) }}
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-3">
|
||||
<div class="form-group">
|
||||
<select class="patient_full_name form-control" style="width:100%;" name="patient_full_name" id="patient_full_name"></select>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-md-3">
|
||||
<button type="submit" class="btn btn-success pull-right"><span class="glyphicon glyphicon-search"></span> Search</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{{ Form::close() }}
|
||||
|
||||
<hr>
|
||||
|
||||
@if($patient_searched)
|
||||
<h4>{{ $patient->first_name }} {{ $patient->last_name }} ({{ $patient->number }})</h4>
|
||||
<br>
|
||||
|
||||
@if(count($patient_episodes_details) > 0)
|
||||
@php
|
||||
$current_column = 1;
|
||||
$current_item = 1;
|
||||
@endphp
|
||||
|
||||
@foreach($patient_episodes_details as $episode)
|
||||
@if($current_column == 1)
|
||||
<div class="row">
|
||||
@endif
|
||||
|
||||
<div class="col-md-4">
|
||||
<a href="/audit_trail/patient_timeline/{{ $patient->id }}/{{ $episode['id'] }}" class="btn btn-success btn-rounded btn-outline col-md-12">{{ $episode['created_at'] }}</a>
|
||||
</div>
|
||||
|
||||
@if($current_column == 3 || $current_item == count($patient_episodes_details))
|
||||
</div><br>
|
||||
@php $current_column = 1; @endphp
|
||||
@else
|
||||
@php $current_column++; @endphp
|
||||
@endif
|
||||
|
||||
@php
|
||||
$current_item++;
|
||||
@endphp
|
||||
@endforeach
|
||||
|
||||
{{-- @php--}}
|
||||
{{-- $episode_chunk = round(count($patient_episodes_details) / 2);--}}
|
||||
{{-- $episodes = array_chunk($patient_episodes_details, $episode_chunk, true);--}}
|
||||
{{-- @endphp--}}
|
||||
|
||||
{{-- @foreach($episodes as $episode)--}}
|
||||
{{-- {{ dd($episode) }}--}}
|
||||
{{-- --}}{{--<div class="row">--}}
|
||||
{{-- @foreach($episode as $ee)--}}
|
||||
{{-- <div class="col-md-4">{{ $ee['id'] }}</div>--}}
|
||||
{{-- @endforeach--}}
|
||||
{{-- </div>--}}
|
||||
{{-- @endforeach--}}
|
||||
@else
|
||||
<h4><span style="color: red">Patient has no episodes</span></h4>
|
||||
@endif
|
||||
@endif
|
||||
</div>
|
||||
@endsection
|
||||
|
||||
@push('scripts')
|
||||
<script src="{{ asset('elite/bower_components/select2/select2.min.js') }}"></script>
|
||||
|
||||
<script type="text/javascript">
|
||||
$('.patient_full_name').change(function() {
|
||||
let id = $('#patient_full_name').val();
|
||||
$('#patient_id').val(id);
|
||||
|
||||
$.ajax({
|
||||
method: 'GET',
|
||||
url: "/patients/update_patient_info/" + id,
|
||||
success: function(response){
|
||||
$('#patient_info').html(response).show();
|
||||
},
|
||||
error: function (error) {
|
||||
console.log(error);
|
||||
}
|
||||
});
|
||||
}).select2({
|
||||
placeholder: "<?php echo "Search by patient name or number" ?>",
|
||||
ajax: {
|
||||
url: '/patients/search_patient_by_name_number',
|
||||
dataType: 'json',
|
||||
delay: 250,
|
||||
processResults: function (data) {
|
||||
return {
|
||||
results: $.map(data, function (item) {
|
||||
return {
|
||||
text: item.first_name + " " + item.last_name + " ("+ item.number + ") " + item.phone,
|
||||
id: item.id
|
||||
}
|
||||
})
|
||||
};
|
||||
},
|
||||
cache: true
|
||||
}
|
||||
});
|
||||
</script>
|
||||
@endpush
|
||||
Reference in New Issue
Block a user