Skip to main content

A package to facilitate efficient and accurate calculation of the medication adherence metric "Proportion of Days Covered" or "PDC".

Project description

The purpose of this package is to provide a python-native means to calculate a common industry metric for medication adherence, Proportion of Days Covered (PDC). Much of the healthcare analytics industry is transitioning from SAS and are working to replicate such fundametal metrics in new environments. The goal is to offer one less thing that needs to be rebuilt from scratch, and hopefully make work easier for business analysts in the healthcare ecosystem.

I followed the original implementation logic of PDC in SAS, this can be found at https://support.sas.com/resources/papers/proceedings13/167-2013.pdf

This paper offers a gentle yet detailed introduction to the topic, and will serve as a reference to anyone new to the subject.

More updates such as multiprocessing to follow in future developments.

Please use as described below:

PARAMETERS:

dataframe - A pandas dataframe containing the required columns described below.

patient_id_col - A unique patient identifier. Format = STRING or INTEGER

drugname_col - The name of the drug being filled or drug class or Generic name, per usual PDC requirements. Format = STRING

filldate_col - The date of the fill being dispensed. Format = DATE

supply_days_col - Days of supply being dispensed at fill. Format = INTEGER

mbr_elig_start_dt_col - First date of coverage eligiblity for patient or a reference START DATE. Format = DATE

MBRELIGEND - Last date of coverage eligiblity for patient or a reference END DATE. Format = DATE

Returns - A Pandas dataframe containing the following columns

patient_id_col - This will return a column name representing a unique patient identifier as provided in original input dataframe. FORMAT = STRING

drugname_col - The name of the drug being filled or drug class or Generic name, as provided in original input dataframe.

DAYSCOVERED- The number of unique days of drug coverage, after shifting coverage to accommodate early refills. FORMAT = INTEGER

TOTALDAYS - The total number of days in patient analysis window. Set to 0 if days of coverage is 0. FORMAT = INTEGER

PDC_SCORE - The patient's PDC score, calculated as DAYSCOVERED / TOTALDAYS. Set to 0 if days of coverage is 0. FORMAT = FLOAT

USAGE EXAMPLE

#  Import required libraries
import pandas as pd
import numpy as np
from pdcscore import pdccalc

# Create a sample dataframe
df = pd.DataFrame({
    'MCID': ['A', 'A', 'A', 'B', 'B', 'B'],
    'DRUGNAME': ['X', 'X', 'X', 'Y', 'Y', 'Y'],
    'RX_FILLED_DT': pd.to_datetime(['2022-01-01', '2022-01-21', '2022-03-20',
                                '2022-01-01', '2022-02-01', '2022-03-01']),
    'DAYS_SPLY_NBR': [30, 30, 30, 30, 30, 30],
    'START_DT': pd.to_datetime(['2022-01-01', '2022-01-01', '2022-01-01',
                                         '2022-02-01', '2022-02-01', '2022-02-01']),
    'END_DT': pd.to_datetime(['2022-03-31', '2022-03-31', '2022-03-31',
                                       '2022-03-31', '2022-03-31', '2022-03-31'])
})

# Inspect sample data
df.head(n=len(df))

# calculate PDC scores on the input DataFrame
calcfunc= pdccalc(dataframe=df, patient_id_col='MCID', drugname_col='DRUGNAME'
                                         , filldate_col='RX_FILLED_DT', supply_days_col='DAYS_SPLY_NBR'
                                         , mbr_elig_start_dt_col='START_DT', mbr_elig_end_dt_col='END_DT')
pdc_scores_df = calcfunc.calculate_pdc()

# Inspect output
pdc_scores_df.head()

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pdcscore-1.0.2.tar.gz (4.8 kB view details)

Uploaded Source

Built Distribution

pdcscore-1.0.2-py3-none-any.whl (4.9 kB view details)

Uploaded Python 3

File details

Details for the file pdcscore-1.0.2.tar.gz.

File metadata

  • Download URL: pdcscore-1.0.2.tar.gz
  • Upload date:
  • Size: 4.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.11

File hashes

Hashes for pdcscore-1.0.2.tar.gz
Algorithm Hash digest
SHA256 33549e4cbdf63ed8d66bcc86a2504fe1154ca1842f56093b130425d0c1df493e
MD5 f9a8ad4f03edc5d0954f7a060498853a
BLAKE2b-256 f86eceaa656a4215c1c3cec5351bc1a074971bb5255e2475bcf71e3435d25c16

See more details on using hashes here.

File details

Details for the file pdcscore-1.0.2-py3-none-any.whl.

File metadata

  • Download URL: pdcscore-1.0.2-py3-none-any.whl
  • Upload date:
  • Size: 4.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.11

File hashes

Hashes for pdcscore-1.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 af09d09e096a61226b1d66bfa8cfca59b72551dd561861f6b3599e67d0a95352
MD5 8347aa97af66fa7b81723033bd091ef7
BLAKE2b-256 337e1c9d1bd3d757b96536c971bc9d8b97c7c53ffdbe27cea235e63b5fd6b058

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page