File Ingestion
What it does
The File Manager is the entry point for all upstream drug list submissions. It accepts a file from the upstream client, stores it securely in Azure Blob Storage, and hands off to the processing pipeline — without ever holding the file in memory itself.
Key features:
- Accepts files up to any size without becoming a bottleneck — the client uploads directly to blob storage using a short-lived link
- Validates that the upload actually completed before triggering processing
- Prevents duplicate processing — a file already accepted cannot be re-submitted
- Gives the upstream client a traceable upload ID for status tracking
How it works
File submission is a two-step handshake:
Why two steps? The client uploads directly to blob storage rather than through File Manager. This means File Manager never becomes a bottleneck for large files, and the file never passes through the application layer.
The 30-minute window is the time a client has to complete the upload after requesting a slot. If the window expires, the upload link becomes invalid and the client must start over.
What each submission creates
Each accepted file submission creates an upload job tracked through its lifecycle:
| Status | Meaning |
|---|---|
| Initiated | Upload slot granted, awaiting file |
| Uploaded | File confirmed in blob storage, processing queued |
| Processing | Record Processor is working through the records |
| Completed | All records successfully written to RxClaim |
| Partial Failed | Some records failed, others succeeded |
| Error | Fatal pipeline failure |
What the client sends
Step 1 — Request upload slot:
{ "clientId": "CLIC", "fileName": "gpi-updates-2026-09.json", "category": "GPI" }
Step 3 — Confirm upload:
{ "uploadId": "abc-123", "blobPath": "/uploads/clic/abc-123/gpi-updates.json" }
Technical reference
| Detail | Value |
|---|---|
| Service | RxDose-FileManager-MS |
| Port | 8091 |
| Language | Java 21, Spring Boot 4.0.7, Spring WebFlux |
| API docs | http://localhost:8091/rxdose-filemanager/docs/rxdose/ui |
| Storage | Azure Blob Storage (MSI auth for internal; SAS URL for client) |
| Messaging | Azure Event Hub (MSI auth) |
| Database | MongoDB Atlas — upstream_job collection |