DICOM-native two-sided marketplace built on .NET Core Clean Architecture with event-driven service communication.
Connecting radiologists and patients around DICOM medical imaging workflows required a scalable, auditable two-sided marketplace.
Designed a .NET Core platform on Clean Architecture with event-driven service communication, supporting DICOM workflows, role-based access and audit trails.
$ render architecture.mmd
flowchart TB
P[Patient App] --> API[API Gateway]
R[Radiologist Portal] --> API
API --> Cases[Case Service<br/>.NET Core]
API --> Match[Matchmaking Service]
API --> Pay[Payment Service]
Cases -- domain events --> Bus{{Event Bus}}
Bus --> Audit[Audit Log]
Bus --> Notify[Notification Service]
Cases --> Store[(DICOM Object Store)]
Cases --> PG[(PostgreSQL)]
classDef bus fill:#581c87,stroke:#a855f7,color:#fff
class Bus bus
$ git log --oneline decisions/
Case state transitions emit events; audit, notifications and payments react independently. No service tightly coupled to another's availability.
Use cases own the workflow; DICOM I/O, persistence and HTTP live in adapter projects. Swapping the storage backend never touched domain code.
Every state change persists who/what/when as an append-only event — required for medical compliance and trivial to query.
Have a similar challenge?
Let's talk