The two billion-rand heist: How syndicates bled Tembisa Hospital dry
The Special Investigating Unit (SIU) has uncovered a staggering R2 billion looting scheme inside Gauteng’s healthcare system, exposing three powerful syndicates behind the plunder of funds meant for Tembisa Hospital.
Money meant to serve the province’s most vulnerable patients was instead funneled through a maze of fraud, inflated contracts, and collusion between officials and service providers. The SIU calls it one of the most serious betrayals of public trust in years.
The release of the report comes four years after Babita Deokaran, a senior finance official in Gauteng’s Health Department, was assassinated on 23 August 2021 in what many believe was a targeted killing linked to her whistle-blowing on large-scale corruption at Tembisa Hospital.
In the months before her murder, she uncovered irregular, inflated or fraudulent payments linked to Tembisa Hospital and flagged them for investigation
In its interim report, the SIU details how the investigation into Tembisa Hospital has grown in scope and complexity, forcing deeper scrutiny of every transaction.
Despite the scale of the cover-up, investigators have already traced a trail of irregular deals, forged documents, and corrupt payments involving key figures in the Gauteng Department of Health (GDoH) and hospital leadership.
Working closely with the Minister of Health, the SIU’s probe has also unearthed related wrongdoing in other sectors, including Home Affairs and Medico-Legals. These links helped investigators map broader patterns of graft that extend beyond a single hospital.
So far, the SIU has zeroed in on three coordinated syndicates accused of siphoning off the funds. A review of more than 2,200 procurement bundles revealed extensive manipulation of supply chain processes, kickbacks, and mismanagement.
The findings paint a grim picture of systemic rot inside Tembisa Hospital and the structures meant to safeguard public money.
/* ———- Theme (scoped to .tembisa) ———- */
.tembisa
–blue:#0B3954;
–teal:#087E8B;
–ltblue:#BFD7EA;
–pink:#FF5A5F;
–red:#C81D25;
–ink:#111827;
–muted:#6B7280;
–surface:#F7F8FA;
–shadow:0 10px 25px rgba(0,0,0,.08), 0 4px 10px rgba(0,0,0,.06);
–radius:18px;
–container:1200px;
/* ———- Global + Anti-bleed reset ———- */
.tembisa *, .tembisa *::before, .tembisa *::after box-sizing: border-box;
.tembisa, .tembisa #infographic-content, .tembisa .container width:100%; max-width:100%; overflow:visible;
.tembisa .card overflow:hidden;
.tembisa canvas, .tembisa img, .tembisa svg display:block; max-width:100%; height:auto;
/* ———- Layout ———- */
.tembisa #infographic-content
font: 16px/1.55 system-ui, -apple-system, Segoe UI, Roboto, Ubuntu, “Helvetica Neue”, Arial, sans-serif;
color: var(–ink);
background: transparent;
.tembisa .container max-width: var(–container); margin: 0 auto; padding: 16px;
@media (min-width:768px) .tembisa .container padding: 32px
.tembisa .text-center text-align: center;
.tembisa .section margin-bottom: 48px;
@media (min-width:768px) .tembisa .section margin-bottom: 64px
.tembisa .card
background: var(–surface);
border-radius: var(–radius);
box-shadow: var(–shadow);
padding: 24px;
@media (min-width:768px) .tembisa .card padding: 32px
/* ———- Header ———- */
.tembisa .page-title
margin: 0 0 8px 0; font-weight: 900; text-transform: uppercase; letter-spacing: .08em;
color: var(–blue); font-size: 2.25rem;
.tembisa .page-subtitle margin: 0; color: var(–red); font-weight: 800; font-size: 1.5rem;
.tembisa .page-intro margin: 16px auto 0; max-width: 60ch; font-size: 1.125rem;
@media (min-width:768px)
.tembisa .page-title font-size: 3.5rem
.tembisa .page-subtitle font-size: 2.25rem
/* ———- KPI Grid ———- */
/* KPI Grid – force 2×2 layout on larger screens */
.tembisa .kpi-grid
display: grid;
grid-template-columns: 1fr;
gap: 24px;
@media (min-width:576px)
.tembisa .kpi-grid
grid-template-columns: repeat(2, 1fr);
/* Stay 2×2 even on desktop instead of going 4 across */
@media (min-width:1024px)
.tembisa .kpi-grid
grid-template-columns: repeat(2, 1fr);
.tembisa .kpi-card h3 color: var(–blue); margin: 0 0 6px
.tembisa .kpi-card p color: var(–pink); margin: 0; font-weight: 900; font-size: 2rem;
.tembisa .kpi-card h3, .tembisa .kpi-card p word-wrap: break-word; overflow-wrap: anywhere;
/* ———- Grids ———- */
.tembisa .grid-two display:grid; grid-template-columns: minmax(0,1fr); gap:32px;
@media (min-width:1024px)
.tembisa .grid-two grid-template-columns: minmax(0,1fr) minmax(0,1fr);
.tembisa .grid-three display:grid; grid-template-columns: minmax(0,1fr); gap:32px;
@media (min-width:768px)
.tembisa .grid-three grid-template-columns: repeat(3, minmax(0,1fr));
/* ———- Buttons ———- */
.tembisa .btn
appearance: none; border: 0; border-radius: 12px; padding: 10px 16px; font-weight: 700; cursor: pointer;
transition: transform .12s ease, box-shadow .12s ease, background-color .2s ease, color .2s ease;
background: #E5E7EB; color: var(–blue); box-shadow: 0 2px 4px rgba(0,0,0,.06);
.tembisa .btn:hover transform: translateY(-1px); box-shadow: 0 6px 12px rgba(0,0,0,.08)
.tembisa .btn:active transform: translateY(0)
.tembisa .btn-group display:flex; justify-content:center; gap:12px; margin-bottom:16px
.tembisa .active-btn background-color: var(–red) !important; color: #fff !important;
box-shadow: 0 4px 6px -1px rgba(0,0,0,.1), 0 2px 4px -2px rgba(0,0,0,.1);
/* ———- Charts ———- */
.tembisa .chart-container
position: relative; width: 100%; max-width: 100%;
margin-left: auto; margin-right: auto;
height: clamp(260px, 42vw, 420px);
@media (min-width:768px) .tembisa .chart-container height: clamp(320px, 40vh, 450px)
/* ———- Flow / Modus ———- */
.tembisa .flow-row display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 16px;
@media (min-width:768px) .tembisa .flow-row flex-direction: row; gap: 24px; align-items: stretch;
.tembisa .flow-step
border: 2px dashed var(–teal); border-radius: 14px; padding: 16px; text-align: center;
flex: 1 1 0; min-width: 0;
.tembisa .flow-step .num font-size: 3rem; font-weight: 900; color: var(–teal); line-height: 1;
.tembisa .flow-step–alert border-color: var(–red); background: #FEF2F2;
.tembisa .flow-step–alert .num color: var(–red)
.tembisa .flowchart-arrow font-size: 2rem; color: var(–teal); line-height: 1; transform: rotate(90deg);
@media (min-width:768px) .tembisa .flowchart-arrow transform: rotate(0deg)
/* ———- Typography helpers ———- */
.tembisa .h2 font-size: 2rem; font-weight: 800; margin: 0 0 8px; color: var(–blue)
.tembisa .h3 font-size: 1.25rem; font-weight: 700; margin: 0 0 12px
.tembisa .muted color: var(–muted)
.tembisa .lead max-width: 70ch; margin: 0 auto 24px;
.tembisa .section.card > p[style*=”font-size”] line-height:1.05; word-break:break-word;
/* ———- Footer ———- */
.tembisa .footer text-align: center; margin-top: 48px; padding-top: 24px; border-top: 2px solid var(–blue);
.tembisa .footer .credit max-width: 60ch; margin: 8px auto 20px
.tembisa .footer .note color: #374151; font-size: .95rem
Tembisa Hospital
Interim Investigation Report
An infographic summary of the Special Investigating Unit’s (SIU) findings
on systemic corruption, fraud, and the misappropriation of public
healthcare funds.
Total Value Under Investigation
R2.043 Billion
This staggering amount covers 4,501 Purchase Orders (POs) linked to 207
implicated service providers, revealing widespread maladministration and
procurement fraud.
Corrupt Payments to Officials
R122.2M
Implicated Service Providers
207
Officials Implicated
15+
Disciplinary Referrals
116
The Syndicate Web: A Breakdown
Major Syndicate Values (Reviewed)
The investigation has traced three primary syndicates responsible for
the majority of the misappropriated funds, with assets including
luxury properties and vehicles being preserved.
Minor Syndicate Payments
In addition to the major players, at least six smaller syndicates were
identified, collectively receiving over R150 million through corrupt
activities.
Modus Operandi: Smoke & Mirrors
The core finding is shocking: no goods were ever delivered. The entire
procurement process was a sham designed to loot public funds. This was
achieved by systematically bypassing regulations and exploiting system
weaknesses.
Order Splitting
Transactions were kept below R500,000 to evade competitive tender
processes.
Collusion & Fronting
“Competing” bidders were secretly linked, creating a fake competitive
process.
False Verification
Officials recorded goods as “received” in the system without any
actual delivery.
Anomalous Expenditure vs. Patient Load
Analysis of medical supply expenditure revealed a massive, unjustified
spike that did not correlate with patient admission numbers. Spending
plummeted by 73% only after the investigation began, exposing the scale of
the looting.
Accountability & Action Taken
Disciplinary Referrals
116 referrals prepared against 13 officials for maladministration and
irregular appointments.
Criminal Referrals (NPA)
4 high-value corruption cases referred to the NPA, totalling R42.2M in
traced payments to officials.
Regulatory Referrals
25 matters referred to SAHPRA concerning contraventions of the
Medicines Act.
(function (w, d) {
// Single namespace across loads
const ns = (w.tembisa = w.tembisa || );
// Reuse or create palette once
ns.palette = ns.palette ||
darkBlue: “#0B3954”,
teal: “#087E8B”,
lightBlue: “#BFD7EA”,
hotPink: “#FF5A5F”,
darkRed: “#C81D25″,
;
// Local helpers (scoped to this IIFE – no globals)
function tooltipPlugin() {
return {
plugins:
tooltip:
callbacks:
title: function (items)
const it = items[0];
const label = it.chart.data.labels[it.dataIndex];
return Array.isArray(label) ? label.join(” “) : label;
,
,
,
,
};
}
function wrapLabels(label)
const max = 16;
if (typeof label !== “string”
if (curr) lines.push(curr);
return lines;
}
// Data (scoped)
const majorSyndicateData =
reviewed:
label: “Value Reviewed (in Millions)”,
data: [816.5, 596.4, 283.5],
color: [ns.palette.darkBlue, ns.palette.teal, ns.palette.hotPink],
caption:
“The investigation has traced three primary syndicates responsible for the majority of the misappropriated funds, with assets including luxury properties and vehicles being preserved.”,
,
payments:
label: “Direct Payments to Officials (in Millions)”,
data: [45.2, 38.1, 15.5],
color: [ns.palette.darkRed, ns.palette.darkRed, ns.palette.darkRed],
caption:
“Click to see the estimated portion of funds from these syndicates that were traced back as direct corrupt payments to implicated officials.”,
,
;
// Build charts only once
if (!ns.majorSyndicatesChart) {
const ctx = d.getElementById(“majorSyndicatesChart”);
if (ctx) {
const tt = tooltipPlugin();
ns.majorSyndicatesChart = new Chart(ctx.getContext(“2d”), {
type: “bar”,
data:
labels: [“Maumela Syndicate”, “Syndicate X”, “Mazibuko Syndicate”],
datasets: [
label: majorSyndicateData.reviewed.label,
data: majorSyndicateData.reviewed.data,
backgroundColor: majorSyndicateData.reviewed.color,
borderColor: “#ffffff”,
borderWidth: 2,
,
],
,
options:
…tt,
indexAxis: “y”,
responsive: true,
maintainAspectRatio: false,
scales:
x:
beginAtZero: true,
title: display: true, text: majorSyndicateData.reviewed.label ,
,
,
plugins: …tt.plugins, legend: display: false ,
,
});
}
}
if (!ns.minorSyndicatesChart) {
const ctx = d.getElementById(“minorSyndicatesChart”);
if (ctx) {
const tt = tooltipPlugin();
ns.minorSyndicatesChart = new Chart(ctx.getContext(“2d”), {
type: “bar”,
data:
labels: [
“Syndicate B”,
“Syndicate D”,
“Syndicate F”,
“Syndicate A”,
“Syndicate C”,
“Syndicate E”,
].map(wrapLabels),
datasets: [
label: “Total Payments (in Millions)”,
data: [76.4, 37.5, 28.9, 9.6, 8.6, 3.3],
backgroundColor: [
ns.palette.teal,
“#3a9ba4”,
“#5caab0”,
“#7dc0bb”,
“#9dd5c7”,
“#bdebd3”,
],
borderColor: “#ffffff”,
borderWidth: 1,
,
],
,
options:
…tt,
indexAxis: “y”,
responsive: true,
maintainAspectRatio: false,
scales:
x: beginAtZero: true, title: display: true, text: “Value in ZAR (Millions)” ,
,
plugins: …tt.plugins, legend: display: false ,
,
});
}
}
if (!ns.expenditureTrendChart) {
const ctx = d.getElementById(“expenditureTrendChart”);
if (ctx) {
const tt = tooltipPlugin();
ns.expenditureTrendChart = new Chart(ctx.getContext(“2d”), {
type: “line”,
data:
labels: [“2018/19”, “2019/20”, “2021/22”, “2022/23”, “2023/24”],
datasets: [
label: “Expenditure (ZAR Millions)”,
data: [315.3, 598.6, 979.2, 948.1, 255.1],
borderColor: ns.palette.darkRed,
backgroundColor: “rgba(200, 29, 37, 0.2)”,
fill: true,
tension: 0.3,
yAxisID: “y”,
,
label: “Inpatient Admissions”,
data: [110000, 115000, 105000, 108000, 112000],
borderColor: ns.palette.darkBlue,
backgroundColor: “rgba(11, 57, 84, 0.1)”,
fill: false,
tension: 0.3,
yAxisID: “y1”,
,
],
,
options:
…tt,
responsive: true,
maintainAspectRatio: false,
scales:
y:
type: “linear”,
display: true,
position: “left”,
title: display: true, text: “Expenditure (ZAR Millions)” ,
,
y1:
type: “linear”,
display: true,
position: “right”,
title: display: true, text: “Inpatient Admissions” ,
grid: drawOnChartArea: false ,
,
,
,
});
}
}
// Doughnut charts
const commonDoughnutOptions =
responsive: true,
maintainAspectRatio: false,
cutout: “70%”,
plugins: legend: display: false ,
;
if (!ns.disciplinaryChart) {
const ctx = d.getElementById(“disciplinaryChart”);
if (ctx)
ns.disciplinaryChart = new Chart(ctx.getContext(“2d”),
type: “doughnut”,
data:
labels: [“Referrals Prepared”, “Officials”],
datasets: [
data: [116, 13],
backgroundColor: [ns.palette.darkBlue, ns.palette.lightBlue],
,
],
,
options: commonDoughnutOptions,
);
}
if (!ns.npaChart) {
const ctx = d.getElementById(“npaChart”);
if (ctx)
ns.npaChart = new Chart(ctx.getContext(“2d”),
type: “doughnut”,
data: labels: [“Matters Referred”], datasets: [ data: [4], backgroundColor: [ns.palette.teal] ] ,
options: commonDoughnutOptions,
);
}
if (!ns.sahpraChart) {
const ctx = d.getElementById(“sahpraChart”);
if (ctx)
ns.sahpraChart = new Chart(ctx.getContext(“2d”),
type: “doughnut”,
data: labels: [“Matters Referred”], datasets: [ data: [25], backgroundColor: [ns.palette.hotPink] ] ,
options: commonDoughnutOptions,
);
}
// Public updater (one stable name)
ns.updateMajorSyndicatesChart = function (type)
const chart = ns.majorSyndicatesChart;
if (!chart) return;
const ds = majorSyndicateData[type] ;
// Backwards-compatible alias for existing inline onclicks
if (!w.updateMajorSyndicatesChart)
w.updateMajorSyndicatesChart = (…a) => ns.updateMajorSyndicatesChart(…a);
// One-time default state
if (!ns.__initializedMajor)
ns.__initializedMajor = true;
const btn = d.getElementById(“btnReviewed”);
if (btn) btn.click();
})(window, document);
Insight into the syndicates
The first identified syndicate, known as the Maumela Syndicate led by Hangwani Morgan Maumela.
Maumela, a businessman linked to President Cyril Ramaphosa through a previous marriage, is the key target in a major investigation into corruption at Tembisa Hospital.
Ramaphosa has denied knowing Maumela.
Maumela has been linked to the misappropriation of R816,560,710 through at least 1,728 bundles. The syndicate has ties to 41 suppliers and service providers, with significant assets amounting to approximately R520 million, including luxury properties and high-end vehicles.
Following closely is the Mazibuko Syndicate, associated with Rudolph Mazibuko, which has been linked to R283,504,291 in fraudulent activities and has implications across multiple properties in Gauteng and the Western Cape.
Additionally, a third group—referred to as Syndicate X—is under scrutiny for R596,424,356 in procurement bundles, with indications of money laundering and numerous procurement irregularities.
Moreover, the investigation highlights smaller syndicates that form a complex network of corruption, illustrating the interconnected web of illicit interactions among officials and service providers.
Collusion and corruption
According to the SIU’s findings, corrupt payments linking officials and employees of GDoH and Tembisa Hospital are valued at R122 million. At least 15 current and former officials have been implicated in activities ranging from corruption and money laundering to collusion and bid rigging.
Notably, the bulk of the corrupt practices has involved lower-level officials, suggesting a systematic issue that allows junior employees to manipulate procurement processes without adequate oversight.
In a remarkable display of the investigation’s gravity, the SIU has prepared 116 disciplinary referrals against these implicated officials, showcasing the department’s relentless pursuit of accountability. Several referrals relate to the irregular appointment of service providers and maladministration, raising serious questions about governance failure and ethical breaches within the healthcare system.
Recommendations for reform
The SIU report highlights the necessity of systemic reform. Recommendations include rigorous vetting processes for officials, lifestyle audits, and protective measures for whistle-blowers to ensure transparency in operations.
The report asserts the urgent need for a shift in culture among government employees to foster integrity and accountability.
As the investigation progresses, the SIU is determined to follow the money trail and pursue justice with the collaboration of law enforcement agencies, including the National Prosecuting Authority and the Financial Intelligence Centre.
The scope of these efforts emphasizes a collective commitment within the government to address deep-rooted corruption that affects vital public services.
IOL