updated streamline-setup v2

This commit is contained in:
2025-01-15 08:53:49 -08:00
committed by alec.turner
parent a2ce9248f0
commit 4b569f81b0
20228 changed files with 2932048 additions and 63204 deletions
@@ -119,7 +119,7 @@
</div>
<div class="col-sm-6">
{{ Form::label('next_of_kin_phone',__('patients.next_of_kin_phone')) }}
{{ Form::text('next_of_kin_phone','',['class' => 'form-control compulsory', 'required']) }}
{{ Form::text('next_of_kin_phone','',['class' => 'form-control compulsory', 'required','pattern' => '\d{10}', 'title'=>'Phone number must be exactly 10 digits']) }}
<div class="help-block with-errors"></div>
</div>
</div>
@@ -127,7 +127,7 @@
<div class="form-group">
{{ Form::label('phone',__('patients.phone')) }}
{{ Form::text('phone','',['class' => 'form-control compulsory','id' => 'phone', 'required' ]) }}
{{ Form::text('phone','',['class' => 'form-control compulsory','id' => 'phone', 'required','pattern' => '\d{10}', 'title'=>'Phone number must be exactly 10 digits' ]) }}
<div class="help-block with-errors"></div>
</div>
@@ -135,7 +135,7 @@
<div class="form-group">
{{ Form::label('alternative_phone', 'Alternative Phone Number') }}
{{ Form::text('alternative_phone','',['class' => 'form-control','id' => 'alternative_phone']) }}
{{ Form::text('alternative_phone','',['class' => 'form-control','id' => 'alternative_phone','pattern' => '\d{10}', 'title'=>'Phone number must be exactly 10 digits']) }}
</div>
<div class="form-group">
@@ -181,11 +181,34 @@
<div id="not_ugandan_regions" style="display: none;">
<div class="form-group">
{{ Form::label('country_id',__('patients.country_of_origin')) }}
{{ Form::select('country_id', $countries, '',['class' => 'form-control', 'data-error'=>'Select the country']) }}
{{ Form::select('country_id', $countries, '',['class' => 'form-control', 'data-error'=>'Select the country','id' => 'country_picker']) }}
<div class="help-block with-errors"></div>
{{-- <a href="#modal_residence" data-toggle="modal" id="modal_residence_link"><font size="1">{{ __('patients.add_new_residence') }} </font></a> --}}
<a href="#modal_add_country_foreigner" data-toggle="modal" id="modal_add_country_foreigner_id"><font size="1">Add new country </font></a>
</div>
<div class="form-group">
<label for="non_ugandan_foreigner_or_refugee">{{ __('patients.foreigner_or_refugee') }}</label>
<select id="foreginer_refugee" name="non_ugandan_foreigner_or_refugee" class="form-control ">
<option value="null"> -- {{ __('patients.select') }} --</option>
<option value="1"> {{ __('patients.foreigner') }} </option>
<option value="2"> {{ __('patients.refugee') }} </option>
</select>
<div class="help-block with-errors"></div>
</div>
<div class="form-group">
<label for="non_ugandan_national_id">{{ __('patients.national_id') }}</label>
<input type="text" name="non_ugandan_national_id_no" value="" class="form-control">
<div class="help-block with-errors"></div>
</div>
</div>
<div id="ugandan_regions">
<div class="form-group">
{{ Form::label('residence','Residence') }}
@@ -236,6 +259,9 @@
</div>
@endif
</div>
<div class="col-md-8">
<hr>
@@ -356,6 +382,36 @@
</div>
<!-- end of residence modals -->
{{-- start of add other foreigner country modal --}}
<div class="modal fade" id="modal_add_country_foreigner" tabindex="-1" role="dialog">
<div class="modal-dialog" role="document">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">&times;</span></button>
<h4 class="modal-title">Add New Country</h4>
</div>
<div class="modal-body">
<div class="form-group">
<label>Country Name</label>
<input type="text" name="new_country_name" id="new_country_name" value="" class="form-control compulsory">
<div class="help-block with-errors"></div>
</div>
{{-- @error('name')
<span class="text-danger">{{ $message }}</span>
@enderror --}}
</div>
<div class="modal-footer">
<button type="button" class="btn btn-default" data-dismiss="modal">{{ __('patients.cancel') }}</button>
<a class="btn btn-success" onclick="submitCountry()">{{ __('patients.save') }}</a>
</div>
</div>
</div>
</div>
<div class="modal" id="modal_similar_patients" tabindex="-1" role="dialog" aria-hidden="true">
<div class="modal-dialog modal-lg" role="document">
<div class="modal-content">
@@ -437,6 +493,70 @@
});
}
// add new country
function submitCountry() {
var new_country_name = $("#new_country_name").val();
if ($("#new_country_name").val() === "" || !$("#new_country_name").val()) {
alert("Please make sure that you fill in a country name");
return false;
}
var data = {
'name':new_country_name,
};
// $.ajax({
// method: 'POST',
// url: '/patients/add_country',
// data: data,
// success: function(response){
// if(!isNaN(response)){
// //response = last inserted id
// $('#country_picker').append($('<option>', {
// value: response,
// text: new_country_name
// }));
// $('#country_picker').val(response);//preselect the newly added referral
// $('#modal_add_country_foreigner').modal('hide'); //manually hide the modal
// } else {
// alert("error occurred");
// }
// },
// error: function(jqXHR, textStatus, errorThrown) {
// alert(JSON.stringify(jqXHR));
// console.log(JSON.stringify(jqXHR));
// }
// });
$.ajax({
method: 'POST',
url: '/patients/add_country',
data: data,
success: function(response) {
if (!isNaN(response)) {
// response = last inserted id
$('#country_picker').append($('<option>', {
value: response,
text: new_country_name
}));
$('#country_picker').val(response); // preselect the newly added country
$('#modal_add_country_foreigner').modal('hide'); // manually hide the modal
} else {
alert(response.error || "An unknown error occurred");
}
},
error: function(jqXHR) {
var response = jqXHR.responseJSON;
if (jqXHR.status === 409 && response && response.error) {
alert(response.error); // Show the "Country already exists" message
} else {
alert("An error occurred: " + JSON.stringify(jqXHR));
}
}
});
}
function submitCompany() {
var company_name = $("#company_name").val();
var company_contact = $("#company_contact").val();
@@ -655,7 +775,7 @@
});
/* make residence dropdowns searchable */
$('#district_id,#county_id,#subcounty_id,#parish_id,#company,#occupation').select2({
$('#district_id,#county_id,#subcounty_id,#parish_id,#company,#occupation,#foreginer_refugee').select2({
placeholder: "<?php echo __('patients.select')?>",
width: '100%',
});
@@ -790,4 +910,21 @@
}
});
</script>
{{-- palm vein scanner --}}
{{-- <script type="text/javascript" src="{{ asset('js/palmsecure/fbf.standalone.js') }}" xmlns="http://ddue.schemas.microsoft.com/authoring/2003/5"></script> --}}
{{-- <script type ="text/javascript" src="{{ asset('js/palmsecure/fbf.module.js') }}"></script> --}}
<script type ="text/javascript" src="{{ asset('js/palmsecure/demo.bundle.js') }}"></script>
<script type ="text/javascript" src="{{ asset('js/palmsecure/demo.js') }}"></script>
<script type="text/javascript">
start();
</script>
{{-- end of palm vein scanner --}}
@endpush
@@ -1,4 +1,3 @@
@php use Streamline\Enums\Roles; @endphp
@extends('layouts.main')
@push('styles')
@@ -103,7 +102,7 @@
<div class="help-block with-errors"></div>
</div>
@if( Auth::user()->hasRole(Roles::SUPER_ADMIN->value))
@if( Auth::user()->hasRole('Super Admin'))
<div class="form-group">
{{ Form::label('is_test_patient',__('patients.is_test_patient')) }}
<br>
@@ -131,17 +130,17 @@
{{ Form::select('next_of_kin_relationship',$relationships,$patient->next_of_kin_relationship,['class' => 'form-control compulsory']) }}
<br>
{{ Form::label('next_of_kin_phone',__('patients.next_of_kin_phone')) }}
{{ Form::text('next_of_kin_phone',$patient->phone_of_next_of_kin,['class' => 'form-control']) }}
{{ Form::text('next_of_kin_phone',$patient->phone_of_next_of_kin,['class' => 'form-control','pattern' => '\d{10}', 'title'=>'Phone number must be exactly 10 digits']) }}
</div>
<div class="form-group">
{{ Form::label('phone',__('patients.phone')) }}
{{ Form::text('phone',$patient->phone,['class' => 'form-control compulsory']) }}
{{ Form::text('phone',$patient->phone,['class' => 'form-control compulsory','pattern' => '\d{10}', 'title'=>'Phone number must be exactly 10 digits']) }}
</div>
<div class="form-group">
{{ Form::label('alternative_phone', 'Alternative Phone Number') }}
{{ Form::text('alternative_phone',$patient->alternative_phone,['class' => 'form-control','id' => 'alternative_phone']) }}
{{ Form::text('alternative_phone',$patient->alternative_phone,['class' => 'form-control','id' => 'alternative_phone','pattern' => '\d{10}', 'title'=>'Phone number must be exactly 10 digits']) }}
</div>
<div class="form-group">
@@ -199,6 +198,27 @@
{{ Form::select('country_id', $countries, $patient->country_id, ['class' => 'form-control', 'data-error'=>'Select the country']) }}
<div class="help-block with-errors"></div>
</div>
@php
$other_patients_info_data = !empty($patient->other_patients_info) ? json_decode($patient->other_patients_info) : '';
@endphp
<div class="form-group">
<label for="non_ugandan_foreigner_or_refugee">{{ __('patients.foreigner_or_refugee') }}</label>
<select id="foreginer_refugee" name="non_ugandan_foreigner_or_refugee" class="form-control ">
<option value="null"> -- {{ __('patients.select') }} --</option>
<option value="1" @selected(isset($other_patients_info_data) && is_int($other_patients_info_data) && $other_patients_info_data->non_ugandan_foreigner_or_refugee == 1 ?? '')> {{ __('patients.foreigner') }} </option>
<option value="2" @selected(isset($other_patients_info_data) && is_int($other_patients_info_data) && $other_patients_info_data->non_ugandan_foreigner_or_refugee == 2 ?? '')> {{ __('patients.refugee') }} </option>
</select>
<div class="help-block with-errors"></div>
</div>
<div class="form-group">
<label for="non_ugandan_national_id">{{ __('patients.national_id') }}</label>
<input type="text" name="non_ugandan_national_id_no" value=" {{ $other_patients_info_data->non_ugandan_national_id_no ?? '' }}" class="form-control">
<div class="help-block with-errors"></div>
</div>
</div>
<div id="ugandan_regions" @if($patient->citizenship == 0) style="display: none" @endif>
@@ -51,13 +51,12 @@
<div class="col-md-2">
<button type="submit" class="btn btn-rounded btn-success"><span class="glyphicon glyphicon-search"></span> {{ __('patients.search') }}</button>
<span class="label label-info float-right" style="font-size: 12.5px;"> {{ $patientCount }} {{ __('patients.patients_registered') }}</span>
<span class="label label-info float-right" style="font-size: 12.5px;"> {{ count($patient_numbers) }} {{ __('patients.patients_registered') }}</span>
</div>
</div>
@if(isset($criteria) && isset($resultCount))
<p>{{ __('patients.search_criteria') }} : <code>{{ $criteria }}</code> &nbsp;&nbsp;&nbsp;{{ __('patients.total_results') }} : <code>{{ $resultCount }}</code> &nbsp;&nbsp;&nbsp;<a href="{{ route('patients.index') }}">{{ __('patients.clear_search') }}</a></p>
@if(isset($criteria))
<p>{{ __('patients.search_criteria') }} : <code>{{ $criteria }}</code></p>
@endif
{{ Form::close() }}
@@ -78,8 +77,7 @@
</tr>
</thead>
<tbody>
@if(count($patients) > 0)
@foreach($patients as $patient)
@foreach($patients as $patient)
<tr>
<td>{{ $patient->number }}</td>
<td>{!! insurance_flag($patient->id) !!}</td>
@@ -92,8 +90,8 @@
</td>
<td>{{ get_patients_age($patient->date_of_birth) }}</td>
<td>{{ $patient->phone }}</td>
<td><?php echo isset($categories[$patient->category_id]) ? $categories[$patient->category_id] : "N/A"; ?></td>
<td>{{ isset($patient_villages[$patient->village_id]) ? $patient_villages[$patient->village_id] : '' }}</td>
<td>{{ $categories[$patient->category_id] ?? "N/A" }}</td>
<td>{{ $villages[$patient->village_id] ?? '' }}</td>
<td><a href="/patients/{{ $patient->id }}/" class="btn btn-rounded btn-info btn-sm"><i class="fa fa-info-circle"></i> {{ __('patients.details') }}</a></td>
<td>
<a href="/patients/{{ $patient->id }}/edit/" class="btn btn-warning btn-rounded btn-sm"><i class="fa fa-pencil"></i> {{ __('patients.edit') }}</a>
@@ -102,10 +100,7 @@
<a href="/patient_episodes/set_patient_id/{{ $patient->id }}" class="btn btn-rounded btn-primary btn-sm"><i class="fa fa-hand-pointer-o"></i> <strong>{{ __('patients.select') }}</strong></a>
</td>
</tr>
@endforeach
@else
<tr class="warning"><td class="center" colspan="10"><code>{{ __('patients.no_records_found') }}</code></td></tr>
@endif
@endforeach
</tbody>
</table>
@@ -177,30 +172,6 @@ $('#previous_numbers .typeahead').typeahead(
}
);
$('#first_names .typeahead').typeahead(
{
hint: true,
highlight: true,
minLength: 1
},
{
name: 'first_names',
source: substringMatcher(<?php echo json_encode($first_names); ?>)
}
);
$('#last_names .typeahead').typeahead(
{
hint: true,
highlight: true,
minLength: 1
},
{
name: 'last_names',
source: substringMatcher(<?php echo json_encode($last_names); ?>)
}
);
$('#villages .typeahead').typeahead(
{
hint: true,
@@ -209,7 +180,7 @@ $('#villages .typeahead').typeahead(
},
{
name: 'villages',
source: substringMatcher(<?php echo json_encode($villages); ?>)
source: substringMatcher(<?php echo json_encode(array_values($villages)); ?>)
}
);
@@ -275,19 +246,7 @@ $('.table').DataTable({
]
});
$('.sorting').removeClass('sorting');//remove the sorting class
$('.sorting_asc').removeClass('sorting_asc');//remove the sorting class
</script>
@endpush
@push('styles')
<style type="text/css">
.color-bordered-table.success-bordered-table {
border-top: 0px;
}
</style>
@endpush
@@ -1,160 +1,133 @@
<!DOCTYPE html>
<html lang="{{ app()->getLocale() }}">
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Patient Card</title>
<style>
@page {
size: A8 landscape;
margin: 0;
}
<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="">
body {
font-family: Arial, sans-serif;
margin: 0;
padding: 0;
<link rel="icon" type="image/png" sizes="16x16" href="{{ base_path('public/uploads/streamline/color/streamline_icon-02.png') }}">
<title>{{ config('app.name', 'CHI Membership Card - Stre@mline') }}</title>
<!-- Bootstrap Core CSS -->
<link href="{{ base_path('public/bootstrap/css/bootstrap.min.css') }}" rel="stylesheet">
<style style="text-css">
body{
/*font-size: 1.2em;*/
}
thead {
/*display: table-header-group;*/
}
tfoot {
/*display: table-row-group;*/
}
tr {
/*page-break-inside: avoid;*/
}
th{
font-weight: bolder;
font-size: 22px;
color: #fff;
}
td{
font-size: 24px;
padding-top: 5px;
color: #fff;
}
</style>
</head>
<body>
<div class="container-fluid">
<div class="row">
<div class="col-12">
<div style="background-color: rgb(43, 116, 91); color:#fff">
<div class="hospital-logo" style="padding-top: 10px;">
@include('layouts.header_pdf_print')
</div>
<div class="row" style="padding: 30px;">
<div class="col-12" style="padding-top: 10px;">
<table>
<tr>
<td><u>NAME</u></td>
<td style="padding-left: 15px;"><u>SEX</u></td>
</tr>
<tr>
<th>
{{ get_full_name($patient->id, "id", "first_name", "last_name", "patients") }}
</th>
<th style="padding-left: 15px;">
{{ $patient->gender == 1 ? "MALE" : "FEMALE" }}
</th>
</tr>
<tr>
<td></td>
<td style="padding-left: 15px;"></td>
</tr>
<tr>
<td><u>Stre@mline NUMBER</u></td>
<td style="padding-left: 15px;"><u>DATE OF BIRTH</u></td>
</tr>
<tr>
<th>
{{ $patient->number }}
</th>
<th style="padding-left: 15px;">
{{ streamline_date($patient->date_of_birth) }}
</th>
</tr>
<tr>
<td></td>
<td style="padding-left: 10px;"></td>
</tr>
<tr>
<td><u>NIN</u></td>
<td style="padding-left: 10px;"><u>HOLDER'S SIGNATURE</u></td>
</tr>
<tr>
<th>
{{ $patient->national_id }}
</th>
<th style="padding-left: 10px;">
{{-- signature --}}
</th>
</tr>
</table>
</div>
</div>
</div>
</div>
</div>
}
.a8-container {
/*
width: 8.5cm;
height: 5.4cm; */
<br><br><br>
width: 450px;
height: 280px;
border: 1px solid #000;
display: flex;
/* align-items: center;
justify-content: center; */
/* margin: auto; */
/* page-break-inside: avoid; */
}
table {
width: 100%;
border-collapse: collapse;
}
th, td {
border: 0px solid #000;
padding: 0px;
text-align: left;
}
<div class="row">
<div class="col-12">
<div style="background-color: rgb(43, 116, 91); padding:10px; padding-top: 120px;">
<table align="center">
<tr>
<td>HOST HEALTH FACILITY &nbsp;&nbsp;</td>
<td>
{{ $hospitalInfo->name }}
</td>
</tr>
</style>
</head>
<body>
<tr>
<td>VILLAGE</td>
<td>
{{ get_name(get_name($patient->id, "id", "village_id", "patients"), "id", "name", "villages") }}
</td>
</tr>
<tr>
<td>DISTRICT</td>
<td>
{{ get_name($patient->district_id, "id", "name", "districts") }}
</td>
</tr>
{{-- <div class="a8-container"> --}}
<table >
{{-- row 1 --}}
<tr style=" border-bottom: 1px solid gray; ">
<td style="padding:8px;">
<tr>
<td colspan="2" style="background-color: #fff">
{{ getDNS1DBarcodePNGOtherOption(sprintf("%04u", $patient->id)) }}
{{-- LOGO --}}
<img style="max-width: 100px; max-height: 25px;" src="{{ asset($data['hospitalInfo']->logo ?? '') }}" class="" alt="">
</td>
<td style="padding:8px; text-align:right; font-weight:600;">PATIENT CARD</td>
</tr>
{{-- row 2 --}}
<tr>
<td colspan="2" style="font-size:5px; padding-top:10px;padding-left:7px; padding-right:7px; ">NAME</td>
</tr>
{{-- row 3 --}}
<tr>
<td colspan="2" style="font-size:9px; font-weight:600;padding-left:7px; padding-right:7px;text-transform: uppercase " >
{{ $data['patient']->first_name ?? '' }}
{{ $data['patient']->last_name ?? '' }}
{{ $data['patient']->other_names ?? '' }}
</td>
</tr>
{{-- row 4 --}}
<tr style="">
<td style="font-size:5px; padding-top:10px;padding-left:7px; ">PATIENT NUMBER</td>
<td style="font-size:5px; padding-top:10px; padding-right:7px; text-transform: uppercase">RESIDENCE</td>
</tr>
{{-- row 5 --}}
<tr >
<td style="font-size:9px; font-weight:600; padding-left:7px; text-transform: uppercase">{{ $data['patient']->number ?? '' }} </td>
<td style="font-size:9px; font-weight:600; padding-right:7px;text-transform: uppercase">{{ get_name(get_name($data['patient']->id, "id", "village_id", "patients"), "id", "name", "villages") }}</td>
</tr>
{{-- row 6 --}}
<tr >
<td style="font-size:5px; padding-top:10px; padding-left:7px;vertical-align: top; ">DISTRICT <br>
<span style="font-size:9px; font-weight:600; text-transform: uppercase">{{ get_name($data['patient']->district_id, "id", "name", "districts") }} </span>
</td>
<td style="font-size:5px; padding-top:10px; padding-right:7px;">
{{ getDNS1DBarcodePNGOCards(sprintf("%04u", $data['patient']->id)) }}
<br>
<h4 style="color: black">{{ sprintf("%04u", $patient->id) }}</h4>
</td>
</tr>
</table>
<h4 style="color: black">{{ sprintf("%04u", $data['patient']->id) }}</h4></td>
</tr>
<div style="text-align: center; color: #fff; padding: 10px; font-size: 22px;">
This card should only be used for identification at a Stre@mline network hospital.
</div>
</div>
</div>
</div>
</div>
</body>
</html>
<tr>
<td colspan="2" style="font-size:5px; padding-top:5px; padding-left:7px; padding-right:7px; text-align:left; border-bottom: 0px solid gray; font-style:italic;">
This card is a property of {{ $data['hospitalInfo']->name ?? '' }}, If found please return to the facility. <br>
</td>
</tr>
<tr >
<td style="font-size:4px; text-align:left; padding-left:7px; padding-top:-12px; ">Supported by Streamline ; www.streamlinehealth.org</td>
<td style="text-align:right; ">
<img style="max-width: 60px; max-height: 25px; padding-right:7px; padding-top:5px;" src="{{ asset('uploads/streamline/color/280X50-06.png') }}" class="" alt="">
</td>
</tr>
</table>
{{-- </div> --}}
</body>
</html>
@@ -0,0 +1,351 @@
<!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="{{ base_path('public/uploads/streamline/color/streamline_icon-02.png') }}">
<title>{{ config('app.name', 'CHI Membership Card - Stre@mline') }}</title>
<!-- Bootstrap Core CSS -->
{{-- <link href="{{ base_path('public/bootstrap/css/bootstrap.min.css') }}" rel="stylesheet"> --}}
<link href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css" rel="stylesheet">
<style style="text-css">
/* body{
}
thead {
}
tfoot {
}
tr {
}
th{
font-weight: bolder;
font-size: 22px;
color: #fff;
}
td{
font-size: 24px;
padding-top: 5px;
color: #fff;
} */
/* new card */
.a8-page {
width: 8.5cm; /* A8 width */
height: 5.4cm; /* A8 height */
/* background-color: #f8f9fa; */
margin: auto; /* Center the A8 page within the container */
border: 1px solid #dee2e6; /* Light border */
border-radius: 5px; /* Rounded corners */
padding: 5px; /* Reduced padding to fit content */
box-sizing: border-box; /* Include padding and border in element's total width and height */
overflow: hidden; Hide overflow
font-size: 10px; /* Adjust font size to fit content */
}
.container {
height: 100vh; /* Full viewport height */
display: flex;
justify-content: center;
align-items: center;
}
.medical-card-title {
font-size: 1.2em;
font-weight: bold;
text-align: center;
margin-bottom: 5px; /* Reduced margin to fit content */
}
.medical-card-content p {
margin: 2px 0; /* Reduced margins to fit content */
}
</style>
</head>
<body>
<div class="container">
<div class="row">
{{-- column --}}
<div class="col">
<div class="a8-page">
<div class="row" style="padding:3px; background-color:#eaeef3;" >
<div class="col-12 col-md">
<img style="max-width: 100px; max-height: 25px;" src="{{ asset($hospitalInfo->logo) }}" class="" alt="Responsive image">
</div>
<div class="col-12 col-md text-right" style="font-size:9px; margin-top:8px; font-weight:600;">PATIENT CARD</div>
</div>
<hr style="margin-top:5px;">
<div class="row">
<div class="col-12 col-md">
<p style="font-size:6px; margin-top:-10px;"> NAME</p>
<p style="font-size:9px; margin-top:-15px; font-weight:600;"> AREBAHOONA MBABAZI ANGELLA MBABAZI OTHER NAME</p>
</div>
</div>
<div class="row">
<div class="col-12 col-md">
<p style="font-size:6px; margin-top:-10px;"> PATIENT NUMBER</p>
<p style="font-size:9px; margin-top:-15px; font-weight:600;"> SCH-24-01290000</p>
</div>
<div class="col-12 col-md">
<p style="font-size:6px; margin-top:-10px;"> VILLAGE</p>
<p style="font-size:9px; margin-top:-15px; font-weight:600;"> NAKAPIRIPIRITI WARD</p>
</div>
</div>
<div class="row" style="margin-top:-10px;">
<div class="col-12 col-md">
<p style="font-size:6px; "> DISTRICT</p>
<p style="font-size:9px; margin-top:-15px; font-weight:600;">KABERAMAIDO DISTRICT</p>
</div>
<div class="col-12 col-md">
<p style="font-size:6px; "> BARCODE</p>
<p style="font-size:9px; margin-top:-15px; font-weight:600;">
<img style="max-width: 100%; max-height: 20px; " src="{{ asset($hospitalInfo->lab_stamp) }}" class="" alt="Responsive image">
</p>
</div>
</div>
<div class="row" style="margin-top:-8px;">
<div class="col-12 col-md">
<p style="font-size:8px;">This card is a property of Kisiizi Medical center, if found please return to the facility.</p>
</div>
</div>
<hr style="margin-top:-15px;">
<div class="row">
<div class="col-12 col-md-8" style="margin-top:-6px;">
<p style="font-size:7px; "><i>Supported by Streamline ; www.streamlinehealth.org </i></p>
</div>
<div class="col-12 col-md-4" style="margin-top:-17px;">
<img style="max-width: 100px; max-height: 20px;" src="{{ asset($hospitalInfo->stamp) }}" class="" alt="Responsive image">
</div>
</div>
</div>
</div>
{{-- column --}}
{{-- <div class="col">
<div class="a8-page">
<div class="row" style="padding:3px; background-color:#eaeef3;" >
<div class="col-12 col-md">
<img style="max-width: 100px; max-height: 25px;" src="{{ asset($hospital_details->logo) }}" class="" alt="Responsive image">
</div>
<div class="col-12 col-md text-right" style="font-size:9px; margin-top:8px; font-weight:600;">PATIENT CARD</div>
</div>
<hr style="margin-top:5px;">
<div class="row">
<div class="col-12 col-md">
<p style="font-size:6px; margin-top:-10px;"> NAME</p>
<p style="font-size:9px; margin-top:-15px; font-weight:600;"> AREBAHOONA MBABAZI ANGELLA MBABAZI OTHER NAME</p>
</div>
</div>
<div class="row">
<div class="col-12 col-md">
<p style="font-size:6px; margin-top:-10px;"> PATIENT NUMBER</p>
<p style="font-size:9px; margin-top:-15px; font-weight:600;"> SCH-24-01290000</p>
</div>
<div class="col-12 col-md">
<p style="font-size:6px; margin-top:-10px;"> VILLAGE</p>
<p style="font-size:9px; margin-top:-15px; font-weight:600;"> NAKAPIRIPIRITI WARD</p>
</div>
</div>
<div class="row" style="margin-top:-10px;">
<div class="col-12 col-md">
<p style="font-size:6px; "> DISTRICT</p>
<p style="font-size:9px; margin-top:-15px; font-weight:600;">KABERAMAIDO DISTRICT</p>
</div>
<div class="col-12 col-md">
<p style="font-size:6px; "> BARCODE</p>
<p style="font-size:9px; margin-top:-15px; font-weight:600;">
<img style="max-width: 100%; max-height: 20px; " src="{{ asset($hospital_details->lab_stamp) }}" class="" alt="Responsive image">
</p>
</div>
</div>
<div class="row" style="margin-top:-8px;">
<div class="col-12 col-md">
<p style="font-size:8px;">This card is a property of Kisiizi Medical center, if found please return to the facility.</p>
</div>
</div>
<hr style="margin-top:-15px;">
<div class="row">
<div class="col-12 col-md-8" style="margin-top:-6px;">
<p style="font-size:7px; "><i>Supported by Streamline ; www.streamlinehealth.org </i></p>
</div>
<div class="col-12 col-md-4" style="margin-top:-17px;">
<img style="max-width: 100px; max-height: 20px;" src="{{ asset($hospital_details->stamp) }}" class="" alt="Responsive image">
</div>
</div>
</div>
</div> --}}
</div>
</div>
{{-- OLD VIEW --}}
{{-- <div class="container-fluid">
<div class="row">
<div class="col-12">
<div style="background-color: rgb(43, 116, 91); color:#fff">
<div class="hospital-logo" style="padding-top: 10px;">
@include('layouts.header_pdf_print')
</div>
<div class="row" style="padding: 30px;">
<div class="col-12" style="padding-top: 10px;">
<table>
<tr>
<td><u>NAME</u></td>
<td style="padding-left: 15px;"><u>SEX</u></td>
</tr>
<tr>
<th>
{{ get_full_name($patient->id, "id", "first_name", "last_name", "patients") }}
</th>
<th style="padding-left: 15px;">
{{ $patient->gender == 1 ? "MALE" : "FEMALE" }}
</th>
</tr>
<tr>
<td></td>
<td style="padding-left: 15px;"></td>
</tr>
<tr>
<td><u>Stre@mline NUMBER</u></td>
<td style="padding-left: 15px;"><u>DATE OF BIRTH</u></td>
</tr>
<tr>
<th>
{{ $patient->number }}
</th>
<th style="padding-left: 15px;">
{{ streamline_date($patient->date_of_birth) }}
</th>
</tr>
<tr>
<td></td>
<td style="padding-left: 10px;"></td>
</tr>
<tr>
<td><u>NIN</u></td>
<td style="padding-left: 10px;"><u>HOLDER'S SIGNATURE</u></td>
</tr>
<tr>
<th>
{{ $patient->national_id }}
</th>
<th style="padding-left: 10px;">
</th>
</tr>
</table>
</div>
</div>
</div>
</div>
</div>
<br><br><br>
<div class="row">
<div class="col-12">
<div style="background-color: rgb(43, 116, 91); padding:10px; padding-top: 120px;">
<table align="center">
<tr>
<td>HOST HEALTH FACILITY &nbsp;&nbsp;</td>
<td>
{{ $hospitalInfo->name }}
</td>
</tr>
<tr>
<td>VILLAGE</td>
<td>
{{ get_name(get_name($patient->id, "id", "village_id", "patients"), "id", "name", "villages") }}
</td>
</tr>
<tr>
<td>DISTRICT</td>
<td>
{{ get_name($patient->district_id, "id", "name", "districts") }}
</td>
</tr>
<tr>
<td colspan="2" style="background-color: #fff">
{{ getDNS1DBarcodePNGOtherOption(sprintf("%04u", $patient->id)) }}
<br>
<h4 style="color: black">{{ sprintf("%04u", $patient->id) }}</h4>
</td>
</tr>
</table>
<div style="text-align: center; color: #fff; padding: 10px; font-size: 22px;">
This card should only be used for identification at a Stre@mline network hospital.
</div>
</div>
</div>
</div>
</div> --}}
<script src="https://code.jquery.com/jquery-3.5.1.slim.min.js"></script>
<script src="https://cdn.jsdelivr.net/npm/@popperjs/core@2.9.3/dist/umd/popper.min.js"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js"></script>
</body>
</html>
@@ -0,0 +1,401 @@
@extends('layouts.main')
@push('styles')
<link href="{{ asset('elite/bower_components/bootstrap-datepicker/bootstrap-datepicker.min.css') }}" rel="stylesheet" type="text/css" />
<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/select2/select2.min.css') }}" rel="stylesheet" />
<link href="{{ asset('elite/bower_components/typeahead.js-master/dist/typehead-min.css') }}" rel="stylesheet">
@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">{{ __('layout.patient_cards') }}</h4>
</div>
<div class="col-lg-9 col-sm-8 col-md-8 col-xs-12">
<ol class="breadcrumb">
<li><a href="{{ route('home') }}">{{ __('patients.dashboard') }}</a></li>
<li><a href="{{ route('patients.index') }}">{{ __('patients.patients') }}</a></li>
<li >{{ __('patients.print_patients_cards') }}</li>
</ol>
</div>
</div>
<div class="white-box">
<div class="row">
<div class="col-12 col-md">
<a href="{{ route('patients.create') }}" class="btn btn-success"><i class="fa fa-plus"></i> {{ __('patients.add_patient') }} </a>
<a href="{{ route('patients.index') }}" class="btn btn-info"> <i class="fa fa-eye"></i> {{ __('patients.view_patients') }} </a>
</div>
<div class="col-12 col-md" style="text-align:right;">
<a href="{{ route('patients.inactive') }}" class="btn btn-danger"><i class="fa fa-eye-slash"></i> {{ __('patients.inactive_patients') }} </a>
</div>
</div>
</div>
<div class="white-box">
<div class="row">
<div class="col-md-12">
<div class="panel panel-default" style="border-radius: 5px;">
<div class="panel-body">
{{-- Search Patient Cards --}}
<form action="{{ route('patients.search_patient_cards_to_print') }}" method="POST" >
@csrf
<div class="row">
<div class="col-md">
<div class="form-group">
<label>{{ __('patients.select_registered_date') }}:</label>
<select class="form-control required" name="dates" id="dates">
{{-- <option value="null">--Select--</option> --}}
<option value="today">{{ __('patients.today') }}</option>
<option value="yesterday">{{ __('patients.yesterday') }}</option>
<option value="custom_date">{{ __('patients.custom_date') }}</option>
<option value="custom_date_range">{{ __('patients.date_range') }}</option>
</select>
</div>
</div>
<div class="col-md" id="sDate" style="display: none;">
<div class="form-group">
<label>{{ __('patients.start_date') }}:</label>
<div class="input-group">
<input type="text" name="start_date" id="start_date" class="form-control">
<span class="input-group-addon"><i class="icon-calender"></i></span>
</div>
</div>
</div>
<div class="col-md" id="eDate" style="display: none;">
<div class="form-group">
<label>{{ __('patients.end_date') }}:</label>
<div class="input-group">
<input type="text" name="end_date" id="end_date" class="form-control">
<span class="input-group-addon"><i class="icon-calender"></i></span>
</div>
</div>
</div>
<div class="col-md">
<label>{{ __('patients.select_patients') }}:</label>
<div class="input-group">
<select class="form-control" name="number[]" id="patient_number" multiple></select>
</div>
</div>
<div class="col-md">
<div class="form-group" style="margin-top: 25px;">
<button type="submit" class="btn btn-success"><i class="fa fa-paper-plane"></i> {{ __('patients.submit') }}</button>
</div>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
@include('flash::message')
@php
use \Carbon\Carbon;
$today = Carbon::now();
$patients_current_date = streamline_date($today);
@endphp
{{-- Process patient cards form --}}
<form id="patient_cards_form" action="{{ route('patients.print_patients_cards') }}" method="POST">
@csrf
<div class="row">
<div class="col-12 col-md" style="text-align:left; margin-bottom:10px;">
<h5 style="color:rgb(27, 144, 223);">{{ __('patients.patients_registered_today') }}</h5>
</div>
<div class="col-12 col-md" style="text-align:right; margin-bottom:10px;">
@if (Auth::user()->can('print-patient-cards'))
<button type="submit" id="submit-button" class="btn btn-rounded" style="background-color:purple; color:#ffffff;"><i class="fa fa-print"></i> {{ __('patients.print_cards') }}</button>
@endif
</div>
</div>
<div class="row">
<div class="table-responsive" style="padding-right:15px; padding-left:15px;">
<table class="table success-table table-sm table-striped table-hover " style="color: white; border: 1px solid #00c292;">
<thead >
<tr style="background-color: #00c292; color: white;">
<th style="color: white;">{{ __('patients.hash') }}</th>
<th style="color: white;">{{ __('patients.patient_number') }}</th>
<th style="color: white;">{{ __('patients.full_names') }}</th>
<th style="color: white;">{{ __('patients.gender') }}</th>
<th style="color: white;">{{ __('patients.age') }}</th>
<th style="color: white;">{{ __('patients.phone_number') }}</th>
<th style="color: white;">{{ __('patients.category') }}</th>
<th style="color: white;">{{ __('patients.residence') }}</th>
</tr>
</thead>
<tbody>
@forelse ( $patients as $key => $patient )
@php
$village = \Streamline\Models\Village::find($patient->village_id);
$patient_category = \Streamline\Models\PatientCategory::find($patient->category_id);
@endphp
<tr>
<td><input type="checkbox" value="{{ $patient->id }}" name="patients[]" class="patient_cards_checkbox"></td>
<td>{{ $patient->number ?? '' }}</td>
<td>{!! insurance_flag($patient->id) !!}</td>
<td>
@if($patient->gender == 1)
{{ __('patients.male') }}
@else
{{ __('patients.female') }}
@endif
</td>
<td>{{ get_patients_age($patient->date_of_birth) }}</td>
<td>{{ $patient->phone }}</td>
<td>{{ $patient_category->name ?? '' }}</td>
<td>{{ $village->name ?? '' }}</td>
</tr>
@empty
<tr>
<td colspan="3" ></td>
<td colspan="3" style="color:red;" >
No Patients Found!
</td>
<td colspan="2" ></td>
</tr>
@endforelse
</tbody>
</table>
<center>
{{-- {{ $patients->links() }} --}}
{{ $patients->appends(Request::except('page'))->links() }}
</center>
</div>
</div>
</form>
</div>
@endsection
@push('scripts')
<!-- Typehead Plugin JavaScript -->
<script src="{{ asset('elite/bower_components/select2/select2.min.js') }}"></script>
<script src="{{ asset('elite/bower_components/bootstrap-datepicker/bootstrap-datepicker.min.js') }}"></script>
<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>
document.addEventListener('DOMContentLoaded', function() {
const checkboxes = document.querySelectorAll('.patient_cards_checkbox');
const form = document.getElementById('patient_cards_form');
const maxChecked = 10;
checkboxes.forEach(checkbox => {
checkbox.addEventListener('change', function() {
const checkedCount = document.querySelectorAll('.patient_cards_checkbox:checked').length;
if (checkedCount > maxChecked) {
alert(`You can only select up to ${maxChecked} patients.`);
// this.disabled = true;
this.checked = false;
}
});
});
form.addEventListener('submit', function(event) {
const checkedCount = document.querySelectorAll('.patient_cards_checkbox:checked').length;
if (checkedCount === 0) {
event.preventDefault();
alert('Please select at least one patient.');
}
});
});
</script>
<script type="text/javascript">
const todays_date = "Patients Registered On " + "{{ $patients_current_date }}";
// disable data tables pagination
$('.table').DataTable({
dom: 'Bfrtip',
pageLength: 200,
paging: false,
info: false,
buttons: [
'copy',
{extend: 'csv',
message: "Patients Registered",
title: todays_date,
exportOptions: {
columns: [ 1, 2, 3, 4, 5, 6,7]
},
},
{extend: 'excel',
message: "Patients Registered",
title: todays_date,
exportOptions: {
columns: [ 1, 2, 3, 4, 5, 6,7]
},
sheetName: "Patients Registered"
},
{extend: 'pdf',
message: "Patients Registered",
title: todays_date,
orientation: 'portrait',
pageSize: 'LETTER',
exportOptions: {
columns: [ 1, 2, 3, 4, 5, 6,7]
},
customize: function (doc) {
doc.defaultStyle.fontSize = 10;
}
},
{extend: 'print',
message: "Patients Registered",
title: todays_date,
exportOptions: {
columns: [ 1, 2, 3, 4, 5, 6,7]
},
customize: function (win) {
$(win.document.body)
.css('font-size', '10pt')
.css('background', '#fff')
.prepend(
'<img src="<?php echo asset('uploads/logo/logo-sm.png'); ?>" style="position:absolute; top:0; right:0;" />'
);
$(win.document.body).find('table')
.addClass('compact')
.css('font-size', 'inherit');
}
}
]
});
</script>
<script type="text/javascript">
$('#patient_number').change(function () {
let id = $('#patient_number').val();
$('#patient_id').val(id);
});
$('#patient_number').select2({
placeholder: 'Search by patient details (names and 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 + ")",
id: item.id
}
})
};
},
cache: true
}
});
$('#dates').change(function (e) {
if($(this).val() === "custom_date"){
$("#eDate").hide();
$("#sDate").show();
}else if($(this).val() === "custom_date_range"){
$("#sDate").show();
$("#eDate").show();
}else{
$("#eDate").hide();
$("#sDate").hide();
}
});
$('#end_date').datepicker({
autoclose: true,
todayHighlight: true,
format: 'dd-mm-yyyy'
});
$('#start_date').datepicker({
autoclose: true,
todayHighlight: true,
format: 'dd-mm-yyyy'
});
$('#staff_member').select2({
placeholder: "-- select --"
});
$('#staff_member_accountant').select2({
placeholder: "-- select --"
});
</script>
@endpush
@push('styles')
<style type="text/css">
.color-bordered-table.success-bordered-table {
border-top: 0px;
}
</style>
@endpush
@@ -0,0 +1,145 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Patient Card</title>
<style>
@page {
/* margin: 5;
padding:0;
size:A4 potrait;
text-align:center; */
margin-left:35;
margin-top:12;
margin-right:0;
margin-bottom:0;
padding:0;
size:A4 potrait;
text-align:center;
}
body {
font-family: Arial, sans-serif;
/* margin:0; */
}
.a8-container {
width: 8.5cm;
height: 5.4cm;
/* width: 7.4cm;
height: 5.2cm; */
margin-top:10px;
border: 1px solid #000;
display: flex;
}
table {
width: 100%;
border-collapse: collapse;
}
th, td {
border: 0px solid #000;
padding: 0px;
text-align: left;
}
</style>
</head>
<body>
<table>
<tr>
@php
$counter = 0;
@endphp
@foreach($patient_cards as $key => $patient)
<td>
<div class="a8-container">
<table >
<tr style=" border-bottom: 1px solid gray; ">
<td style="padding:8px;">
<img style="max-width: 100px; max-height: 25px;" src="{{ asset($hospital_details->logo ?? '') }}" class="" alt="">
</td>
<td style="padding:8px; text-align:right; font-weight:600;">PATIENT CARD</td>
</tr>
<tr>
<td colspan="2" style="font-size:6px; padding-top:14px;padding-left:7px; padding-right:7px; ">NAME</td>
</tr>
<tr>
<td colspan="2" style="font-size:9px; font-weight:600;padding-left:7px; padding-right:7px; text-transform: uppercase " >
{{ $patient->first_name ?? '' }}
{{ $patient->last_name ?? '' }}
{{ $patient->other_names ?? '' }}
</td>
</tr>
<tr style="">
<td style="font-size:6px; padding-top:10px;padding-left:7px; ">PATIENT NUMBER</td>
<td style="font-size:6px; padding-top:10px; padding-right:7px;text-transform: uppercase ">RESIDENCE</td>
</tr>
<tr >
<td style="font-size:9px; font-weight:600; padding-left:7px; ">{{ $patient->number ?? '' }} </td>
<td style="font-size:9px; font-weight:600; padding-right:7px; text-transform: uppercase">{{ get_name(get_name($patient->id, "id", "village_id", "patients"), "id", "name", "villages") }}</td>
</tr>
<tr >
<td style="font-size:5px; padding-top:10px; padding-left:7px;vertical-align: top; ">DISTRICT <br>
<span style="font-size:9px; font-weight:600; text-transform: uppercase">{{ get_name($patient->district_id, "id", "name", "districts") }} </span>
</td>
<td style="font-size:5px; padding-top:10px; padding-right:7px;">
{{ getDNS1DBarcodePNGOCards(sprintf("%04u", $patient->id)) }}
<br>
<h4 style="color: black">{{ sprintf("%04u", $patient->id) }}</h4></td>
</tr>
<tr>
<td colspan="2" style="font-size:5px; padding-top:5px; padding-left:7px; padding-right:7px; text-align:left; border-bottom: 0px solid gray; font-style:italic;">
This card is a property of {{ $hospital_details->name ?? '' }} , If found please return to the facility. <br>
</td>
</tr>
<tr >
<td style="font-size:4px; text-align:left; padding-left:7px; padding-top:-12px; ">Supported by Streamline ; www.streamlinehealth.org</td>
<td style="text-align:right; ">
<img style="max-width: 60px; max-height: 25px; padding-right:7px; padding-top:5px;" src="{{ asset('uploads/streamline/color/280X50-06.png') }}" class="" alt="">
</td>
</tr>
</table>
</div>
</td>
@php
$counter++;
@endphp
@if($counter % 2 == 0)
</tr><tr>
@endif
@endforeach
@if($counter % 2 != 0)
<td></td>
@endif
</tr>
</table>
</body>
</html>
@@ -0,0 +1,411 @@
@extends('layouts.main')
@push('styles')
<link href="{{ asset('elite/bower_components/bootstrap-datepicker/bootstrap-datepicker.min.css') }}" rel="stylesheet" type="text/css" />
<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/select2/select2.min.css') }}" rel="stylesheet" />
<link href="{{ asset('elite/bower_components/typeahead.js-master/dist/typehead-min.css') }}" rel="stylesheet">
@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">{{ __('layout.patient_cards') }}</h4>
</div>
<div class="col-lg-9 col-sm-8 col-md-8 col-xs-12">
<ol class="breadcrumb">
<li><a href="{{ route('home') }}">{{ __('patients.dashboard') }}</a></li>
<li><a href="{{ route('patients.index') }}">{{ __('patients.patients') }}</a></li>
@if (Auth::user()->can('print-patient-cards'))
<li class="active">v{{ __('patients.print_patients_cards') }}</li>
@endif
</ol>
</div>
</div>
<div class="white-box">
<div class="row">
<div class="col-12 col-md">
<a href="{{ route('patients.create') }}" class="btn btn-success"><i class="fa fa-plus"></i> {{ __('patients.add_patient') }} </a>
<a href="{{ route('patients.index') }}" class="btn btn-info"> <i class="fa fa-eye"></i> {{ __('patients.view_patients') }} </a>
</div>
<div class="col-12 col-md" style="text-align:right;">
<a href="{{ route('patients.inactive') }}" class="btn btn-danger"><i class="fa fa-eye-slash"></i> {{ __('patients.inactive_patients') }} </a>
</div>
</div>
</div>
<div class="white-box">
<div class="row">
<div class="col-md-12">
<div class="panel panel-default" style="border-radius: 5px;">
<div class="panel-body">
{{-- Search Patient Cards --}}
<form action="{{ route('patients.search_patient_cards_to_print') }}" method="POST" >
@csrf
<div class="row">
<div class="col-md">
<div class="form-group">
<label>{{ __('patients.select_registered_date') }}:</label>
<select class="form-control required" name="dates" id="dates">
{{-- <option value="null">--Select--</option> --}}
<option value="today">{{ __('patients.today') }}</option>
<option value="yesterday">{{ __('patients.yesterday') }}</option>
<option value="custom_date">{{ __('patients.custom_date') }}</option>
<option value="custom_date_range">{{ __('patients.date_range') }}</option>
</select>
</div>
</div>
<div class="col-md" id="sDate" style="display: none;">
<div class="form-group">
<label>{{ __('patients.start_date') }}:</label>
<div class="input-group">
<input type="text" name="start_date" id="start_date" class="form-control">
<span class="input-group-addon"><i class="icon-calender"></i></span>
</div>
</div>
</div>
<div class="col-md" id="eDate" style="display: none;">
<div class="form-group">
<label>{{ __('patients.end_date') }}:</label>
<div class="input-group">
<input type="text" name="end_date" id="end_date" class="form-control">
<span class="input-group-addon"><i class="icon-calender"></i></span>
</div>
</div>
</div>
<div class="col-md">
<label>{{ __('patients.select_patients') }}:</label>
<div class="input-group">
<select class="form-control" name="number[]" id="patient_number" multiple></select>
</div>
</div>
<div class="col-md">
<div class="form-group" style="margin-top: 25px;">
<button type="submit" class="btn btn-success"><i class="fa fa-paper-plane"></i> {{ __('patients.submit') }}</button>
</div>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
@include('flash::message')
{{-- Process patient cards form --}}
<form id="patient_cards_form" action="{{ route('patients.print_patients_cards') }}" method="POST">
@csrf
<div class="row">
<div class="col-12 col-md" style="text-align:left; margin-bottom:10px;">
<h5 style="color:rgb(27, 144, 223);">
{{ $searched_data_string ?? '' }}
</h5>
</div>
<div class="col-12 col-md" style="text-align:right; margin-bottom:10px;">
@if (Auth::user()->can('print-patient-cards'))
<button type="submit" id="submit-button" class="btn btn-rounded" style="background-color:purple; color:#ffffff;"><i class="fa fa-print"></i> {{ __('patients.print_cards') }}</button>
@endif
</div>
</div>
<div class="row">
<div class="table-responsive" style="padding-right:15px; padding-left:15px;">
<table class="table success-table table-sm table-striped table-hover disable_pagination" style="color: white; border: 1px solid #00c292;">
<thead >
<tr style="background-color: #00c292; color: white;">
<th style="color: white;">{{ __('patients.hash') }}</th>
<th style="color: white;">{{ __('patients.patient_number') }}</th>
<th style="color: white;">{{ __('patients.full_names') }}</th>
<th style="color: white;">{{ __('patients.gender') }}</th>
<th style="color: white;">{{ __('patients.age') }}</th>
<th style="color: white;">{{ __('patients.phone_number') }}</th>
<th style="color: white;">{{ __('patients.category') }}</th>
<th style="color: white;">{{ __('patients.residence') }}</th>
</tr>
</thead>
<tbody>
@forelse ( $patients as $key => $patient )
@php
$village = \Streamline\Models\Village::find($patient->village_id);
$patient_category = \Streamline\Models\PatientCategory::find($patient->category_id);
@endphp
<tr>
<td><input type="checkbox" value="{{ $patient->id }}" name="patients[]" class="patient_cards_checkbox"></td>
<td>{{ $patient->number ?? '' }}</td>
<td>{!! insurance_flag($patient->id) !!}</td>
<td>
@if($patient->gender == 1)
{{ __('patients.male') }}
@else
{{ __('patients.female') }}
@endif
</td>
<td>{{ get_patients_age($patient->date_of_birth) }}</td>
<td>{{ $patient->phone }}</td>
<td>{{ $patient_category->name ?? '' }}</td>
<td>{{ $village->name ?? '' }}</td>
</tr>
@empty
<tr>
<td colspan="3" ></td>
<td colspan="3" style="color:red;" >
No Patients Found!
</td>
<td colspan="2" ></td>
</tr>
@endforelse
</tbody>
</table>
{{-- laravel pagination --}}
<center>
{{-- {{ $patients->links() }} --}}
{{ $patients->appends(Request::except('page'))->links() }}
</center>
</div>
</div>
</form>
</div>
@endsection
@push('scripts')
<!-- Typehead Plugin JavaScript -->
<script src="{{ asset('elite/bower_components/select2/select2.min.js') }}"></script>
<script src="{{ asset('elite/bower_components/bootstrap-datepicker/bootstrap-datepicker.min.js') }}"></script>
<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>
{{-- print patient cards --}}
{{-- <script src="https://cdnjs.cloudflare.com/ajax/libs/sweetalert/2.1.2/sweetalert.min.js"></script> --}}
<script>
document.addEventListener('DOMContentLoaded', function() {
const checkboxes = document.querySelectorAll('.patient_cards_checkbox');
const form = document.getElementById('patient_cards_form');
const maxChecked = 10;
checkboxes.forEach(checkbox => {
checkbox.addEventListener('change', function() {
const checkedCount = document.querySelectorAll('.patient_cards_checkbox:checked').length;
if (checkedCount >= maxChecked) {
checkboxes.forEach(box => {
if (!box.checked) {
box.disabled = true;
}
});
} else {
checkboxes.forEach(box => {
box.disabled = false;
});
}
});
});
form.addEventListener('submit', function(event) {
const checkedCount = document.querySelectorAll('.patient_cards_checkbox:checked').length;
if (checkedCount === 0) {
event.preventDefault();
alert('Please select at least one patient.');
}
});
});
</script>
<script type="text/javascript">
var searchedDataString = "{{ $searched_data_string ?? '' }}";
$('.table').DataTable({
dom: 'Bfrtip',
pageLength: 200,
//disable js pagination
paging: false,
info: false,
buttons: [
'copy',
{extend: 'csv',
message: "Patients Registered",
title: searchedDataString,
exportOptions: {
columns: [ 1, 2, 3, 4, 5, 6,7]
},
},
{extend: 'excel',
message: "Patients Registered",
title: searchedDataString,
exportOptions: {
columns: [ 1, 2, 3, 4, 5, 6,7]
},
sheetName: "Patients Registered"
},
{extend: 'pdf',
message: "Patients Registered",
title: searchedDataString,
orientation: 'portrait',
pageSize: 'LETTER',
exportOptions: {
columns: [ 1, 2, 3, 4, 5, 6,7]
},
customize: function (doc) {
doc.defaultStyle.fontSize = 10;
// doc.styles.tableHeader.alignment = 'left';
}
},
{extend: 'print',
message: "Patients Registered",
title: searchedDataString,
exportOptions: {
columns: [ 1, 2, 3, 4, 5, 6,7]
},
customize: function (win) {
$(win.document.body)
.css('font-size', '10pt')
.css('background', '#fff')
.prepend(
'<img src="<?php echo asset('uploads/logo/logo-sm.png'); ?>" style="position:absolute; top:0; right:0;" />'
);
$(win.document.body).find('h1')
.css('font-size', '9pt'); // Adjust font size as needed
$(win.document.body).find('table')
.addClass('compact')
.css('font-size', 'inherit');
}
}
]
});
</script>
<script>
$('#patient_number').change(function () {
let id = $('#patient_number').val();
$('#patient_id').val(id);
});
$('#patient_number').select2({
placeholder: 'Search by patient details (names and 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 + ")",
id: item.id
}
})
};
},
cache: true
}
});
$('#dates').change(function (e) {
if($(this).val() === "custom_date"){
$("#eDate").hide();
$("#sDate").show();
}else if($(this).val() === "custom_date_range"){
$("#sDate").show();
$("#eDate").show();
}else{
$("#eDate").hide();
$("#sDate").hide();
}
});
$('#end_date').datepicker({
autoclose: true,
todayHighlight: true,
format: 'dd-mm-yyyy'
});
$('#start_date').datepicker({
autoclose: true,
todayHighlight: true,
format: 'dd-mm-yyyy'
});
$('#staff_member').select2({
placeholder: "-- select --"
});
$('#staff_member_accountant').select2({
placeholder: "-- select --"
});
</script>
@endpush
@push('styles')
<style type="text/css">
.color-bordered-table.success-bordered-table {
border-top: 0px;
}
</style>
@endpush
@@ -1,6 +1,12 @@
@extends('layouts.main')
@section('content')
@php
$other_patients_info_data = !empty($patient->other_patients_info) ? json_decode($patient->other_patients_info) : '';
@endphp
<div class="row bg-title">
<div class="col-lg-3 col-md-4 col-sm-4 col-xs-12">
<h4 class="page-title">{{ __('patients.view') }}</h4>
@@ -42,7 +48,7 @@
<tr>
<th>Code</th>
<td>
{{ getDNS1DBarcodePNGOtherOption(sprintf("%04u", $patient->id)) }}
{{ getDNS1DBarcodePNG(sprintf("%04u", $patient->id)) }}
<h4>{{ sprintf("%04u", $patient->id) }}</h4>
</td>
</tr>
@@ -65,7 +71,9 @@
</div>
<div class="col-sm-3">
@if (Auth::user()->can('print-patient-cards'))
<a href="/patient_card/{{ $patient->id }}" target="_blank" class="btn btn-rounded btn-primary btn-sm float-right">{{ __('patients.print_patient_card') }}</a>
@endif
</div>
</div>
</div>
@@ -94,6 +102,7 @@
<th><font color="black">{{__('patients.next_of_kin')}}</font></th>
<td>{{ $patient->next_of_kin }}</td>
</tr>
<tr>
<th><font color="black">{{ __('patients.next_of_kin_relationship') }}</font></th>
<td>{{ get_name($patient->next_of_kin_relationship, 'id', 'name', 'family_relations') }}</td>
@@ -102,6 +111,11 @@
<th><font color="black">{{__('patients.phone_of_next_of_kin')}}</font></th>
<td>{{ $patient->phone_of_next_of_kin }}</td>
</tr>
<tr>
<th><font color="black">Country</font></th>
<td>{{ $country->name ?? '' }}</td>
</tr>
<tr>
</table>
</div>
@@ -127,10 +141,46 @@
<th><font color="black">{{ __('patients.village') }}</font></th>
<td>{{ get_name($patient->village_id, 'id', 'name', 'villages') }}</td>
</tr>
<tr>
<th><font color="black">Referred From</font></th>
<td>{{ $patient->referred_from }}</td>
</tr>
<tr>
<th><font color="black">Foreigner / Refugee </font></th>
<td>
@if(!empty($other_patients_info_data))
@if ($other_patients_info_data->non_ugandan_foreigner_or_refugee == 1)
<span>{{ __('patients.foreigner') }} </span>
@elseif ($other_patients_info_data->non_ugandan_foreigner_or_refugee == 2)
<span>{{ __('patients.refugee') }} </span>
@else
<span></span>
@endif
@else
<span></span>
@endif
</td>
</tr>
@if (isset($other_patients_info_data->non_ugandan_national_id_no))
<tr>
<th class="highlight"> ID Number</th>
<td>{{ $other_patients_info_data->non_ugandan_national_id_no ?? '' }}</td>
</tr>
@else
<tr>
<th class="highlight">National ID</th>
<td>{{ $patient->national_id ?? '' }}</td>
</tr>
@endif
@php $registration_fields = !empty($patient->registration_fields)? json_decode($patient->registration_fields, true):[]; @endphp
@foreach ($registration_fields as $key => $registration_field)
@php $keys = explode("_",$key) @endphp