@rxbenefits/clinical
v1.0.0
Published
Clinical module functionality for RxBenefits applications including intervention drug lists, clinical conditions, and configuration
Maintainers
Readme
@rxbenefits/clinical
Clinical module functionality for RxBenefits applications
Overview
The Clinical Library provides comprehensive clinical management functionality for RxBenefits pharmacy benefits management applications. This library includes components for managing intervention drug lists, clinical conditions, and clinical configuration.
Features
🏥 Clinical Conditions
- View and manage clinical conditions
- Condition detail views with associated drugs
- Search and filter conditions
- Create and edit conditions
- Associate drugs with conditions
💊 Intervention Drug Lists
- Manage intervention drug lists
- Target drug associations
- Intervention details and history
- Drug list configuration
- Search and pagination
⚙️ Clinical Configuration
- Configure clinical settings
- Manage clinical workflows
- System-wide clinical preferences
Installation
npm install @rxbenefits/clinicalPeer Dependencies
npm install react@^18.3.1 react-dom@^18.3.1 react-router-dom@^6.0.0 antd@^4.18.0Dependencies
npm install @rxbenefits/api @rxbenefits/components @rxbenefits/constants @rxbenefits/hooks @rxbenefits/types @rxbenefits/ui @rxbenefits/utilsQuick Start
Basic Setup
import { ClinicalModule } from '@rxbenefits/clinical';
import { BrowserRouter } from 'react-router-dom';
function App() {
return (
<BrowserRouter>
<ClinicalModule />
</BrowserRouter>
);
}Clinical Conditions
import { Conditions } from '@rxbenefits/clinical';
function ConditionsPage() {
return <Conditions />;
}Intervention Drug List
import { InterventionDrugList } from '@rxbenefits/clinical';
function InterventionPage() {
return <InterventionDrugList />;
}Components
ClinicalModule
Main routing module for clinical functionality.
import { ClinicalModule } from '@rxbenefits/clinical';
<ClinicalModule />;Features:
- Routing configuration for all clinical features
- Lazy-loaded components
- React Router v6 integration
Conditions
Main component for viewing and managing clinical conditions.
import { Conditions } from '@rxbenefits/clinical';
<Conditions />;Features:
- Paginated condition list
- Search and filter
- Detail views
- Create/edit modals
ConditionsDetail
Detailed view of a specific clinical condition.
import { ConditionsDetail } from '@rxbenefits/clinical';
<ConditionsDetail conditionId="123" />;Features:
- Complete condition information
- Associated drugs table
- Edit capabilities
- History tracking
ConditionsModal
Modal for creating or editing clinical conditions.
import { ConditionsModal } from '@rxbenefits/clinical';
<ConditionsModal
visible={true}
onClose={() => setVisible(false)}
conditionId="123" // Optional for edit
/>;Form Fields:
- Condition name
- Description
- Status
- Associated drugs
- Effective dates
InterventionDrugList
Main component for managing intervention drug lists.
import { InterventionDrugList } from '@rxbenefits/clinical';
<InterventionDrugList />;Features:
- Paginated drug list
- Search functionality
- Sort and filter
- Detail views
InterventionDetail
Detailed view of an intervention drug list.
import { InterventionDetail } from '@rxbenefits/clinical';
<InterventionDetail interventionId="456" />;Features:
- Complete intervention information
- Target drugs
- Associated conditions
- History and audit trail
InterventionDrugListModal
Modal for creating or editing intervention drug lists.
import { InterventionDrugListModal } from '@rxbenefits/clinical';
<InterventionDrugListModal
visible={true}
onClose={() => setVisible(false)}
interventionId="456" // Optional for edit
/>;Form Fields:
- Intervention name
- Description
- Drug associations
- Target criteria
- Effective dates
TargetDrugs
Component for managing target drugs within an intervention.
import { TargetDrugs } from '@rxbenefits/clinical';
<TargetDrugs interventionId="456" />;Features:
- Target drug table
- Add/remove drugs
- Search drugs
- Drug details
Configuration
Clinical configuration management component.
import { Configuration } from '@rxbenefits/clinical';
<Configuration />;Features:
- System settings
- Clinical workflow configuration
- Preference management
API Reference
Types
ConditionResponse
interface ConditionResponse {
conditionId: string;
name: string;
description: string;
status: string;
effectiveDate: string;
terminationDate?: string;
drugs: ConditionDrug[];
}ConditionDrug
interface ConditionDrug {
drugId: string;
drugName: string;
ndc: string;
strength: string;
form: string;
effectiveDate: string;
terminationDate?: string;
}Hooks (from @rxbenefits/hooks)
useConditions
import { useConditions } from '@rxbenefits/hooks';
const { conditions, isLoading, error, refetch, createCondition, updateCondition, deleteCondition } =
useConditions();useInterventions
import { useInterventions } from '@rxbenefits/hooks';
const {
interventions,
isLoading,
error,
refetch,
createIntervention,
updateIntervention,
deleteIntervention,
} = useInterventions();Examples
Complete Clinical Module Setup
import React from 'react';
import { BrowserRouter } from 'react-router-dom';
import { ClinicalModule } from '@rxbenefits/clinical';
function ClinicalApp() {
return (
<BrowserRouter>
<ClinicalModule />
</BrowserRouter>
);
}
export default ClinicalApp;Custom Conditions Page
import React, { useState } from 'react';
import { Conditions, ConditionsModal } from '@rxbenefits/clinical';
function CustomConditionsPage() {
const [modalVisible, setModalVisible] = useState(false);
const [selectedConditionId, setSelectedConditionId] = useState(null);
const handleEdit = (conditionId: string) => {
setSelectedConditionId(conditionId);
setModalVisible(true);
};
const handleCreate = () => {
setSelectedConditionId(null);
setModalVisible(true);
};
return (
<div>
<button onClick={handleCreate}>Create Condition</button>
<Conditions onEdit={handleEdit} />
<ConditionsModal
visible={modalVisible}
onClose={() => setModalVisible(false)}
conditionId={selectedConditionId}
/>
</div>
);
}Intervention Management
import React from 'react';
import { InterventionDrugList, InterventionDetail, TargetDrugs } from '@rxbenefits/clinical';
function InterventionManagement({ interventionId }: { interventionId: string }) {
return (
<div>
<InterventionDetail interventionId={interventionId} />
<TargetDrugs interventionId={interventionId} />
</div>
);
}Architecture
Module Structure
@rxbenefits/clinical/
├── ClinicalModule.tsx # Main routing module
├── Conditions/ # Clinical conditions
│ ├── Conditions.tsx
│ ├── Conditions.css
│ └── Components/
│ ├── ConditionsDetail.tsx
│ └── ConditionsModal.tsx
├── InterventionDrugList/ # Intervention drugs
│ ├── InterventionDrugList.tsx
│ ├── InterventionDrugList.css
│ └── Components/
│ ├── InterventionDetail.tsx
│ ├── InterventionDrugListModal.tsx
│ └── TargetDrugs.tsx
└── Configuration/ # Clinical config
└── Configuration.tsxData Flow
- Conditions: Load via Protect API, display in paginated table
- Details: Fetch condition details with associated drugs
- Create/Edit: Submit via modal forms
- Interventions: Manage drug lists and target associations
Styling
The library includes CSS files for custom styling:
Conditions.css- Styles for conditions componentsInterventionDrugList.css- Styles for intervention components
Import CSS in your application:
import '@rxbenefits/clinical/dist/lib/Conditions/Conditions.css';
import '@rxbenefits/clinical/dist/lib/InterventionDrugList/InterventionDrugList.css';Or import in your global styles:
@import '@rxbenefits/clinical/dist/lib/Conditions/Conditions.css';
@import '@rxbenefits/clinical/dist/lib/InterventionDrugList/InterventionDrugList.css';Testing
# Run tests
npm test
# Watch mode
npm run test:watch
# Coverage
npm run test:coverageTest Example
import { render, screen } from '@testing-library/react';
import { Conditions } from '@rxbenefits/clinical';
describe('Conditions', () => {
it('should render conditions list', () => {
render(<Conditions />);
expect(screen.getByRole('table')).toBeInTheDocument();
});
});Performance
- Bundle Size: ~80 KB (estimated, uncompressed)
- Gzipped: ~25 KB (estimated)
- Load Time: < 100ms initial render
- Table Performance: Optimized pagination for large datasets
Browser Support
- Chrome 90+
- Firefox 88+
- Safari 14+
- Edge 90+
Accessibility
- WCAG 2.1 AA compliant
- Keyboard navigation
- Screen reader support
- Proper ARIA labels
License
MIT © RxBenefits
Changelog
See CHANGELOG.md for version history.
Related Packages
- @rxbenefits/api - API clients
- @rxbenefits/components - Shared components
- @rxbenefits/ui - UI library
- @rxbenefits/hooks - Custom hooks
- @rxbenefits/types - TypeScript types
- @rxbenefits/utils - Utilities
- @rxbenefits/constants - Constants
