Show the code
library(dplyr)
library(tidyr)
library(lme4)
library(table1)
library(flextable)
library(officer)
library(ggplot2)
library(highcharter)
library(effects)
library(modelsummary)
library(wesanderson)
Cohealth, a community health organisation serving inner-urban Melbourne, provides primary care to a population with a markedly higher prevalence of both high- and low- prevalence mental health conditions. Despite the high burden of mental illness, only 15.5% of eligible cohealth patients had an up-to-date general practitioner Mental Health Treatment Plan (MHTP), compared to 21.3% nationally. This contradiction — high clinical need but low service uptake — prompted an investigation into potential barriers to MHTP provision in this setting.
Using clinical and billing data, this study explores factors affecting the delivery of MHTPs, including socioeconomic disadvantage (proxied by concession card status), illness severity (low- vs high-prevalence mental health disorders). Logistic regression analysis reveals that patients with a mental health condition and a concession card are less likely to be billed an MHTP than patients with a mental health condition and without a concession card. Patients with low-prevalence (and typically more severe or lifelong) mental health conditions were no more likely to be billed an MHTP than patients with a high-prevalence mental health conditions.
By contrast, patients with a mental health condition and concession card were more likely to be billed a chronic disease management plan and tended to have higher rates of mental health consultations than a patient with a mental health condition and without a concession card. Patients with a low-prevalence condition were more likely to be billed a mental health consultation and tended to have rates of chronic disease management plan billing than patients with a high-prevalence condition.
General practitioners may perceive limited utility in preparing MHTPs for patients unable to afford private psychological care due to high out-of-pocket costs. Patients with severe and persistent mental illness may instead access mental health care through alternative funding pathways that do not depend on an MHTP as a mechanism for care access.
The findings raise questions about equity, access, and the appropriateness of MHTP billing as a proxy for mental health service provision in community health settings or other settings with high levels of patient complexity.
library(dplyr)
library(tidyr)
library(lme4)
library(table1)
library(flextable)
library(officer)
library(ggplot2)
library(highcharter)
library(effects)
library(modelsummary)
library(wesanderson)
# Statistics derived from Doctor's Control Panel
# for the four weeks starting from 28th April 2025
# see Appendix "Proportion of patients eligible and who have a mental health treatment plan
# number of mental health treatment plans, cohealth and 'other'
<- 43+441
n_mhtp_cohealth <- 2455 + 16839
n_mhtp_other
# number of patients with mental health conditions
<- 43+441+1201+1441
n_mentalhealth_cohealth <- 2455+16839+34885+36287
n_mentalhealth_other
# total number of patients
<- 5557+720
n_total_cohealth <- 245991+12826 n_total_other
cohealth, a community health service in inner-west urban Melbourne, has a relatively high proportion of patients with mental health conditions. According to statistics derived from a clinical decision support tool (Doctor’s Control Panel, 49.8% of patients consulted by cohealth clinics in the four weeks from 28th April 2025 are eligible for a mental health treatment plan (i.e. have a recorded mental health condition), compared to a national average of 35.0% nationally among practices which use Doctor’s Control Panel (see Section 6.1).
That cohealth medical clinic patients have a relatively high proportion of mental health conditions is consistent with other available statistics. At one of the cohealth general practice sites, Kensington, approximately 6.7% of consultations (52 of 774, see Section 6.2 for details on how ‘active’ patient numbers were determined using PenCS) are with patients who have a recorded low-prevalence mental health condition (schizophrenia or bipolar affective disorder) compared to the Australian general practice average of 0.5%1. To help meet the needs of cohealth patients with mental health conditions, cohealth medical clinics work closely and co-operatively with area mental health services (e.g. Inner West Area Mental Health Service) and cohealth clinics also employ mental health nurses through the Primary Health Network CAREinMIND program.
1 “General practice activity in Australia 2015-2016”, Sydney University Press, 2016.
# Data for the first plot
# patients with a recorded mental health condition
<- data.frame(
df1 Clinic = c("cohealth", "Other clinics"),
Percentage = c(
round(n_mentalhealth_cohealth/n_total_cohealth * 100, 1),
round(n_mentalhealth_other/n_total_other * 100, 1)
)
)
# Data for the second plot
# consults with patients who have a low-prevalence mental health condition
<- data.frame(
df2 Clinic = c("cohealth, Kensington", "Other clinics"),
Percentage = c(round(52/774*100, 1), 0.5)
)
# Choose a Wes Anderson palette (e.g., 'Rushmore')
<- wes_palette("Darjeeling1", 2, type = "discrete")
palette
<- highchart() |>
hc1 hc_chart(type = "column") |>
hc_title(text = "Patients with Recorded Mental Health Condition") |>
hc_xAxis(categories = df1$Clinic) |>
hc_yAxis(title = list(text = "Proportion (%)")) |>
hc_add_series(
name = "Proportion",
data = df1$Percentage,
colorByPoint = TRUE,
colors = palette
|>
) hc_tooltip(pointFormat = "<b>{point.y}%</b>") |>
hc_legend(enabled = FALSE) |>
hc_exporting(enabled = TRUE)
# Second highcharter plot
<- highchart() |>
hc2 hc_chart(type = "column") |>
hc_title(text = "Proportion of consultations with patients with recorded Low-Prevalence Mental Health Disorder") |>
hc_xAxis(categories = df2$Clinic) |>
hc_yAxis(title = list(text = "Proportion (%)")) |>
hc_add_series(
name = "Proportion",
data = df2$Percentage,
colorByPoint = TRUE,
colors = palette
|>
) hc_tooltip(pointFormat = "<b>{point.y}%</b>") |>
hc_legend(enabled = FALSE) |>
hc_exporting(enabled = TRUE)
hc1 hc2
To encourage general practitioners to provide a structured framework for assessing, managing and coordinating the mental health care of patients with mental health conditions, the Medicare Benefits Schedule (MBS) provides reimbursement for general practitioners to write (and bill) ‘GP Mental Health Treatment Plans (MHTPs)’. The preparation and billing of a mental health treatment plan also enables a patient to access Medicare rebates for private psychological services2. A secondary use of MHTP item billing, and billing of the mental health treatment plan ‘review’ item 2712, is as a - perhaps misleading - indicator of mental health services delivered in general practice3 4 5.
3 “GPs rebut criticism of mental health care plan oversight”. Joyon Attwooll, RACGP newsGP, 8 August 2022.
4 “Myth-busting: role of the GP in primary mental health care”. Louise Stone, Karen Spielman, Michael Tam, Johanna Lynch, May Su, Tim Senior, Karen Price, Sarah Chalmers, Gwendoline Burton. MJA Insight+, 8 August 2022.
5 “Access to primary mental health care remains critical”. Sebastian Rosenberg, Ian Hickie. MJA Insight+, 25 July 2022.
Although cohealth consults a high proportion of patients with recorded mental health conditions and are potentially eligible for mental health treatment plans (MHTP), a relatively small proportion of those patients have had - and been billed - an ‘up-to-date’ treatment plan i.e. within the past twelve months. At cohealth, 15.5% of eligible patients have an up-to-date treatment plan, compared to 21.3% nationally (see Section 6.1). The proportion of all patients at cohealth who have an up-to-date mental health treatment plan (7.7%) is almost indistinguishable from the proportion of other clinics (7.5%).
# Data for the first plot
# patients eligible for MHTP who have an up-to-date MHTP
<- data.frame(
df1 Clinic = c("cohealth", "Other clinics"),
Percentage = c(
round(n_mhtp_cohealth/n_mentalhealth_cohealth * 100, 1),
round(n_mhtp_other/n_mentalhealth_other * 100, 1)
)
)
# Data for the second plot
# all patients, proportion who have an up-to-date MHTP
<- data.frame(
df2 Clinic = c("cohealth", "Other clinics"),
Percentage = c(
round(n_mhtp_cohealth/n_total_cohealth * 100, 1),
round(n_mhtp_other/n_total_other * 100, 1)
)
)
# Choose a Wes Anderson palette (e.g., 'Rushmore')
<- wes_palette("Darjeeling1", 2, type = "discrete")
palette
<- highchart() |>
hc1 hc_chart(type = "bar") |>
hc_title(text = "Eligible patients with an up-to-date mental health treatment plan (MHTP)") |>
hc_xAxis(categories = df1$Clinic) |>
hc_yAxis(title = list(text = "Proportion (%)")) |>
hc_add_series(
name = "Proportion",
data = df1$Percentage,
colorByPoint = TRUE,
colors = palette
|>
) hc_tooltip(pointFormat = "<b>{point.y}%</b>") |>
hc_legend(enabled = FALSE) |>
hc_exporting(enabled = TRUE)
# Second highcharter plot
<- highchart() |>
hc2 hc_chart(type = "bar") |>
hc_title(text = "Proportion of all patients with an up-to-date mental health treatment plan (MHTP)") |>
hc_xAxis(categories = df2$Clinic) |>
hc_yAxis(title = list(text = "Proportion (%)")) |>
hc_add_series(
name = "Proportion",
data = df2$Percentage,
colorByPoint = TRUE,
colors = palette
|>
) hc_tooltip(pointFormat = "<b>{point.y}%</b>") |>
hc_legend(enabled = FALSE) |>
hc_exporting(enabled = TRUE)
hc1 hc2
Why, despite the high prevalence of mental health conditions among cohealth clinic patients, do cohealth general practice clinics do - and bill - relatively few mental health treatment plans (MHTPs)?
cohealth general practitioners suggested the following reasons, broadly summarised as:
In detail:
Mental health treatment plans are done principally for patients to access private psychological services.
As a result, mental health treatment plans are not equivalent to referral to psychological care for patients, as at least some patients with mental health conditions can receive psychological care through other funding sources.
A general-practitioner prepared (and billed) mental health care/treatment plan does provide access to Medicare funding for private psychological services. However, many private psychologists charge fees in excess of the Medicare rebate for psychological services, resulting in a large ‘gap’ fee for patients6.
The size of the ‘gap fee’ is a potential barrier for some patients to access psychological services, particularly those from low socio-economic backgrounds. For patients who do not have the financial resources to pay the ‘gap fees’ of private psychological care, the preparation of a general-practitioner mental health treatment plan could be of less value compared to a patient who is not deterred by the ‘gap fee’ and is seeking Medicare subsidies for private psychological treatment.
The general practitioner may view the preparation of a mental health treatment plan to be of little use to the patient, particularly those who cannot afford to pay the ‘gap fee’ of private psychological services. Although there is some financial return for the general practitioner to prepare a mental health treatment plan, the patient may have more pressing concerns e.g. immediate counselling provided by the general practitioner, housing issues or addressing ‘physical’ health needs.
Although universal health insurance in Australia and the frequent use of bulk-billing at cohealth clinics might reduce inequity in access7 for cohealth patients living with mental health illness and low socio-economic resources, there may still be inequity in services provided in relation to need.
6 “Long wait times $90 gap fees preventing access to psychology services”” Australian Psychological Society, 30 January 2023.
7 “Socioeconomic status and accessibility to health care services in Australia”. R Katteri, Research Roundup, Primary Health Care Research and Information Services (PHCRIS), Issue 22, December 2011.
Some of the reasons listed can be tested through examination of practice billing compared to patient characteristics:
8 “GP visits by health care card holders (A secondary analysis of data from Bettering the Evaluation and Care of Health (BEACH), a national study of general practice activity in Australia)”. Janice Charles, Lisa Valenti, Helena Britt. Australian Family Physician, Vol 32: No. 1/2, pp 85-89. January/February 2003.
9 “The impact of low socioeconomic status and primary health care access on emergency department presentations in young children in regional Queensland”. Catherine McCosker, Gavin Beccaria, Lisa Beccaria, Tanya Machin. Journal of Paediatric and Child Health, Vol 59:9, pp 1035-1038. September 2023.
10 “Improving the physical health and wellbeing of people living with mental illness in Australia”, National Mental Health Commission (NHMC), 2016.
11 “General practice and the management of chronic conditions, Where to now?” (Jan Newland, Nicholas Zwar. Australian Family Physician, Jan/Feb/2006, Vol 36:No 1-2, pp 16-19). Note that the chronic disease management item numbers in use as of May 2025 are scheduled to be changed on July 2025.
It is postulated that concession card holders have lower financial resources and are less able to utilise the government subsidies unlocked by MHTP plans for private psychology. This is because private psychology fees are often far greater than the government subsidy to use private psychology.
Mental health conditions can be broadly divided into low- and high- prevalence mental health conditions. High-prevalence mental health conditions are the common mental health conditions such as anxiety and depression. Low-prevalence mental health conditions are the less common, and often lifelong conditions, of schizophrenia and bipolar affective disorder. Low-prevalence mental health conditions often have a substantial impact on individuals and their family, requiring extensive support12. Patients with schizophrenia and bipolar affective disorder can benefit from psychological therapies. If mental health treatment plans were done on the basis of need, it would be expected that more patients with low-prevalence conditions would have mental health treatment plans compared to patients with high-prevalence mental health conditions.
12 “Australia’s health 2018”, Chapter 3.12, Mental Health. Australian Institute of Health and Welfare (AIHW), 2018.
Are concession card holders, or patients living with low-prevalence mental health disorders, billed the mental health treatment plans (MHTP) the same, more, or less than patients without concession card holders at cohealth clinics?
If patients with mental health conditions and a health concession card have less mental health treatment plans billed at cohealth general practices, perhaps those patients also have less mental health care delivered by those general practitioners.
There other potential ways to measure mental health care delivery in general practice.
Potential measurements:
Options (1) and (2) are relatively easy to perform with a basic database search and simple application of data science. However, at the time of writing, only option (3) is currently available to use at cohealth.
There is another billing item associated with mental health care, which is the general practitioner attendance in relation to a mental health disorder, Medicare Benefit Schedule - Item 2713. Unfortunately, MBS item 2713 is little used, because there are alternative item numbers - not specific to mental health - which are easy to use and bill13.
13 MBS item 2713 has a requirement for minimum consultation length of 20 minutes, and has a rebate value of $81.70.
There is an alternative item number which can also be claimed if a consult is between 20 to 40 minutes in length, the level ‘C’ consult, MBS item 36, which has a rebate value of $82.90. Where an item 2713 could be claimed, an item 36 could be claimed instead, with greater revenue than an item 2713.
This is even more the case when a patient has a concession card. In that case, the bulk-billing incentive payment for item 36 is $14 or more (depending on the practice’s country-rural ‘MMM’ location) than the bulk-biling incentive payment for an item 2713.
14 One possible reason a 2713 is billed, despite the relatively low financial return compared to an ‘item C’, is because item 2713 - depending on the duration and content of the consult - can sometimes be ‘co-billed’ together with a standard consult item (such as level B or C consult).
Nevertheless, occasionally general practitioners do claim an item 271314.
Are concession card holders, or patients living with low-prevalence mental health disorders, billed the general practice mental health item ‘MBS Item 2713’ the same, more, or less than patients without concession card holders at cohealth clinics?
Another indicator of care provision is the billing of general practitioner chronic disease management plans, Medicare Benefit Schedule item 721. Chronic disease management plans are for the purpose of planning, setting goals, coordinating and reviewing an ongoing chronic condition (present for more than six months or expected to be present for more than six months). People living with mental health conditions, particularly low-prevalence mental health conditions and those living with socio-economic disadvantage are more likely to live with chronic health conditions and experience disability as the result of those conditions.
Are concession card holders, or patients living with low-prevalence mental health disorders, billed chronic disease management plans ‘MBS item 721’ the same, more, or less than patients without concession card holders at cohealth clinics?
The number of active patients at coHealth living with mental health conditions, who were billed MHTPs, mental health consult items (MBS item 2713) or chronic disease management plans (MBS item 721) in the previous twelve months (up to 1st May 2025) were counted using PenCS (for details of the extraction procedure using PenCS, see Section 6.2). The patients were divided into groups according to concession card holder patients (either health care card ‘HCC’ or pension card), high-prevalence and low-prevalence mental health disorders and the cohealth clinic site attended.
The results are analysed using R version 4.3.1. Logistic regression was used, with clinic location as a random effect15. Clinic location was used as a random effect because clinicians, support staff (e.g. mental health nurses) availability, and potentially workplace cultures are expected to be different at each clinic site. Some clinic sites are relatively close together geographically, but other sites are located in geographically distinct communities.
15 It is to be noted that using clinic location as a random effect added little information to the model.
Source code can be viewed on www.github.com/DavidPatShuiFong16 and davidfong.org17.
# outcome
# counts of patients who have had, in the past year:
# mhtp- mental health treatment plan e.g. MBS item 2715, 2717
# mh2713 - general practitioner mental health consult i.e. MBS item 2713
# gpmp - general practitioenr chronic disease treatment plan i.e. MBS item 721
#
# predictors
# concession - false = no, true = yes
# mental health condition - "high" = high-prevalence, "low" = low-prevalence
#
# random effects
# (not considered to be a predictor of interest)
# clinic - the clinic's name, a categorical variable
# the initial data was created as counts (i.e. aggregated data)
# the original patient data can be recreated from the counts
<- tibble(
summary_df concession = logical(),
condition = factor(),
clinic = character(),
total = integer(), # number in this patient category (concession, condition, clinic) occurs
mhtp = integer(), # number who had a mental health treatment plan (MHTP e.g. 2715/2717)
mh2713 = integer(), # number who had a billed GP mental health consult (MBS item 2713)
gpmp = integer() # number who had a chronic disease management plan (MBS item 721)
# later we will also add...
# mhtp_no, mh2713_no, gpmp_no - then number in the group who did *not* have the service/item
)
<- summary_df |>
summary_df add_row(concession = TRUE, condition = "high", clinic = "Kensington", total = 285, mhtp = 42, mh2713 = 13, gpmp = 109) |>
add_row(concession = TRUE, condition = "low", clinic = "Kensington", total = 73, mhtp = 7, mh2713 = 7, gpmp = 33) |>
add_row(concession = FALSE, condition = "high", clinic = "Kensington", total = 84, mhtp = 9, mh2713 = 4, gpmp = 19) |>
add_row(concession = FALSE, condition = "low", clinic = "Kensington", total = 8, mhtp = 2, mh2713 = 0, gpmp = 3) |>
add_row(concession = TRUE, condition = "high", clinic = "Paisley", total = 430, mhtp = 26, mh2713 = 42, gpmp = 164) |>
add_row(concession = TRUE, condition = "low", clinic = "Paisley", total = 123, mhtp = 13, mh2713 = 10, gpmp = 58) |>
add_row(concession = FALSE, condition = "high", clinic = "Paisley", total = 131, mhtp = 21, mh2713 = 14, gpmp = 26) |>
add_row(concession = FALSE, condition = "low", clinic = "Paisley", total = 8, mhtp = 1, mh2713 = 0, gpmp = 4) |>
add_row(concession = TRUE, condition = "high", clinic = "Laverton", total = 79, mhtp = 14, mh2713 = 6, gpmp = 32) |>
add_row(concession = TRUE, condition = "low", clinic = "Laverton", total = 38, mhtp = 10, mh2713 = 15, gpmp = 18) |>
add_row(concession = FALSE, condition = "high", clinic = "Laverton", total = 43, mhtp = 7, mh2713 = 1, gpmp = 16) |>
add_row(concession = FALSE, condition = "low", clinic = "Laverton", total = 4, mhtp = 1, mh2713 = 1, gpmp = 1) |>
add_row(concession = TRUE, condition = "high", clinic = "Collingwood", total = 346, mhtp = 35, mh2713 = 17, gpmp = 88) |>
add_row(concession = TRUE, condition = "low", clinic = "Collingwood", total = 87, mhtp = 5, mh2713 = 10, gpmp = 20) |>
add_row(concession = FALSE, condition = "high", clinic = "Collingwood", total = 88, mhtp = 14, mh2713 = 4, gpmp = 17) |>
add_row(concession = FALSE, condition = "low", clinic = "Collingwood", total = 6, mhtp = 1, mh2713 = 0, gpmp = 1) |>
add_row(concession = TRUE, condition = "high", clinic = "Fitzroy", total = 445, mhtp = 74, mh2713 = 29, gpmp = 94) |>
add_row(concession = TRUE, condition = "low", clinic = "Fitzroy", total = 165, mhtp = 18, mh2713 = 13, gpmp = 38) |>
add_row(concession = FALSE, condition = "high", clinic = "Fitzroy", total = 91, mhtp = 20, mh2713 = 2, gpmp = 14) |>
add_row(concession = FALSE, condition = "low", clinic = "Fitzroy", total = 10, mhtp = 3, mh2713 = 1, gpmp = 1) |>
mutate(
# create an 'absent' outcome column for each outcome
mhtp_no = total - mhtp,
mh2713_no = total - mh2713,
gpmp_no = total - gpmp
)
# duplicate rows according to the weighting 'mhtp',
# hence "re-creating" the original patient-level data from the counts
<- summary_df |>
mhtp # duplicate rows by number of mental health treatment plans (mhtp)
uncount(mhtp) |>
# add back mhtp column to a logical
mutate(mhtp = TRUE) |>
# don't need 'total' column any more
select(concession, condition, clinic, mhtp) |>
bind_rows(
# do the same, except
# now duplicate rows by number who do not have mental health treatment plans
|>
summary_df mutate(no_mhtp = total - mhtp) |>
uncount(no_mhtp) |>
mutate(mhtp = FALSE) |>
select(concession, condition, clinic, mhtp)
|>
) arrange(clinic, concession, condition)
label(mhtp$mhtp) = "Mental Health Plan"
label(mhtp$concession) = "Concession card"
label(mhtp$condition) = "condition"
label(summary_df$mhtp) = "Mental Health Plan"
label(summary_df$concession) = "Concession card"
label(summary_df$condition) = "condition"
# the basic model
<- glm(
model_mhtp ~ concession + condition,
mhtp family = binomial(link = "logit"),
data = mhtp
)
# add clinic as a random effect
<- glmer(
model_mhtp_effects ~ concession + condition + (1|clinic),
mhtp family = binomial(link = "logit"),
data = mhtp
)
# using 'clinic' as a random effect makes little difference to the model, but does 'explain' variance in the R squared calculation
# a grouped model
<- glmer(
model_mhtp_grouped cbind(mhtp, mhtp_no) ~ concession + condition + (1|clinic),
family = "binomial",
data = summary_df
)# perhaps more valid, as we are modeling a population, rather than predicting an individual
# note that this makes no difference to the actual estimated effect of 'concession' or 'condition'
# but does make a difference to (Nakagawa) R squared calculation
# R squared in logistic regression
# https://thestatsgeek.com/2014/02/08/r-squared-in-logistic-regression/
# "The explanation for the large difference is (I believe) that for the grouped binomial data setup, the model can accurately predict the number of successes in a binomial observation with n=1,000 with good accuracy. In contrast, for the individual binary data model, the observed outcomes are 0 or 1, while the predicted outcomes are 0.7 and 0.3 for x=0 and x=1 groups. The low R squared for the individual binary data model reflects the fact that the covariate x does not enable accurate prediction of the individual binary outcomes. In contrast, x can give a good prediction for the number of successes in a large group of individuals."
# also "A note on R2 measures for Poisson and logistic regression models when both models are applicable"
# (Mittlböck, Martina et al., Journal of Clinical Epidemiology, Volume 54, Issue 1, 99 - 103 )
# duplicate rows according to the weighting 'mh2713',
# hence "re-creating" the original patient-level data from the counts
<- summary_df |>
mh2713 # duplicate rows by number of mental health GP consults (mh2713)
uncount(mh2713) |>
# add back mhtp column to a logical
mutate(mh2713 = TRUE) |>
# don't need 'total' column any more
select(concession, condition, clinic, mh2713) |>
bind_rows(
# do the same, except
# now duplicate rows by number who do not have mental health treatment plans
|>
summary_df mutate(no_mh2713 = total - mh2713) |>
uncount(no_mh2713) |>
mutate(mh2713 = FALSE) |>
select(concession, condition, clinic, mh2713)
|>
) arrange(clinic, concession, condition)
label(mh2713$mh2713) = "Mental Health GP Consult"
label(mh2713$concession) = "Concession card"
label(mh2713$condition) = "condition"
label(summary_df$mh2713) = "Mental Health GP Consult"
# the basic model
<- glm(
model_mh2713 ~ concession + condition,
mh2713 family = binomial(link = "logit"),
data = mh2713
)
# add clinic as a random effect
<- glmer(
model_mh2713_effects ~ concession + condition + (1|clinic),
mh2713 family = binomial(link = "logit"),
data = mh2713
)
# a grouped model
<- glmer(
model_mh2713_grouped cbind(mh2713, mh2713_no) ~ concession + condition + (1|clinic),
family = "binomial",
data = summary_df
)
# duplicate rows according to the weighting 'gpmp',
# hence "re-creating" the original patient-level data from the counts
<- summary_df |>
gpmp # duplicate rows by number of GP chronic disease management plans (gpmp)
uncount(gpmp) |>
# add back mhtp column to a logical
mutate(gpmp = TRUE) |>
# don't need 'total' column any more
select(concession, condition, clinic, gpmp) |>
bind_rows(
# do the same, except
# now duplicate rows by number who do not have mental health treatment plans
|>
summary_df mutate(no_gpmp = total - gpmp) |>
uncount(no_gpmp) |>
mutate(gpmp = FALSE) |>
select(concession, condition, clinic, gpmp)
|>
) arrange(clinic, concession, condition)
label(gpmp$gpmp) = "Chronic Disease Management Plan"
label(gpmp$concession) = "Concession card"
label(gpmp$condition) = "condition"
label(summary_df$gpmp) = "Chronic Disease Management Plan"
# the basic model
<- glm(
model_gpmp ~ concession + condition,
gpmp family = binomial(link = "logit"),
data = gpmp
)
# add clinic as a random effect
<- glmer(
model_gpmp_effects ~ concession + condition + (1|clinic),
gpmp family = binomial(link = "logit"),
data = gpmp
)
# a grouped model
<- glmer(
model_gpmp_grouped cbind(gpmp, gpmp_no) ~ concession + condition + (1|clinic),
family = "binomial",
data = summary_df
)
table1(
x = ~ mhtp + concession + Condition | clinic,
data = mhtp |>
mutate(Condition = factor(condition, label = c("High-prevalence", "Low-prevalence"))),
overall = c(left = "Total")
|>
) t1flex(tablefn = "flextable", cwidth = 0.85) |>
fontsize(size = 9, part = "all") |>
add_footer_lines(value = as_paragraph("coHealth clinics, May 2025, 'active' patients"))
| Total | Collingwood | Fitzroy | Kensington | Laverton | Paisley |
---|---|---|---|---|---|---|
Mental Health Plan | ||||||
Yes | 323 (12.7%) | 55 (10.4%) | 115 (16.2%) | 60 (13.3%) | 32 (19.5%) | 61 (8.8%) |
No | 2221 (87.3%) | 472 (89.6%) | 596 (83.8%) | 390 (86.7%) | 132 (80.5%) | 631 (91.2%) |
Concession card | ||||||
Yes | 2071 (81.4%) | 433 (82.2%) | 610 (85.8%) | 358 (79.6%) | 117 (71.3%) | 553 (79.9%) |
No | 473 (18.6%) | 94 (17.8%) | 101 (14.2%) | 92 (20.4%) | 47 (28.7%) | 139 (20.1%) |
Condition | ||||||
High-prevalence | 2022 (79.5%) | 434 (82.4%) | 536 (75.4%) | 369 (82.0%) | 122 (74.4%) | 561 (81.1%) |
Low-prevalence | 522 (20.5%) | 93 (17.6%) | 175 (24.6%) | 81 (18.0%) | 42 (25.6%) | 131 (18.9%) |
coHealth clinics, May 2025, 'active' patients |
A lower proportion of concession card holders (with either high-prevalence or low-prevalence mental health conditions) were billed a mental health treatment plans in the previous year compared to those without a concession card (11.8% vs 16.7%, Odds ratio 0.664, p = 0.004). The proportion of people with low-prevalence mental health conditions were billed a mental health treatment plans in the previous year was similar, if lower, to those with high-prevalence conditions (11.7% vs 13.0%, Odds ratio 0.910, p = 0.543).
Relatively few patients are billed mental health GP consults (item 2713), far fewer than those who are billed for mental health treatment plans. A higher proportion of concession cards holders were billed a mental health GP consult (item 2713) in the previous year more than those without a concession card (5.7% vs 6.5%, Odds ratio 1.329, p = 0.193), though the difference is not statistically significant. A higher proportion of people with low-prevalence conditions were billed a mental health GP consult (item 2713) in the previous year than those with a high-prevalence condition (10.9% vs 6.5%, Odds ratio 1.685, p = 0.002)
A higher proportion of concession card holders were billed with a chronic disease management plan (item 721) in the previous year than those without a concession card (31.6% vs 21.6%, Odds ratio 1.779, p<0.001). A higher proportion of patients with patients with low-prevalence mental health conditions were billed a chronic disease management plan in the previous year than those with a high-prevalence mental health condition (33.9% vs 28.6%, Odds ratio = 1.227, p=0.059), though the result is not statistically significant at the 5% level.
# create a combined dataframe which has the correct number of mhtp, mh2713 and gpmp
# in each clinic/concession/condition category
# note that the relationship *between* mhtp, mh2713 and gpmp in this dataframe is not correct
<- mhtp |>
combined_synthetic mutate(mh2713 = mh2713$mh2713) |>
mutate(gpmp = gpmp$gpmp)
table1(
x = ~ mhtp + mh2713 + gpmp | concession,
data = combined_synthetic |>
mutate(concession = factor(concession, levels = c(FALSE, TRUE), label = c("No Concession", "Concession"))),
overall = FALSE
|>
) t1flex(tablefn = "flextable") |>
width(width = 2) |>
fontsize(size = 9, part = "all") |>
add_footer_lines("coHealth clinics, May 2025, 'active' patients")
| No Concession | Concession |
---|---|---|
Mental Health Plan | ||
Yes | 79 (16.7%) | 244 (11.8%) |
No | 394 (83.3%) | 1827 (88.2%) |
Mental Health GP Consult | ||
Yes | 27 (5.7%) | 162 (7.8%) |
No | 446 (94.3%) | 1909 (92.2%) |
Chronic Disease Management Plan | ||
Yes | 102 (21.6%) | 654 (31.6%) |
No | 371 (78.4%) | 1417 (68.4%) |
coHealth clinics, May 2025, 'active' patients |
table1(
x = ~ mhtp + mh2713 + gpmp | condition,
data = combined_synthetic |>
mutate(condition = factor(condition, label = c("High-prevalence", "Low-prevalence"))),
overall = FALSE
|>
) t1flex(tablefn = "flextable") |>
width(width = 2) |>
fontsize(size = 9, part = "all") |>
add_footer_lines("coHealth clinics, May 2025, 'active' patients")
| High-prevalence | Low-prevalence |
---|---|---|
Mental Health Plan | ||
Yes | 262 (13.0%) | 61 (11.7%) |
No | 1760 (87.0%) | 461 (88.3%) |
Mental Health GP Consult | ||
Yes | 132 (6.5%) | 57 (10.9%) |
No | 1890 (93.5%) | 465 (89.1%) |
Chronic Disease Management Plan | ||
Yes | 579 (28.6%) | 177 (33.9%) |
No | 1443 (71.4%) | 345 (66.1%) |
coHealth clinics, May 2025, 'active' patients |
# personalised flextable theme
<- function(x, ...) {
my_flextable_theme if (!inherits(x, "flextable")) {
stop(sprintf("Function `%s` supports only flextable objects.",
"theme_alafoli()"))
}#fp_bdr <- officer::fp_border(width = flextable_global$defaults$border.width,
# color = flextable_global$defaults$border.color)
<- border_remove(x) |>
x bg(bg = "transparent", part = "all") |>
color(color = "#000000", part = "all") |>
# the header text bold
bold(bold = TRUE, part = "header") |>
italic(italic = FALSE, part = "all") |>
padding(padding = 3, part = "all") |>
align_text_col(align = "left", header = TRUE) |>
# the first header row is centered text
align(i = 1, align = "center", part = "header") |>
align_nottext_col(align = "right", header = TRUE) |>
# make first column wider
width(j = 1, width = 1.5) |>
# thin horizontal line between models and other column headers
hline(i = 1, j = 2:10, border = officer::fp_border(color = "grey", width = 0.5), part = "header") |>
hline_bottom(part = "header") |>
hline_top(part = "body") |>
# place horizontal line below fourth row
hline(i = 4, border = officer::fp_border(color = "grey", width = 0.5), part = "body") |>
hline_bottom(part = "body") |>
fix_border_issues()
}
<- modelsummary(
table_mbs_model models = list(
"MHTP" = model_mhtp_grouped,
"MH2713" = model_mh2713_grouped,
"GPMP" = model_gpmp_grouped
),estimate = c("Odds ratio" = "{estimate}"),
coef_rename = c(
"concessionTRUE" = "Concession holder",
"conditionlow" = "Low-prevalence condition"
),shape = term ~ model + statistic,
exponentiate = TRUE,
statistic = c("CI (95%)" = "[{conf.low}, {conf.high}]", "p" = "{p.value}"),
output = "flextable"
|>
) my_flextable_theme() |>
fontsize(size = 8, part = "all") |>
add_footer_lines(
paste(
"The odds ratio of having been billed a GP mental health treatment plan 'MPTP', GP mental health consultation 'MH2713'",
"or GP chronic disease management plan 'GPMP',",
"according to concession card status and low-vs-high prevalence mental health condition",
"(coHealth GP clinics, May 2025)"
)
)
# column width adjustment for Word (.docx) output
# from https://stackoverflow.com/questions/70355001/how-to-fit-flextable-to-the-width-of-the-side-borders-in-the-word-document-outpu
= 6 # page width, in inches
w <- dim(table_mbs_model)$widths/sum(dim(table_mbs_model)$widths)
auto_widths |>
table_mbs_model width(width = w * auto_widths)
| MHTP | MH2713 | GPMP | ||||||
---|---|---|---|---|---|---|---|---|---|
| Odds ratio | CI (95%) | p | Odds ratio | CI (95%) | p | Odds ratio | CI (95%) | p |
(Intercept) | 0.209 | [0.147, 0.297] | <0.001 | 0.057 | [0.035, 0.092] | <0.001 | 0.267 | [0.177, 0.402] | <0.001 |
Concession holder | 0.664 | [0.500, 0.880] | 0.004 | 1.329 | [0.866, 2.039] | 0.193 | 1.779 | [1.393, 2.272] | <0.001 |
Low-prevalence condition | 0.910 | [0.672, 1.232] | 0.543 | 1.685 | [1.208, 2.350] | 0.002 | 1.227 | [0.992, 1.516] | 0.059 |
SD (Intercept clinic) | 1.330 | [1.138, 1.874] | 1.377 | [1.141, 2.175] | 1.478 | [1.221, 2.149] | |||
Num.Obs. | 20 | 20 | 20 | ||||||
R2 Marg. | 0.303 | 0.420 | 0.355 | ||||||
R2 Cond. | 0.832 | 0.883 | 0.907 | ||||||
AIC | 118.7 | 111.8 | 123.3 | ||||||
BIC | 122.7 | 115.8 | 127.3 | ||||||
ICC | 0.8 | 0.8 | 0.9 | ||||||
RMSE | 0.05 | 0.07 | 0.06 | ||||||
The odds ratio of having been billed a GP mental health treatment plan 'MPTP', GP mental health consultation 'MH2713' or GP chronic disease management plan 'GPMP', according to concession card status and low-vs-high prevalence mental health condition (coHealth GP clinics, May 2025) |
<- list(
model_list "MHTP" = model_mhtp_grouped,
"MH2713" = model_mh2713_grouped,
"GPMP" = model_gpmp_grouped
)
modelplot(
models = model_list,
coef_map = c(
'conditionlow' = "Low-prevalence condition",
'concessionTRUE' = "Concession holder"
),exponentiate = TRUE
+
) labs(
x = "Odds ratio estimates and 95% confidence intervals",
y = "Predictors",
caption = "(coHealth GP clinics, May 2025)"
+
) scale_color_manual(values = wes_palette('Darjeeling1'))
A relatively high proportion of coHealth patients have high-prevalence and low-prevalence mental health conditions, but relatively few patients at coHealth with mental health conditions have had a recent billed mental health care plan (MHTP). Significantly fewer patients living with a mental health condition and who have a health concession card have had a MHTP compared to patients living with a mental health condition and who do not have a concession card. This suggests that socio-economic factors have a role in determining MHTP creation and billing. Patients with low-prevalence conditions are no more likely to have an MHTP than patients with high-prevalence conditions, although it is expected that low-prevalence conditions are often more severe and lifelong.
Low MHTP billing may reflect low patient demand or need or awareness of mental health treatment plans and/or access to private psychology services. However, patients with mental health conditions and concession cards were no less likely to have mental health consultations with the general practitioner or chronic disease management plans compared to patients without concession cards. Likewise, patients with low-prevalence mental health disorders were no less likely to have mental health consultations with the general practitioner or chronic disease management plans than patients with high-prevalence disorders. This suggests that identified needs exist and are catered for patients with concession cards or low-prevalence conditions, just not with an MHTP.
Barriers to doing an using an MHTP for patients with concession cards or low-prevalence mental health conditions may be due to the cost of accessing psychological services through an MHTP and the burden of creating an MHTP.
Low access to psychology services via MHTP may be related to patients having relatively few resources (‘inverse care law’18) e.g. pensioners and health care card holders. Barriers to access for those with the least resources but greater needs applies not only to mental health services, but also to other Medicare-funded allied health services19.
18 “The Inverse Care Law”, Julian Tudor Hart. The Lancet, Vol 297:7696 pp 405-412, 27 February 1971.
19 “A new Medicare: Strengthening general practice” Breadon, P., Romanes, D., Fox, L., Bolton, J., and Richardson, L. Grattan Institute, 2022
If mental health care plans offer an opportunity to plan for and review mental health care, including for patients with reduced resources, deliberate actions may need to be considered to improve uptake of mental health care plans among patients who already have reduced access to healthcare.
General practitioners at cohealth have suggested:
It could be possible to document a mental health treatment plan (MHTP) that is worthwhile for the patient and meet the criteria for a mental health treatment plan. If this could be done, then an MHTP could be prepared for many more patients, regardless of need for rebated private psychology.
Mental health treatment plan (MHTP) preparation can be done over several consults. Maybe preparation and ‘co-billing’ a mental health care plan could be done after taking care to appropriately document the time and plan. Nevertheless, the effort required would still be considerably more than, for example, general practitioner chronic disease management plans. There may be a role for large-language-model (LLM ‘AI’) assisted plan generation to help reduce the manual workload of MHTP creation.
Currently, clinic mental health nurses can help prepare mental health treatment plans. However, due to funding arrangements, clinic mental health nurse involvement is often limited to patients who are already referred (or at least, will be referred) to the clinic mental health nurse program.
Figures derived from Doctor’s Control Panel ‘Performance’ charts, for the four weeks starting from 28th April 2025. The charts are included below.
The total number of unique patients seen during that time period can be calculated from the numbers who are expected to have ‘Allergies Documented’, which is all patients seen. For cohealth, the figure is 5557+720 = 6277. For all practices which use Doctor’s Control Panel (‘national’), the figure is 245991+12826 = 258817.
The total number of unique patients seen during that time period considered eligible for a mental health treatment plan (because they have a recorded and coded mental health condition) can be calculated from the ‘MHTP’ (Mental Health Treatment Plan) bar. For cohealth, the figure is 43+441+1201+1441 = 3126, which is 49.8% of the total. For ‘national’ practices, the figure is 2455+16839+34885+36287 = 90466, which is 35.0% of the total.
The total number of unique patients seen during that time period who had an ‘up-to-date’ (i.e. within the previous twelve months) mental health treatment plan can be calculated from the ‘up-to-date’ and ‘updated’ sections of the MHTP bar. For cohealth, the figure is 43+441 = 484, which is 15.5% of patients with recorded mental health conditions. For ‘national’ practices, the figure is 2455 + 16839 = 19294, which is 21.3% of patients with mental health conditions.
PenCS was used to identify patients with recorded mental health conditions, whether the condition was high- or low- prevalence, concession card status, patient ‘activity’, MBS item numbers billed (mental health care plans, other mental health items or chronic disease management plans) and site of attendance. The Electronic Health Record (EHR) used was Best Practice, the data extract was done on 1st May 2025, a separate extract for each of five clinic sites (Kensington, Paisley Street, Laverton, Fitzroy and Collingwood). The period of interest is the one year from 1st May 2024 to 30th April 2025.
Patient activity:
Patient high- or low- prevalence mental health condition status
Patient concession card status
Patient mental health treatment plan or other item numbers
table1(
x = ~ mh2713 | clinic,
data = mh2713 |>
mutate(condition = factor(condition, label = c("High-prevalence", "Low-prevalence"))),
overall = c(left = "Total")
|>
) t1flex(tablefn = "flextable", cwidth = 0.85) |>
fontsize(size = 9, part = "all") |>
add_footer_lines(value = as_paragraph("coHealth clinics, May 2025, 'active' patients"))
| Total | Collingwood | Fitzroy | Kensington | Laverton | Paisley |
---|---|---|---|---|---|---|
Mental Health GP Consult | ||||||
Yes | 189 (7.4%) | 31 (5.9%) | 45 (6.3%) | 24 (5.3%) | 23 (14.0%) | 66 (9.5%) |
No | 2355 (92.6%) | 496 (94.1%) | 666 (93.7%) | 426 (94.7%) | 141 (86.0%) | 626 (90.5%) |
coHealth clinics, May 2025, 'active' patients |
table1(
x = ~ gpmp | clinic,
data = gpmp |>
mutate(condition = factor(condition, label = c("High-prevalence", "Low-prevalence"))),
overall = c(left = "Total"),
|>
) t1flex(tablefn = "flextable", cwidth = 0.85) |>
fontsize(size = 9, part = "all") |>
add_footer_lines(value = as_paragraph("coHealth clinics, May 2025, 'active' patients"))
| Total | Collingwood | Fitzroy | Kensington | Laverton | Paisley |
---|---|---|---|---|---|---|
Chronic Disease Management Plan | ||||||
Yes | 756 (29.7%) | 126 (23.9%) | 147 (20.7%) | 164 (36.4%) | 67 (40.9%) | 252 (36.4%) |
No | 1788 (70.3%) | 401 (76.1%) | 564 (79.3%) | 286 (63.6%) | 97 (59.1%) | 440 (63.6%) |
coHealth clinics, May 2025, 'active' patients |
plot(effects::allEffects(model_mhtp_grouped), ylab = "mhtp proportion")
plot(effects::allEffects(model_mh2713_grouped), ylab = "mh2713 proportion")
plot(effects::allEffects(model_gpmp_grouped), ylab = "gpmp proportion")