system dynamics model of the Oregon Health Plan’s client caseload


Developed this model and wrote this description in 2007 as an analyst for the State of Oregon. We ultimately never used or published this model; I’m posting it here in hopes that someone will find it useful when a Google search delivers it.


The State of Oregon offers medical assistance to low-income individuals and families through a variety of programs collectively referred to as the Oregon Health Plan (OHP). These programs require a significant portion of the state’s financial resources, and therefore policy-makers require sound estimates of program costs into the near future. Producing these cost estimates requires forecasting each program’s monthly client population (the caseload). Additionally, policy-makers desire ways to quickly evaluate the effects of proposed policy changes on the various programs, so that they may ask “what if” questions and consider multiple scenarios before enacting laws.

To meet this need, Oregon’s Department of Human Services created the system dynamics (SD) model presented in this text. The SD method has proven effective for policy consideration in many government and private-sector agencies, and is a reasonable candidate for modeling the OHP population dynamics.

System Description

Basic Equation

The OHP system (hereafter referred to as the system) divides into several mutually exclusive programs based on age, income, citizenship, and disability status. The system boundary contains all of these programs, so that transfers from one program to another remain within the system. Clients enter and leave the system by crossing this boundary, and cannot be in the system unless in one of the programs. The following figure demonstrates these ideas:

Define the state of the system as the number of clients in each program at the end of month t. In vector form, this is denoted

for programs 1 through n, where n is the number of programs. Define the entries between the end of month t and the end of month t+1 for each program as:

Similarly, define the exits between the end of month t and the end of month t+1 as:

The state at the end of any given month is the sum of three functions: a function specifying how clients already in the system transfer between programs, a function specifying how clients leave the system, and a function specifying how clients enter the system from outside. This is denoted

where is a function mapping the state (after exits are removed) to the transfer component of the next state. This function is non-linear and impossible to write in closed-form due to unknown dependencies on economic conditions and policy. We make the following linear approximation:

where T is a matrix whose elements give the probability of transfer for each program into the other programs. Each column of T may be regarded as a probability distribution, and may vary with time. The values are extracted from historical data or specified by the user.

This transition matrix strategy is very similar to the Markov chain method discussed by (Lane 1985).


Exits can be modeled in two ways. First, clients can simply be directly subtracted from the system over a period t to t+1. Second, a survival curve may be applied to model exits as a function of a previous month’s state. Since there are multiple programs in the system, a combination of the two methods is permitted as long as both are not used on the same program. Define a switch matrix of ones and zeros that denotes which method to use for which program. Then the exits can be described by

A first-order filter models an exponential survival curve. The client population for a month is input to the filter, and the resulting values are subtracted from the state as the next month’s values are calculated. This causes exponential decay in the population counts. In equation form,

where is a matrix containing the filter constants. The constants may vary with time.

Putting It All Together

All together, the system dynamics equation is:

The Data

The data used to calculate the transfer and survival matrices, should the user wish to use historical data rather than directly specify the values, comes from Oregon Department of Human Service’s caseload records. Each row is a client’s episode in a program, containing a unique client identifier, a program identifier, and start date, and an end date. SPSS syntax processes the data to produce monthly counts of entries, exits, and transfers. Transfers are counted such that each combination of start and end group is recorded. Client population on the last day of each month is also counted.

Model Implementation

Model production is divided into two phases, the development phase and the production phase. The development phase is complete.

Model Development Phase

The development phase describes the period of model formulation and initial implementation using a mathematical programming language. When conceptualizing the model, we found it easier to write code than “point and click” with a GUI tool such as Vensim. Writing code gave us the further advantage of making changes easier.

The model was constructed using the R statistical computing language ( This decision was made due to R’s ability to store lists of matrices, conduct matrix algebra, compute survival curves, optimize values to fit historical data, forecast time series, and read SPSS files. R was also chosen for its low cost (it is free), and its high regard in academia.

The model consists of several files containing modules used by the various computations. One of these files stores the simulation parameters for easy alteration by users. All are easily modified with a text editor.

The planned GUI implementation (discussed below) will likely never be as flexible as the R code.

Production/GUI Phase

After the design is complete, a subset of the model will be implemented using a GUI simulation tool such as Vensim. The goal is to produce something easy to use by individuals who are unconcerned about the technical details. It is likely that R code may be produced that generates a Vensim model automatically.

The R model will remain for more detailed studies, particularly those requiring features such as time-dependent matrices that are difficult to produce in a GUI tool.


Step Response

A step response is shown for a four-program system, with programs PLMW, TANF, TANF-EX, and FAMILIES. All programs start at zero population, and 100 clients monthly are placed into PLMW. It is clear that many transfer from PLMW into the other programs. Time-varying survival and transfer matrices were used, which explains the seasonality visible in the FAMILIES graph.

Pulse Response

Two pulse responses are shown for a four-program system, with programs TANF, TANF-EX, FAMILIES, and CHIP. This demonstrates the ability of the model to compare scenarios. The first scenario shows a pulse of 1000 clients into TANF-EX, the second a pulse of 1000 into TANF. Scenarios start with zero populations in each program. Like the above simulation, time-varying transfer and survival matrices produce the high seasonality visible in the CHIP program.


Emmi, Forster, and Mills. 2002. “A System Dynamics Model of Welfare Reform in Utah: Phase II Final Report”. Center for Public Policy and Administration, University of Utah Report.

Lane, Uyeno, Stark, Kliewer, and Gutman. 1985. “Forecasting Demand for Long-Term Care Services”. Health Services Research.


Post Author: badassdatascience

Leave a Reply

Your email address will not be published.