Skip to main content
OpenEyes provides comprehensive reporting and analytics capabilities for clinical audit, performance monitoring, and research data extraction.

Reporting Overview

Clinical Reports

Patient outcomes, diagnoses, and treatment data

Service Analytics

Clinic performance and capacity metrics

Custom Reports

Build custom report templates

Data Export

CSV, PDF, and Excel export formats

Dashboards

Real-time clinical dashboards

Audit Reports

Clinical audit and compliance reporting

Report Controller

The main reporting interface is provided by ReportController.php:
// Access reports
/report/{reportType}

Available Reports

  • Diagnosis reports
  • Procedure reports
  • Waiting list reports
  • Cataract audit
  • Visual acuity outcomes
  • IOP control
  • Injection intervals
  • Custom report templates

Clinical Dashboards

Surgeon Dashboard

Access your personal clinical dashboard at /dashboard: Features:
  • Today’s clinic schedule
  • Patient worklists
  • Pending tasks
  • Recent outcomes
  • Performance metrics
Implementation:
// protected/controllers/DashboardController.php
class DashboardController extends BaseController
{
    public function actionIndex()
    {
        // Load surgeon-specific data
        $user = Yii::app()->user;
        $appointments = $this->getTodayAppointments($user->id);
        $worklists = $this->getActiveWorklists($user->id);
        
        $this->render('index', compact('appointments', 'worklists'));
    }
}

OEscape Dashboard

Subspecialty-specific visualization at /dashboard/oescape:
  • IOP trends
  • Visual field progression
  • Target IOP monitoring
  • Treatment efficacy

Dashboard Customization

Customize dashboard widgets via system settings:
// Enable/disable dashboard widgets
'dashboard_widgets' => [
    'appointments' => true,
    'worklists' => true,
    'metrics' => true,
    'recent_patients' => true
]

Analytics Controller

Advanced analytics at /analytics:

Visual Acuity Analytics

Track visual acuity outcomes across patient cohorts:
// protected/controllers/AnalyticsController.php
public function actionVisualAcuity()
{
    $data = $this->getVAData([
        'start_date' => $startDate,
        'end_date' => $endDate,
        'subspecialty' => $subspecialty
    ]);
    
    // Returns structured data for visualization
    return $this->renderJSON($data);
}

Plotly Integration

OpenEyes uses Plotly.js for interactive data visualization:
// Example: Visual acuity trend chart
Plotly.newPlot('va-chart', [{
    x: dates,
    y: vaValues,
    type: 'scatter',
    mode: 'lines+markers',
    name: 'Right Eye'
}], {
    title: 'Visual Acuity Over Time',
    xaxis: { title: 'Date' },
    yaxis: { title: 'LogMAR' }
});

Service Analytics

Monitor clinic performance:
  • Appointment utilization
  • Wait times
  • DNA (Did Not Attend) rates
  • Throughput metrics
  • Capacity planning

Custom Report Templates

Creating Custom Reports

1

Define Report Parameters

Specify date ranges, subspecialty, and data points
2

Build Query

Use the report query builder to extract data
3

Configure Output

Select columns, grouping, and formatting
4

Save Template

Save for reuse and scheduling

Report Query Builder

Access at /report/custom:
// Example custom report query
SELECT 
    p.id,
    p.first_name,
    p.last_name,
    e.event_date,
    et.name as event_type,
    va.value as visual_acuity
FROM patient p
JOIN episode ep ON ep.patient_id = p.id
JOIN event e ON e.episode_id = ep.id
JOIN event_type et ON et.id = e.event_type_id
LEFT JOIN ophciexamination_visualacuity va ON va.event_id = e.id
WHERE e.event_date BETWEEN :start_date AND :end_date

Report Templates

Save report definitions as templates:
'report_templates' => [
    'cataract_outcomes' => [
        'name' => 'Cataract Surgical Outcomes',
        'query' => 'cataract_outcomes.sql',
        'parameters' => ['start_date', 'end_date', 'surgeon'],
        'output_format' => 'pdf'
    ]
]

Data Export

Export Formats

Comma-separated values for Excel and data analysis
// Export to CSV
$report->exportToCSV('filename.csv');

CXL Dataset Export

