npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2025 – Pkg Stats / Ryan Hefner

@rxbenefits/clinical

v1.0.0

Published

Clinical module functionality for RxBenefits applications including intervention drug lists, clinical conditions, and configuration

Readme

@rxbenefits/clinical

Clinical module functionality for RxBenefits applications

NPM Version License TypeScript

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/clinical

Peer Dependencies

npm install react@^18.3.1 react-dom@^18.3.1 react-router-dom@^6.0.0 antd@^4.18.0

Dependencies

npm install @rxbenefits/api @rxbenefits/components @rxbenefits/constants @rxbenefits/hooks @rxbenefits/types @rxbenefits/ui @rxbenefits/utils

Quick 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.tsx

Data Flow

  1. Conditions: Load via Protect API, display in paginated table
  2. Details: Fetch condition details with associated drugs
  3. Create/Edit: Submit via modal forms
  4. Interventions: Manage drug lists and target associations

Styling

The library includes CSS files for custom styling:

  • Conditions.css - Styles for conditions components
  • InterventionDrugList.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:coverage

Test 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