Standard Operating Procedure: Claim Submission¶
Purpose¶
This SOP defines the standardized process for submitting healthcare claims through NPHIES using BrainSAIT automation.
Scope¶
Applies to all claim submissions for: - Inpatient services - Outpatient services - Emergency services - Pharmacy claims - Dental services
Roles and Responsibilities¶
| Role | Responsibility |
|---|---|
| Clinical Staff | Complete accurate clinical documentation |
| Medical Coder | Assign appropriate ICD-10-AM and ACHI codes |
| Billing Specialist | Review and submit claims |
| RCM Manager | Monitor submission metrics and resolve issues |
| IT Support | Maintain system integrations |
Prerequisites¶
- Patient registered in system
- Insurance eligibility verified
- Clinical documentation complete
- Prior authorization obtained (if required)
- BrainSAIT agents configured
Step-by-Step Process¶
Step 1: Validate Encounter Completeness¶
Action: Ensure all required clinical documentation is present
Using DocsLinc:
# Validate documentation completeness
completeness_check = await DocsLinc.validate_documentation(
encounter_id=encounter.id,
payer_id=patient.insurance.payer_id
)
if not completeness_check.is_complete:
# Alert clinical staff
notify_clinical_staff(
missing_items=completeness_check.missing_items
)
return
Required Elements: - Chief complaint - History of present illness - Physical examination findings - Diagnosis - Treatment plan - Procedures performed - Medications prescribed - Discharge/follow-up instructions
Quality Check: Documentation must support medical necessity
Step 2: Generate FHIR Bundle¶
Action: Convert encounter data to FHIR R4 format
# Generate FHIR claim bundle
claim_bundle = await generate_fhir_bundle(
encounter=encounter,
patient=patient,
insurance=insurance_info,
procedures=procedures,
diagnoses=diagnoses
)
Bundle Components: - Claim resource - Patient resource - Coverage resource - Encounter resource - Procedure resources - Diagnosis resources - Supporting documentation
Step 3: Run ClaimLinc Validation¶
Action: Pre-validate claim before submission
# Validate with ClaimLinc
validation_result = await ClaimLinc.validate_claim(
claim=claim_bundle,
payer_id=insurance_info.payer_id
)
if not validation_result.is_valid:
# Review and fix errors
for error in validation_result.errors:
log_validation_error(
claim_id=claim_bundle.id,
error=error,
severity=error.severity
)
# Generate correction report
correction_report = ClaimLinc.generate_correction_guide(
validation_result=validation_result
)
# Notify billing specialist
send_notification(
to=billing_specialist,
subject="Claim Validation Failed",
body=correction_report
)
return
Validation Layers: 1. FHIR schema compliance 2. NPHIES profile requirements 3. Payer-specific rules 4. Clinical coding accuracy 5. Financial calculations
Step 4: Submit to NPHIES¶
Action: Submit validated claim through NPHIES gateway
# Submit claim
submission_result = await nphies_client.submit_claim(
claim_bundle=claim_bundle,
provider_id=provider.nphies_id,
payer_id=insurance_info.payer_id
)
# Log submission
audit_logger.log_submission(
claim_id=claim_bundle.id,
submission_id=submission_result.submission_id,
timestamp=datetime.now(),
user=current_user,
status="submitted"
)
Submission Confirmation: - Submission ID received - Timestamp recorded - Initial validation passed - Claim status: "Pending Adjudication"
Step 5: Track Payer Response¶
Action: Monitor claim status and handle responses
# Poll for claim status
async def monitor_claim_status(claim_id: str):
while True:
status = await nphies_client.get_claim_status(claim_id)
if status.state == "adjudicated":
# Process EOB
eob = await nphies_client.get_eob(claim_id)
process_eob(eob)
break
elif status.state == "rejected":
# Trigger rejection workflow
await handle_rejection(claim_id, status.rejection_reason)
break
# Wait before next poll
await asyncio.sleep(300) # 5 minutes
Status Types: - Submitted - Under Review - Pended (additional info requested) - Adjudicated (approved) - Rejected - Partially Approved
Step 6: Handle Rejections¶
Action: Analyze and resubmit rejected claims
# Analyze rejection with ClaimLinc
rejection_analysis = await ClaimLinc.analyze_rejection(
claim_id=claim_id,
rejection_reason=rejection_reason,
rejection_code=rejection_code
)
# Generate resubmission package
resubmission_package = await ClaimLinc.generate_resubmission(
original_claim=original_claim,
rejection_analysis=rejection_analysis,
additional_documentation=additional_docs
)
# Resubmit
resubmission_result = await nphies_client.resubmit_claim(
resubmission_package=resubmission_package
)
Rejection Categories: - Administrative errors - Clinical documentation issues - Coding errors - Eligibility problems - Policy violations - Technical errors
Step 7: Generate Performance Report¶
Action: Weekly submission performance analysis
# Generate weekly report
report = await generate_submission_report(
start_date=week_start,
end_date=week_end,
metrics=[
"total_submissions",
"acceptance_rate",
"rejection_rate",
"avg_processing_time",
"revenue_impact"
]
)
# Distribute to stakeholders
send_report(
recipients=[rcm_manager, billing_team_lead],
report=report
)
Key Metrics: - Total claims submitted - First-pass acceptance rate - Rejection rate by category - Average time to adjudication - Revenue collected vs. submitted - Top rejection reasons
Exceptions¶
Emergency Claims¶
- Expedited submission within 24 hours
- Retroactive authorization allowed
- Clinical justification required
High-Value Claims (>100,000 SAR)¶
- Additional management review
- Enhanced documentation requirements
- Direct payer communication
Disputed Claims¶
- Escalate to RCM Manager
- Prepare appeal documentation
- Consider external review
Key Performance Indicators¶
| KPI | Target | Measurement Frequency |
|---|---|---|
| Clean claim rate | >95% | Daily |
| First-pass acceptance | >90% | Weekly |
| Average submission time | <2 hours | Daily |
| Rejection rate | <5% | Weekly |
| Resubmission success rate | >85% | Weekly |
Training Requirements¶
- NPHIES platform overview
- FHIR R4 fundamentals
- BrainSAIT agent usage
- Medical coding basics
- Payer policy awareness
Revision History¶
| Version | Date | Changes | Author |
|---|---|---|---|
| 1.0.0 | 2025-01-15 | Initial release | BrainSAIT Team |