mirror of
https://gitlab.com/signalytic/client-external/streamline/streamline-emr.git
synced 2026-09-13 11:41:31 +00:00
Build modified streamline images
The official image from streamline does not currently work for the arm64 platform. As a temporary measure, the source code and docker build scripts have been lifted from the official images and are used to build locally. Some additional modifications are made to reduce overall image size, these are documented in docker/README.md
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>
|
||||
+77
@@ -0,0 +1,77 @@
|
||||
@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: 100px; width: 100%' alt='Photo not available' />
|
||||
@else
|
||||
<img src="/uploads/streamline_images/person-place-holder.jpg" class="img-rounded center" style='height: 100px; 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