Clinical dataset exports via /CxlDataset: Controller: protected/controllers/CxlDatasetController.php Features:
  • Custom dataset definitions
  • Flexible column selection
  • Patient de-identification
  • Scheduled automated exports
  • Multiple file formats
  1. Navigate to /CxlDataset/admin
  2. Click “Create Dataset”
  3. Define dataset name and description
  4. Select tables and columns
  5. Configure filters and date ranges
  6. Set up anonymization rules
  7. Schedule or export immediately

National Ophthalmic Database (NOD)

Export data to NOD for national audit:

NOD Export Controller

protected/controllers/NodExportController.php manages NOD submissions:
1

Configure Export Scope

Select procedures and date range for NOD submission
2

Data Validation

System validates data completeness and quality
3

Anonymization

Apply appropriate anonymization level
4

Generate Export File

Create NOD-compliant XML or CSV file
5

Review and Submit

Review data summary and submit to NOD portal

NOD Data Elements

Required data elements for NOD export:
  • Patient demographics (anonymized)
  • Procedure codes (OPCS-4)
  • Diagnoses (ICD-10)
  • Pre-operative visual acuity
  • Post-operative visual acuity
  • Complications
  • IOL details (for cataract)
  • Surgeon identifier

Audit Reports

Clinical Audit

Access audit reports at /audit: AuditController (protected/controllers/AuditController.php) provides:
  • User activity logs
  • Clinical event audit trail
  • Data access logs
  • System changes
  • Integration activity
  • Security events
Filter audit logs by:
// Audit search parameters
[
    'user_id' => $userId,
    'action' => $action,  // create, update, delete, view
    'type' => $type,      // patient, event, user, etc.
    'date_from' => $dateFrom,
    'date_to' => $dateTo,
    'patient_id' => $patientId
]

Compliance Reporting

Generate compliance reports for:
  • Information governance audit
  • GDPR access requests
  • Clinical safety monitoring
  • System usage statistics

Scheduled Reports

Automated Report Generation

Configure scheduled reports in system settings:
'scheduled_reports' => [
    'monthly_outcomes' => [
        'enabled' => true,
        'schedule' => '0 0 1 * *',  // First day of month
        'report_template' => 'monthly_outcomes',
        'recipients' => ['[email protected]'],
        'format' => 'pdf'
    ]
]

Email Distribution

Reports can be automatically emailed:
// Send report via email
$report = new Report('monthly_outcomes');
$report->generate();
$report->emailTo(['[email protected]']);

Performance Metrics

Key Performance Indicators

Track clinical KPIs:

Access Metrics

  • 18-week RTT compliance
  • Average wait times
  • DNA rates
  • Clinic utilization

Clinical Outcomes

  • Visual acuity outcomes
  • Complication rates
  • Re-operation rates
  • Patient satisfaction

Operational Metrics

  • Theatre efficiency
  • Bed occupancy
  • Staff productivity
  • Resource utilization

Quality Metrics

  • Clinical guideline compliance
  • Documentation completeness
  • Audit participation
  • Safety incidents

Data Visualization

Chart Types

OpenEyes supports various visualization types:
Trends over time (VA progression, IOP control)

SVG Export

Export charts as SVG for publications:
// Export dashboard chart as SVG
$('#chart-container').exportToSVG('chart.svg');

Research Data Extraction

Research Database

Extract anonymized data for research:
1

Ethics Approval

Obtain appropriate ethics committee approval
2

Define Cohort

Specify inclusion/exclusion criteria
3

Select Data Points

Choose variables for extraction
4

Anonymize

Apply de-identification rules
5

Extract Data

Generate anonymized dataset

Data Dictionary

Access the OpenEyes data dictionary to understand:
  • Table structures
  • Field definitions
  • Relationships
  • Data types
  • Value sets

Best Practices

Report Performance
  • Index key report fields for faster queries
  • Use date range limits to constrain data volume
  • Cache frequently-run reports
  • Schedule large reports during off-peak hours
Data Privacy
  • Apply appropriate anonymization for exported data
  • Restrict report access based on roles
  • Audit all data exports
  • Comply with GDPR and local data protection laws
Report Design
  • Focus on actionable insights
  • Use clear visualizations
  • Provide context and benchmarks
  • Include methodology notes
  • Test reports with real users

See Also

Build docs developers (and LLMs) love