How demainman/sin-000-healthsafe works
HealthSafe is a set of independently runnable services for cleaning ward exports, serving ward and emergency-status data, calculating on-call schedules, and delivering persistent equipment alerts. Its main workflow runs from CSV ingestion through ward lookup and emergency-level retrieval to schedule calculation, storage, and event broadcast; separate event and queue branches carry staffing updates and equipment failures. The README documents the full service contracts, while source excerpts verify only selected calls and wiring, so undocumented links are omitted.
Main entry points: StaffingService.java Schedule workflow · WardServiceApp.java Ward API · IngestionStore.java CSV ingestion · IngestionServiceApp.java Ingestion API
Components 25
Ward ingestion
- Ingestion API
ingestion-service/src/main/java/co/wethinkcode/healthsafe/IngestionServiceApp.java - CSV ingestion
ingestion-service/src/main/java/co/wethinkcode/healthsafe/IngestionStore.java - CSV cleaner
ingestion-service/src/main/java/co/wethinkcode/healthsafe/WardCsvCleaner.java - Ingestion report
ingestion-service/src/main/java/co/wethinkcode/healthsafe/IngestionReport.java
Ward service
- Ward API
ward-service/src/main/java/co/wethinkcode/healthsafe/WardServiceApp.java - Ingestion client
ward-service/src/main/java/co/wethinkcode/healthsafe/IngestionClient.java - Ward store
ward-service/src/main/java/co/wethinkcode/healthsafe/WardStore.java - Update store
ward-service/src/main/java/co/wethinkcode/healthsafe/StaffingUpdateStore.java - Event subscriber
ward-service/src/main/java/co/wethinkcode/healthsafe/StaffingEventSubscriber.java - Failure publisher
ward-service/src/main/java/co/wethinkcode/healthsafe/EquipmentFailurePublisher.java
Staffing service
- Staffing API
staffing-service/src/main/java/co/wethinkcode/healthsafe/StaffingServiceApp.java - Schedule workflow
staffing-service/src/main/java/co/wethinkcode/healthsafe/StaffingService.java - Ward client
staffing-service/src/main/java/co/wethinkcode/healthsafe/WardClient.java - Status client
staffing-service/src/main/java/co/wethinkcode/healthsafe/AlertLevelClient.java - Schedule calculator
staffing-service/src/main/java/co/wethinkcode/healthsafe/ScheduleCalculator.java - Schedule store
staffing-service/src/main/java/co/wethinkcode/healthsafe/ScheduleStore.java - Event publisher
staffing-service/src/main/java/co/wethinkcode/healthsafe/StaffingEventPublisher.java
Emergency status
- Emergency API
alert-level-service/src/main/java/co/wethinkcode/healthsafe/AlertLevelServiceApp.java - Status store
alert-level-service/src/main/java/co/wethinkcode/healthsafe/AlertLevelStore.java
Equipment alerts
- Alert consumer
equipment-alert-service/src/main/java/co/wethinkcode/healthsafe/EquipmentAlertConsumer.java - Alert store
equipment-alert-service/src/main/java/co/wethinkcode/healthsafe/EquipmentAlertStore.java - Alert API
equipment-alert-service/src/main/java/co/wethinkcode/healthsafe/EquipmentAlertServiceApp.java
Other components
- HTTP clients
- Staffing topic
- Failure queue
Connections 28
- HTTP clients → Ingestion API: requests data
README.md - Ingestion API → CSV ingestion: serves report
ingestion-service/src/main/java/co/wethinkcode/healthsafe/IngestionServiceApp.java - CSV ingestion → CSV cleaner: cleans rows
ingestion-service/src/main/java/co/wethinkcode/healthsafe/IngestionStore.java - CSV ingestion → Ingestion report: builds report
ingestion-service/src/main/java/co/wethinkcode/healthsafe/IngestionStore.java - HTTP clients → Ward API: requests wards
README.md - Ward API → Ingestion client: refreshes from
ward-service/src/main/java/co/wethinkcode/healthsafe/WardServiceApp.java - Ingestion client → Ingestion API: fetches wards
ward-service/src/main/java/co/wethinkcode/healthsafe/IngestionClient.java - Ward API → Ward store: loads and serves
ward-service/src/main/java/co/wethinkcode/healthsafe/WardServiceApp.java - HTTP clients → Staffing API: requests schedule
README.md - Staffing API → Schedule workflow: dispatches request
staffing-service/src/main/java/co/wethinkcode/healthsafe/StaffingServiceApp.java - Schedule workflow → Ward client: fetches ward
staffing-service/src/main/java/co/wethinkcode/healthsafe/StaffingService.java - Ward client → Ward API: gets ward
README.md - Schedule workflow → Status client: fetches status
staffing-service/src/main/java/co/wethinkcode/healthsafe/StaffingService.java - Status client → Emergency API: gets status
README.md - HTTP clients → Emergency API: sets status
README.md - Schedule workflow → Schedule calculator: calculates schedule
staffing-service/src/main/java/co/wethinkcode/healthsafe/StaffingService.java - Schedule workflow → Schedule store: saves schedule
staffing-service/src/main/java/co/wethinkcode/healthsafe/StaffingService.java - Schedule workflow → Event publisher: publishes schedule
staffing-service/src/main/java/co/wethinkcode/healthsafe/StaffingService.java - Event publisher → Staffing topic: broadcasts event
README.md - Staffing topic → Event subscriber: delivers event
README.md - Event subscriber → Update store: stores latest
ward-service/src/main/java/co/wethinkcode/healthsafe/StaffingEventSubscriber.java - HTTP clients → Ward API: reports failure
README.md - Ward API → Failure publisher: publishes failure
ward-service/src/main/java/co/wethinkcode/healthsafe/WardServiceApp.java - Failure publisher → Failure queue: sends alert
README.md - Failure queue → Alert consumer: delivers alert
README.md - Alert consumer → Alert store: stores and acknowledges
equipment-alert-service/src/main/java/co/wethinkcode/healthsafe/EquipmentAlertConsumer.java - HTTP clients → Alert API: retrieves alerts
README.md - Alert API → Alert store: reads alerts
equipment-alert-service/src/main/java/co/wethinkcode/healthsafe/EquipmentAlertServiceApp.java