548 lines
25 KiB
HTML
548 lines
25 KiB
HTML
{% load static %}
|
|
|
|
<div class="provider-verification-results">
|
|
<!-- Verification Header -->
|
|
<div class="row mb-4">
|
|
<div class="col-12">
|
|
<div class="card border-0 shadow-sm">
|
|
<div class="card-header {% if verification.status == 'verified' %}bg-success{% elif verification.status == 'expired' or verification.status == 'suspended' %}bg-danger{% elif verification.status == 'pending' %}bg-warning{% else %}bg-secondary{% endif %} text-white">
|
|
<div class="d-flex justify-content-between align-items-center">
|
|
<h6 class="card-title mb-0">
|
|
<i class="fas {% if verification.status == 'verified' %}fa-check-circle{% elif verification.status == 'expired' %}fa-times-circle{% elif verification.status == 'suspended' %}fa-ban{% elif verification.status == 'pending' %}fa-clock{% else %}fa-question-circle{% endif %} me-2"></i>
|
|
Provider Verification Results
|
|
</h6>
|
|
<div class="d-flex align-items-center">
|
|
<span class="badge {% if verification.status == 'verified' %}bg-light text-success{% elif verification.status == 'expired' or verification.status == 'suspended' %}bg-light text-danger{% elif verification.status == 'pending' %}bg-light text-warning{% else %}bg-light text-secondary{% endif %} me-2">
|
|
{{ verification.status|title }}
|
|
</span>
|
|
<small>{{ verification.response_time }}</small>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="card-body">
|
|
<div class="row">
|
|
<div class="col-md-6">
|
|
<table class="table table-sm table-borderless">
|
|
<tr>
|
|
<td class="fw-bold">Provider:</td>
|
|
<td>{{ verification.provider }}</td>
|
|
</tr>
|
|
<tr>
|
|
<td class="fw-bold">Policy Number:</td>
|
|
<td><code>{{ verification.policy_number }}</code></td>
|
|
</tr>
|
|
<tr>
|
|
<td class="fw-bold">Verification ID:</td>
|
|
<td><code>{{ verification.verification_id }}</code></td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
<div class="col-md-6">
|
|
<table class="table table-sm table-borderless">
|
|
<tr>
|
|
<td class="fw-bold">Verification Date:</td>
|
|
<td>{{ verification.verification_date }}</td>
|
|
</tr>
|
|
<tr>
|
|
<td class="fw-bold">Response Time:</td>
|
|
<td>{{ verification.response_time }}</td>
|
|
</tr>
|
|
<tr>
|
|
<td class="fw-bold">Status:</td>
|
|
<td>
|
|
<span class="badge {% if verification.status == 'verified' %}bg-success{% elif verification.status == 'expired' or verification.status == 'suspended' %}bg-danger{% elif verification.status == 'pending' %}bg-warning{% else %}bg-secondary{% endif %}">
|
|
{{ verification.status|title }}
|
|
</span>
|
|
</td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
{% if verification.status == 'verified' %}
|
|
<!-- Verified Policy Details -->
|
|
<div class="row mb-4">
|
|
<div class="col-md-6">
|
|
<div class="card border-0 shadow-sm">
|
|
<div class="card-header bg-primary text-white">
|
|
<h6 class="card-title mb-0">
|
|
<i class="fas fa-user me-2"></i>Policy Holder Information
|
|
</h6>
|
|
</div>
|
|
<div class="card-body">
|
|
<table class="table table-sm table-borderless">
|
|
<tr>
|
|
<td class="fw-bold">Name:</td>
|
|
<td>{{ verification.policy_holder.name }}</td>
|
|
</tr>
|
|
<tr>
|
|
<td class="fw-bold">Date of Birth:</td>
|
|
<td>{{ verification.policy_holder.dob }}</td>
|
|
</tr>
|
|
<tr>
|
|
<td class="fw-bold">Member ID:</td>
|
|
<td><code>{{ verification.policy_holder.member_id }}</code></td>
|
|
</tr>
|
|
<tr>
|
|
<td class="fw-bold">Relationship:</td>
|
|
<td>{{ verification.policy_holder.relationship|title }}</td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="col-md-6">
|
|
<div class="card border-0 shadow-sm">
|
|
<div class="card-header bg-info text-white">
|
|
<h6 class="card-title mb-0">
|
|
<i class="fas fa-shield-alt me-2"></i>Coverage Details
|
|
</h6>
|
|
</div>
|
|
<div class="card-body">
|
|
<table class="table table-sm table-borderless">
|
|
<tr>
|
|
<td class="fw-bold">Plan Name:</td>
|
|
<td>{{ verification.coverage_details.plan_name }}</td>
|
|
</tr>
|
|
<tr>
|
|
<td class="fw-bold">Plan Type:</td>
|
|
<td><span class="badge bg-secondary">{{ verification.coverage_details.plan_type }}</span></td>
|
|
</tr>
|
|
<tr>
|
|
<td class="fw-bold">Effective Date:</td>
|
|
<td>{{ verification.coverage_details.effective_date }}</td>
|
|
</tr>
|
|
<tr>
|
|
<td class="fw-bold">Expiration Date:</td>
|
|
<td>{{ verification.coverage_details.expiration_date }}</td>
|
|
</tr>
|
|
<tr>
|
|
<td class="fw-bold">Group Number:</td>
|
|
<td><code>{{ verification.coverage_details.group_number }}</code></td>
|
|
</tr>
|
|
<tr>
|
|
<td class="fw-bold">Network:</td>
|
|
<td>{{ verification.coverage_details.network }}</td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Benefits Information -->
|
|
<div class="row mb-4">
|
|
<div class="col-md-6">
|
|
<div class="card border-0 shadow-sm">
|
|
<div class="card-header bg-success text-white">
|
|
<h6 class="card-title mb-0">
|
|
<i class="fas fa-dollar-sign me-2"></i>Financial Benefits
|
|
</h6>
|
|
</div>
|
|
<div class="card-body">
|
|
<table class="table table-sm table-borderless">
|
|
<tr>
|
|
<td class="fw-bold">Deductible:</td>
|
|
<td>${{ verification.benefits.deductible|floatformat:0 }}</td>
|
|
</tr>
|
|
<tr>
|
|
<td class="fw-bold">Out-of-Pocket Max:</td>
|
|
<td>${{ verification.benefits.out_of_pocket_max|floatformat:0 }}</td>
|
|
</tr>
|
|
<tr>
|
|
<td class="fw-bold">Primary Care Copay:</td>
|
|
<td>${{ verification.benefits.copay_primary }}</td>
|
|
</tr>
|
|
<tr>
|
|
<td class="fw-bold">Specialist Copay:</td>
|
|
<td>${{ verification.benefits.copay_specialist }}</td>
|
|
</tr>
|
|
<tr>
|
|
<td class="fw-bold">Coinsurance:</td>
|
|
<td>{{ verification.benefits.coinsurance }}%</td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="col-md-6">
|
|
<div class="card border-0 shadow-sm">
|
|
<div class="card-header bg-warning text-dark">
|
|
<h6 class="card-title mb-0">
|
|
<i class="fas fa-clipboard-check me-2"></i>Authorization Requirements
|
|
</h6>
|
|
</div>
|
|
<div class="card-body">
|
|
<div class="row">
|
|
<div class="col-12 mb-2">
|
|
<div class="d-flex justify-content-between align-items-center">
|
|
<span>Prior Authorization Required:</span>
|
|
<span class="badge {% if verification.authorization.prior_auth_required %}bg-warning{% else %}bg-success{% endif %}">
|
|
{% if verification.authorization.prior_auth_required %}Yes{% else %}No{% endif %}
|
|
</span>
|
|
</div>
|
|
</div>
|
|
<div class="col-12 mb-2">
|
|
<div class="d-flex justify-content-between align-items-center">
|
|
<span>Referral Required:</span>
|
|
<span class="badge {% if verification.authorization.referral_required %}bg-warning{% else %}bg-success{% endif %}">
|
|
{% if verification.authorization.referral_required %}Yes{% else %}No{% endif %}
|
|
</span>
|
|
</div>
|
|
</div>
|
|
<div class="col-12 mb-2">
|
|
<div class="d-flex justify-content-between align-items-center">
|
|
<span>Pre-certification Required:</span>
|
|
<span class="badge {% if verification.authorization.pre_certification_required %}bg-warning{% else %}bg-success{% endif %}">
|
|
{% if verification.authorization.pre_certification_required %}Yes{% else %}No{% endif %}
|
|
</span>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<hr>
|
|
|
|
<h6 class="mb-2">Additional Coverage:</h6>
|
|
<div class="row">
|
|
<div class="col-4">
|
|
<small class="d-flex justify-content-between">
|
|
<span>Prescription:</span>
|
|
<i class="fas {% if verification.benefits.prescription_coverage %}fa-check text-success{% else %}fa-times text-danger{% endif %}"></i>
|
|
</small>
|
|
</div>
|
|
<div class="col-4">
|
|
<small class="d-flex justify-content-between">
|
|
<span>Dental:</span>
|
|
<i class="fas {% if verification.benefits.dental_coverage %}fa-check text-success{% else %}fa-times text-danger{% endif %}"></i>
|
|
</small>
|
|
</div>
|
|
<div class="col-4">
|
|
<small class="d-flex justify-content-between">
|
|
<span>Vision:</span>
|
|
<i class="fas {% if verification.benefits.vision_coverage %}fa-check text-success{% else %}fa-times text-danger{% endif %}"></i>
|
|
</small>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<!-- Contact Information -->
|
|
<div class="row mb-4">
|
|
<div class="col-12">
|
|
<div class="card border-0 shadow-sm">
|
|
<div class="card-header bg-secondary text-white">
|
|
<h6 class="card-title mb-0">
|
|
<i class="fas fa-phone me-2"></i>Provider Contact Information
|
|
</h6>
|
|
</div>
|
|
<div class="card-body">
|
|
<div class="row">
|
|
<div class="col-md-3">
|
|
<div class="text-center">
|
|
<i class="fas fa-phone-alt fa-2x text-primary mb-2"></i>
|
|
<h6>Customer Service</h6>
|
|
<p class="mb-0"><strong>{{ verification.contact_info.customer_service }}</strong></p>
|
|
</div>
|
|
</div>
|
|
<div class="col-md-3">
|
|
<div class="text-center">
|
|
<i class="fas fa-user-md fa-2x text-success mb-2"></i>
|
|
<h6>Provider Services</h6>
|
|
<p class="mb-0"><strong>{{ verification.contact_info.provider_services }}</strong></p>
|
|
</div>
|
|
</div>
|
|
<div class="col-md-3">
|
|
<div class="text-center">
|
|
<i class="fas fa-globe fa-2x text-info mb-2"></i>
|
|
<h6>Website</h6>
|
|
<p class="mb-0"><a href="https://{{ verification.contact_info.website }}" target="_blank">{{ verification.contact_info.website }}</a></p>
|
|
</div>
|
|
</div>
|
|
<div class="col-md-3">
|
|
<div class="text-center">
|
|
<i class="fas fa-envelope fa-2x text-warning mb-2"></i>
|
|
<h6>Claims Address</h6>
|
|
<p class="mb-0"><small>{{ verification.contact_info.claims_address }}</small></p>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
{% elif verification.status == 'not_found' %}
|
|
<!-- Policy Not Found -->
|
|
<div class="row mb-4">
|
|
<div class="col-12">
|
|
<div class="alert alert-danger d-flex align-items-center">
|
|
<div class="me-3">
|
|
<i class="fas fa-exclamation-triangle fa-2x"></i>
|
|
</div>
|
|
<div class="flex-grow-1">
|
|
<h6 class="alert-heading mb-1">Policy Not Found</h6>
|
|
<p class="mb-2">{{ verification.error_details.message }}</p>
|
|
<hr>
|
|
<h6>Suggestions:</h6>
|
|
<ul class="mb-0">
|
|
{% for suggestion in verification.error_details.suggestions %}
|
|
<li>{{ suggestion }}</li>
|
|
{% endfor %}
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
{% elif verification.status == 'expired' %}
|
|
<!-- Expired Policy -->
|
|
<div class="row mb-4">
|
|
<div class="col-md-6">
|
|
<div class="card border-0 shadow-sm">
|
|
<div class="card-header bg-danger text-white">
|
|
<h6 class="card-title mb-0">
|
|
<i class="fas fa-calendar-times me-2"></i>Policy Expired
|
|
</h6>
|
|
</div>
|
|
<div class="card-body">
|
|
<table class="table table-sm table-borderless">
|
|
<tr>
|
|
<td class="fw-bold">Policy Holder:</td>
|
|
<td>{{ verification.policy_holder.name }}</td>
|
|
</tr>
|
|
<tr>
|
|
<td class="fw-bold">Member ID:</td>
|
|
<td><code>{{ verification.policy_holder.member_id }}</code></td>
|
|
</tr>
|
|
<tr>
|
|
<td class="fw-bold">Expired Date:</td>
|
|
<td>{{ verification.expiration_details.expired_date }}</td>
|
|
</tr>
|
|
<tr>
|
|
<td class="fw-bold">Days Expired:</td>
|
|
<td><span class="badge bg-danger">{{ verification.expiration_details.days_expired }} days</span></td>
|
|
</tr>
|
|
</table>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="col-md-6">
|
|
<div class="card border-0 shadow-sm">
|
|
<div class="card-header bg-info text-white">
|
|
<h6 class="card-title mb-0">
|
|
<i class="fas fa-redo me-2"></i>Renewal Options
|
|
</h6>
|
|
</div>
|
|
<div class="card-body">
|
|
<ul class="list-unstyled mb-0">
|
|
{% for option in verification.expiration_details.renewal_options %}
|
|
<li class="mb-2">
|
|
<i class="fas fa-arrow-right text-primary me-2"></i>{{ option }}
|
|
</li>
|
|
{% endfor %}
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
{% elif verification.status == 'suspended' %}
|
|
<!-- Suspended Policy -->
|
|
<div class="row mb-4">
|
|
<div class="col-12">
|
|
<div class="alert alert-warning d-flex align-items-center">
|
|
<div class="me-3">
|
|
<i class="fas fa-ban fa-2x"></i>
|
|
</div>
|
|
<div class="flex-grow-1">
|
|
<h6 class="alert-heading mb-1">Policy Suspended</h6>
|
|
<div class="row">
|
|
<div class="col-md-6">
|
|
<p><strong>Reason:</strong> {{ verification.suspension_details.reason }}</p>
|
|
<p><strong>Suspended Date:</strong> {{ verification.suspension_details.suspended_date }}</p>
|
|
</div>
|
|
<div class="col-md-6">
|
|
<p><strong>Reinstatement Required:</strong>
|
|
{% if verification.suspension_details.reinstatement_required %}
|
|
<span class="badge bg-warning">Yes</span>
|
|
{% else %}
|
|
<span class="badge bg-success">No</span>
|
|
{% endif %}
|
|
</p>
|
|
<p><strong>Contact Provider:</strong>
|
|
{% if verification.suspension_details.contact_required %}
|
|
<span class="badge bg-danger">Required</span>
|
|
{% else %}
|
|
<span class="badge bg-success">Not Required</span>
|
|
{% endif %}
|
|
</p>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
{% elif verification.status == 'pending' %}
|
|
<!-- Pending Verification -->
|
|
<div class="row mb-4">
|
|
<div class="col-12">
|
|
<div class="alert alert-info d-flex align-items-center">
|
|
<div class="me-3">
|
|
<i class="fas fa-clock fa-2x"></i>
|
|
</div>
|
|
<div class="flex-grow-1">
|
|
<h6 class="alert-heading mb-1">Verification Pending</h6>
|
|
<p><strong>Reason:</strong> {{ verification.pending_details.reason }}</p>
|
|
<p><strong>Expected Resolution:</strong> {{ verification.pending_details.expected_resolution }}</p>
|
|
<p class="mb-0"><strong>Reference Number:</strong> <code>{{ verification.pending_details.reference_number }}</code></p>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
{% endif %}
|
|
|
|
<!-- Action Buttons -->
|
|
<div class="row">
|
|
<div class="col-12">
|
|
<div class="d-flex justify-content-between align-items-center">
|
|
<div>
|
|
<button type="button" class="btn btn-outline-primary btn-sm" onclick="printVerification()">
|
|
<i class="fas fa-print me-1"></i>Print Results
|
|
</button>
|
|
<button type="button" class="btn btn-outline-secondary btn-sm" onclick="saveVerification()">
|
|
<i class="fas fa-save me-1"></i>Save to File
|
|
</button>
|
|
</div>
|
|
<div>
|
|
{% if verification.status == 'verified' %}
|
|
<button type="button" class="btn btn-success btn-sm" onclick="useVerifiedData()">
|
|
<i class="fas fa-check me-1"></i>Use Verified Data
|
|
</button>
|
|
{% endif %}
|
|
<button type="button" class="btn btn-primary btn-sm" onclick="verifyAgain()">
|
|
<i class="fas fa-redo me-1"></i>Verify Again
|
|
</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<style>
|
|
.provider-verification-results .card {
|
|
transition: all 0.3s ease;
|
|
}
|
|
|
|
.provider-verification-results .card:hover {
|
|
transform: translateY(-2px);
|
|
box-shadow: 0 4px 8px rgba(0,0,0,0.15) !important;
|
|
}
|
|
|
|
.provider-verification-results .table td {
|
|
padding: 0.5rem 0.75rem;
|
|
border: none;
|
|
}
|
|
|
|
.provider-verification-results .table .fw-bold {
|
|
width: 40%;
|
|
color: #495057;
|
|
}
|
|
|
|
@media (max-width: 768px) {
|
|
.provider-verification-results .card-body {
|
|
padding: 1rem;
|
|
}
|
|
|
|
.provider-verification-results .table {
|
|
font-size: 0.875rem;
|
|
}
|
|
}
|
|
|
|
@media print {
|
|
.provider-verification-results .btn {
|
|
display: none !important;
|
|
}
|
|
|
|
.provider-verification-results .card {
|
|
border: 1px solid #000 !important;
|
|
box-shadow: none !important;
|
|
}
|
|
|
|
.provider-verification-results .card-header {
|
|
background-color: #f8f9fa !important;
|
|
color: #000 !important;
|
|
border-bottom: 1px solid #000 !important;
|
|
}
|
|
}
|
|
</style>
|
|
|
|
<script>
|
|
function printVerification() {
|
|
window.print();
|
|
}
|
|
|
|
function saveVerification() {
|
|
// Create a downloadable file with verification results
|
|
const verificationData = {
|
|
verification_id: '{{ verification.verification_id }}',
|
|
provider: '{{ verification.provider }}',
|
|
policy_number: '{{ verification.policy_number }}',
|
|
status: '{{ verification.status }}',
|
|
verification_date: '{{ verification.verification_date }}',
|
|
{% if verification.status == 'verified' %}
|
|
policy_holder: {
|
|
name: '{{ verification.policy_holder.name }}',
|
|
member_id: '{{ verification.policy_holder.member_id }}',
|
|
dob: '{{ verification.policy_holder.dob }}'
|
|
},
|
|
coverage_details: {
|
|
plan_name: '{{ verification.coverage_details.plan_name }}',
|
|
effective_date: '{{ verification.coverage_details.effective_date }}',
|
|
expiration_date: '{{ verification.coverage_details.expiration_date }}'
|
|
}
|
|
{% endif %}
|
|
};
|
|
|
|
const dataStr = JSON.stringify(verificationData, null, 2);
|
|
const dataBlob = new Blob([dataStr], {type: 'application/json'});
|
|
|
|
const link = document.createElement('a');
|
|
link.href = URL.createObjectURL(dataBlob);
|
|
link.download = `verification_${verificationData.verification_id}.json`;
|
|
link.click();
|
|
|
|
toastr.success('Verification results saved');
|
|
}
|
|
|
|
{% if verification.status == 'verified' %}
|
|
function useVerifiedData() {
|
|
// Populate form fields with verified data
|
|
$('#{{ form.insurance_provider.id_for_label }}').val('{{ verification.provider }}');
|
|
$('#{{ form.policy_number.id_for_label }}').val('{{ verification.policy_number }}');
|
|
$('#{{ form.member_id.id_for_label }}').val('{{ verification.policy_holder.member_id }}');
|
|
$('#{{ form.group_number.id_for_label }}').val('{{ verification.coverage_details.group_number }}');
|
|
$('#{{ form.effective_date.id_for_label }}').val('{{ verification.coverage_details.effective_date }}');
|
|
$('#{{ form.expiration_date.id_for_label }}').val('{{ verification.coverage_details.expiration_date }}');
|
|
$('#{{ form.copay.id_for_label }}').val('{{ verification.benefits.copay_primary }}');
|
|
$('#{{ form.deductible.id_for_label }}').val('{{ verification.benefits.deductible }}');
|
|
|
|
toastr.success('Form populated with verified data');
|
|
$('#verificationModal').modal('hide');
|
|
}
|
|
{% endif %}
|
|
|
|
function verifyAgain() {
|
|
verifyWithProvider();
|
|
}
|
|
</script>
|
|
|