Skip to main content

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:

StatusMeaning
InitiatedUpload slot granted, awaiting file
UploadedFile confirmed in blob storage, processing queued
ProcessingRecord Processor is working through the records
CompletedAll records successfully written to RxClaim
Partial FailedSome records failed, others succeeded
ErrorFatal 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​

DetailValue
ServiceRxDose-FileManager-MS
Port8091
LanguageJava 21, Spring Boot 4.0.7, Spring WebFlux
API docshttp://localhost:8091/rxdose-filemanager/docs/rxdose/ui
StorageAzure Blob Storage (MSI auth for internal; SAS URL for client)
MessagingAzure Event Hub (MSI auth)
DatabaseMongoDB Atlas — upstream_job collection