-
Notifications
You must be signed in to change notification settings - Fork 159
Feature 13631 epipulse export module #13646
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
|
Caution Review failedThe pull request is closed. WalkthroughThis pull request introduces a comprehensive Epipulse export module enabling SORMAS to export disease surveillance data (specifically Pertussis) to the European Centre for Disease Prevention and Control's EpiPulse platform. It includes API contracts, backend services with scheduling, database schema, and a complete UI layer for managing exports with filtering, creation, cancellation, and download capabilities across disease-specific reporting periods. Changes
Sequence Diagram(s)sequenceDiagram
participant User as User (UI)
participant Controller as EpiPulseExportController
participant Facade as EpipulseExportFacadeEjb
participant Timer as EpipulseExportTimerEjb
participant DiseaseExport as EpipulseDiseaseExportFacadeEjb
participant Service as EpipulseDiseaseExportService
participant DB as Database
User->>Controller: create(callback)
Controller->>Facade: saveEpipulseExport(dto)
Facade->>DB: persist EpipulseExport (PENDING)
Facade-->>Controller: ✓ saved
Controller->>Timer: scheduleExportDisease(uuid, PERT)
Timer->>Timer: schedule delayed timer (60s)
Note over Timer: After delay...
Timer->>DiseaseExport: exportPertussisCaseBased(uuid)
DiseaseExport->>Service: exportPertussisCaseBased(exportDto)
Service->>DB: fetch case data via SQL
Service->>Service: transform to CSV entries
Service->>Service: write CSV file
Service-->>DiseaseExport: EpipulseDiseaseExportResult
DiseaseExport->>Facade: updateStatusForBackgroundProcess(IN_PROGRESS→COMPLETED)
Facade->>DB: update status, file metadata
User->>Controller: view(exportIndexDto)
Controller->>Facade: getEpiPulseExportByUuid(uuid)
Facade-->>Controller: EpipulseExportDto
Note over Controller: Show detail with status
alt Status is COMPLETED
User->>Controller: download(exportIndexDto)
Controller->>Controller: validate file
Controller-->>User: StreamResource (CSV)
else Status is PENDING/IN_PROGRESS
User->>Controller: cancel action
Controller->>Facade: cancelEpipulseExport(uuid)
Facade->>DB: update status to CANCELLED
end
Estimated code review effort🎯 4 (Complex) | ⏱️ ~60 minutes Areas requiring particular attention:
Possibly related issues
Suggested reviewers
Poem
✨ Finishing touches
🧪 Generate unit tests (beta)
📜 Recent review detailsConfiguration used: CodeRabbit UI Review profile: CHILL Plan: Pro 📒 Files selected for processing (84)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Fixes #13631
Summary by CodeRabbit