A microservice-based application that extracts drug indications from DailyMed drug labels, maps them to ICD-10 codes, and provides a queryable API.
This application extracts drug indications from DailyMed drug labels, maps them to standardized ICD-10 codes, and processes copay card information. It follows clean architecture principles with a clear separation of concerns between domain, application, infrastructure, and presentation layers.
- Extract drug indications from DailyMed drug labels
- Map indications to ICD-10 codes
- Parse and structure copay card information
- Provide a REST API for querying drug indications and copay programs
- Authentication and authorization for secure access
- Comprehensive test coverage
- .NET 8.0
- C# programming language
- Microsoft SQL Server for data storage
- Docker for containerization
- JWT for authentication
- OpenAI integration for parsing eligibility details
The project follows clean architecture principles:
API/- Presentation Layer: API controllers and endpointsApplication/- Application Layer: Use cases and business logicDomain/- Domain Layer: Core business entities and rulesInfrastructure/- Infrastructure Layer: External dependencies (database, APIs)Tests/- Test Layer:Unit tests and test utilities
- Docker and Docker Compose
- .NET 8.0 SDK (for development only)
- Clone the repository:
git clone https://github.com/GonzalezAtWork/DrugIndications.git
cd DrugIndications- Set up environment variables:
cp .env.example .env
# Edit .env with your configuration- Run with Docker Compose:
docker-compose up -d- Run locally:
dotnet restore
dotnet build
dotnet run --project API/DrugIndications.API.csprojOnce the application is running, you can access the Swagger documentation at:
- https://localhost:5001/swagger (when running locally)
- http://localhost:8080/swagger (when running with Docker)
Run the tests:
dotnet test- Microservice architecture allows for independent scaling of components
- Containerization enables easy deployment and scaling
- Database indexing for optimized queries
- Caching for frequently accessed data
- Rate limiting to prevent API abuse
- Asynchronous processing for long-running tasks
- Implement a more sophisticated NLP model for extracting indications
- Add more comprehensive test coverage
- Implement a message queue for asynchronous processing
- Add monitoring and logging infrastructure
- Implement a circuit breaker pattern for external API calls
- Add support for more drug databases beyond DailyMed
- Ensuring high availability and reliability
- Managing API rate limits for external services
- Handling large volumes of data efficiently
- Ensuring data accuracy and validation
- Keeping ICD-10 mappings up-to-date
- Securing sensitive patient and drug information