1 Overview
The PMA Rates Management admin console is a configuration tool. It is where the Akeso application-support team sets and maintains all the tariff pricing the billing system uses — for private (self-paying) patients, for medical-aid patients, and for special arrangements such as decaying per-diem psychiatric stays.
In plain terms: when a patient is billed anywhere in Akeso, the price that appears on the account was set here. This guide teaches you how to view, add and change those prices safely.
Who it is for
Access is granted per user by the Akeso team. Once you are given access and sign in, you are taken straight into the admin console. You do not need any software or coding background — everything is done through on-screen forms, tables and buttons.
What you can do with it
Manage prices
Set the price of every private tariff and every medical-aid rate table, per site, and apply an across-the-board increase in one action.
Map schemes to prices
Link each medical-aid scheme and plan to the correct rate table, including site-specific network arrangements.
Control change safely
Work in a draft, get it approved, then publish to production. Every change is captured in a full audit trail with a reason.
Check before you commit
Use the simulator to see what a bill would look like, and the coverage matrix to spot any gaps, before prices go live.
How pricing fits together
Two pricing worlds sit side by side, and both feed the billing system:
- Private pricing — a list of tariffs, and pricing rules that give each tariff a price per site.
- Medical-aid pricing — tariff codes priced inside rate tables; each scheme/plan is mapped to a rate table; networks and DPD agreements handle special cases.
The single most important idea in the whole console is the year and version selector, covered in Section 3 — it decides which prices you are looking at and whether you are allowed to edit them.
2 Getting started
Before you begin, the Akeso team must have granted your user account access to the admin console. If you can sign in but land nowhere, or a whole area is missing, that is an access question — see Troubleshooting.
Signing in
Open the console and sign in
Enter your username and password on the PMA Admin Console sign-in screen and select Login. Access is granted on a per-user basis, so use the credentials the Akeso team issued to you.
The dashboard — your starting point
The dashboard is the first screen you see. It is a read-only overview of everything configured for the currently selected year, so you can tell at a glance how much is set up and what has changed recently.
Read the headline counts
The four cards across the top summarise the configuration for the selected year:
- Private Pricing Rules — how many private price rules exist (and how many are active vs. draft).
- MA Rate Tables — the number of medical-aid rate tables.
- Scheme Mappings — how many scheme/plan-to-rate-table links exist.
- DPD Agreements — the number of decaying per-diem arrangements.
Any card can be clicked to jump to that area.
Use the breakdowns and audit trail
Below the cards, the Medical Aid Setup Pipeline shows the four sequential steps of medical-aid setup (tariff codes → schemes & plans → rate tables → rate mappings), each building on the one before. Further down, Private Rules by Revenue Stream and Rate Tables by Administrator group your data for reporting, and the Changelog / Audit Trail lists every change — who made it, when, and the reason they gave.
3 Years & versions — read this first
The console keeps a separate set of prices for each year, and within a year it keeps numbered versions. The selector at the top-left of the sidebar controls which one you are viewing. Every screen in the console filters by this selection.
The version lifecycle
A version moves through a controlled lifecycle so live prices can never be changed by accident:
| Status | What it means |
|---|---|
| Draft | Fully editable. This is where you do all your work. |
| Approved | Locked for review. No further edits until a new draft is created. |
| Production | The live version the billing system reads and that exports are taken from. |
| Superseded | A previous production version, kept for history and comparison. |
Viewing a different year or an older version
Pick the year, then the version
Use the year dropdown (e.g. 2026) at the top of the sidebar to choose the year. Use the version dropdown below it to choose a version — the current one is marked Production. Selecting an older version lets you view exactly what the price file looked like then. It opens read-only; switch back to the latest version when you are done looking.
Starting work: create a draft
Create a New Draft
When you want to start changing prices — for example to build next year's rates, or to correct this year's — select + New Draft. Give the draft a clear Version Label (for example "2026 Rate Adjustment") so others can recognise it, then select Create Draft. The draft is a full editable copy; the live version keeps running untouched until you publish.
Edit, approve, then publish
With the draft selected you can update any tariff, rule or rate table. When the draft is complete and checked, it is approved and then published to production (the Publish button in the sidebar), at which point it becomes the live price file and the previous version is superseded.
4 Configuration
The Configuration area holds the building blocks that the rest of the console refers to: the sites (facilities), the revenue streams used for reporting, and the admission auto-billing rules. Set these up first, because tariffs and rules point back to them.
4.1 Sites
Sites are the Akeso facilities. Site-specific prices and "applicable site" choices everywhere else in the console draw from this list.
Review the site list
Go to Configuration → Sites. Each row shows the site name, its Region, a Status (active/inactive), and whether admission billing is switched on for that site, plus edit and deactivate controls.
Add or edit a site
Select + Add Site to create a new facility, or the pencil icon to edit an existing one. You can change the Site Name and Region. Deactivating a site hides it from new selections but keeps its history intact.
4.2 Revenue streams
A revenue stream is a reporting bucket. Every tariff you define — private or medical-aid — is assigned to one, so that billed amounts can be aggregated in reports (for example all "Bed Income" together, all "Pharmacy" together).
Review and add revenue streams
Go to Configuration → Revenue Streams. Examples already defined include Bed Income, General With Overnight, Medical Aid Per Diems, Fixed Fee, Private Fixed Fees and Gases. Streams are grouped by an index number so related ones roll up together in reports. Select + Add Stream and give it an ID, index and label to create a new one.
4.3 Admission auto-billing
Admission auto-billing saves manual work: when an admission is created, the console automatically adds the standard opening charges to the patient's file and increments them each day of the stay (in half-day blocks). Which charges get added depends on a combination of Patient Type × Account Type × Billing Type.
See which rules are configured
Go to Configuration → Admission Auto-Billing. Each row is one rule, identified by its Patient Type, Account Type and Billing Type. In the demo three rules are configured — for a medical-aid fee-for-service inpatient, a medical-aid per-diem inpatient, and a private per-diem inpatient.
Open a rule to see its charge lines
Select a rule to open its editor. Each tariff line specifies the code, a quantity (for example 0.5 for a half day), whether it is Billable or Non-billable, the pricing basis (Medical Aid / Private), and whether it auto-increments each day. For example, a medical-aid per-diem admission seeds 55003 — Per Diem Overnight Fee (billable) and 55004 — General with overnight (non-billable), both at 0.5 and auto-incrementing. Add or remove lines with + Add line, tick Enabled, enter a Reason, and select Save changes.
5 Private pricing
Private pricing has two parts: the tariffs (the list of billable items) and the pricing rules (what each tariff costs, per site). A tariff is just a code and a name; it only gets a price once a rule is attached to it.
5.1 Tariffs
Browse the tariff list
Go to Private Pricing → Tariffs. Each row shows the tariff code, its description, the revenue stream it belongs to, and a Rules count of how many pricing rules reference it. Tariffs are grouped by revenue stream, and you can search by code or description.
Add a tariff
Select + Add Tariff and complete the form:
- Code and Description — the identifier and human-readable name.
- Revenue Stream — pick the reporting bucket.
- Auto-increment (half-day ward billing) — when ticked, the console bills this ward code automatically in half-day blocks for the length of stay.
- Quantity mode — how the quantity is worked out: Recalculate from start date (based on how long the patient has been in) or from the initial captured quantity.
- Billing date — which date the line item is billed on (for example the charge start date vs. the date of last update).
Select Add Tariff to save.
5.2 Pricing rules
A pricing rule sets the price of one tariff, at one or more sites. When a patient is billed, the console looks for a site-specific rule first; if none exists for that site, it falls back to the ALL (default) rule.
Read a rule
Go to Private Pricing → Pricing Rules. Each rule shows the tariff code, the Price (Local) and Price (Intl), the applicable sites, the effective dates and the status. For example, rule AK5004 prices a tariff at R1 422.90 local and international, applicable to two sites, effective from 1 January and currently Active. Another rule, AK9008 (full-day outpatient — private), applies at a single site only.
Use the view switch to see the same data as a List, a Matrix (next heading), or Year-over-Year.
Add or edit a rule
Select a row (or + Add Rule) to open the rule editor panel. Set the Tariff, Price Local and Price Intl, choose the Applicable Sites (tick ALL sites for a default rule, or select specific sites for an override), set the effective dates and the Status (Draft / Active / Archived). There is a quick percentage adjust box for one-off tweaks. Enter a Reason and Save.
5.3 The matrix view & bulk increases
Use the matrix to spot outliers
Switch the pricing-rules view to Matrix. It lays out every tariff (down the side, by description) against every site (across the top) and shows the price that will actually be used at each site. Blank cells mean no rule sets a price for that tariff at that site; highlighted cells flag where a site's price differs from the others, so outliers are easy to see.
Apply a bulk price increase
To raise many prices at once (for example an annual increase), select Bulk Increase. Choose the Category — All Categories or a single revenue stream — enter the Percentage (for example 6.5), review the preview of affected rules, and select Apply Increase. Each price is recalculated as old × (1 + percent/100), rounded to two decimals; rules priced at zero are skipped. Enter a reason when prompted.
6 Medical aid
Medical-aid pricing is a chain: tariff codes are priced inside rate tables; each scheme & plan is mapped to a rate table; and networks, the coverage matrix and DPD agreements handle site-specific and psychiatric arrangements. Set them up in that order.
6.1 Tariff codes
Review medical-aid tariff codes
Go to Medical Aid → Tariff Codes. These are the billable items every rate table prices. Each has a code, a description and a revenue stream, grouped by revenue-stream index — exactly like private tariffs. Adding a new code (+ Add Code) makes it appear in every rate table at R0.00, ready for you to price per table.
6.2 Schemes & plans
Find a scheme and see its plans
Go to Medical Aid → Schemes & Plans. Schemes are listed down the left; select one (for example CAMAF HL) to see its plans on the right and, crucially, the rate table each plan uses. The rate table is what determines the actual prices for that plan.
6.3 Rate tables
A rate table holds the price for each tariff code for a particular administrator or billing arrangement. Many scheme plans can share one rate table.
Open a rate table
Go to Medical Aid → Rate Tables. The list shows each table's ID, administrator, billing type (Fee for Service or Per Diem), total value, how many codes are filled and its status. Select a table to open its detail page. For example, a Discovery fee-for-service rate table is used by 38 plans.
Edit the prices in a table
On the detail page the prices are listed per tariff line, grouped by revenue stream. Select Edit Prices, change the amounts inline (changed rows highlight so you can see what you touched), then Save Changes and enter a reason. A Bulk Increase here raises every price in the table (or one revenue stream) by a percentage, and a list-level Bulk Increase All does the same across every table for the year.
6.4 Rate mappings
A mapping is the link that says "this scheme/plan uses this rate table, for this period". The mappings screen is your overview of where every arrangement points.
Review the mappings
Go to Medical Aid → Rate Mappings. Each row shows the scheme, the plans it covers, the rate table, the network (if any), whether it is active, and the effective from/to dates.
Create or reassign a mapping
Select + New Mapping, pick the scheme and the plans, choose the rate table, optionally pick a network tier (leave blank for a default mapping), set the period, and save with a reason. To move a plan onto a different table mid-year, create a second mapping — one for the first part of the year, one for the second — so the effective periods don't overlap.
6.5 Networks, scheme matrix & coverage
Some schemes price differently depending on the site a patient is at (a network or DSP arrangement). Networks, the scheme matrix and the coverage matrix are the tools for setting that up and checking it.
Define a network and its tiers
Go to Medical Aid → Networks. A network group contains tiers; each tier links a rate table to a set of applicable sites (and a co-payment). When a plan is mapped with a network tier, patients at the tier's sites are priced from the tier's rate table; at other sites the plan falls back to its default mapping.
Open a network to view its tiers
Select a network (for example Discovery Network 2026) to see the tiers it contains, the rate table each uses and the sites it applies at.
Cross-check with the scheme matrix
The Scheme Matrix (Medical Aid → Scheme Matrix) gives a single grid of every scheme/plan against the tariffs, showing which rate table and price will be used — the medical-aid equivalent of the private pricing matrix, for spotting anomalies quickly.
Check coverage for gaps
The Coverage screen shows, for every plan (rows) against every active site (columns), how it resolves: N = a network-tier override, D = the default mapping, — = no coverage. Summary cards count plans, sites, network overrides and coverage gaps. A gap in red means those patients cannot be billed — treat any gap as action required and fix the mapping. In the demo, some sites (for example Alberton and Acadia) carry a Discovery Keycare network-tier mapping that others don't.
6.6 DPD billing (decaying per diem)
DPD, or decaying per diem, is a special medical-aid arrangement for psychiatric admissions (diagnoses F31 bipolar, F32 depression, F33 recurrent depression). The daily rate decays: the first period (days 1–7) pays more than the second period (days 8–21). DPD overlays the normal rate table.
Review the global DPD configuration
Go to Medical Aid → DPD Billing and open the Config tab. Here are the global rules: length-of-stay is measured in 12-hour blocks (AM 00:00–11:59, PM 12:00–23:59), a minimum stay is required for DPD to apply, certain ICD categories and tariff codes are excluded, the stay caps at 21 days, and the patient's age is taken at the admission date. Select Edit Config to change the conversion parameters.
Open an agreement
On the Agreements tab, each row is a scheme's DPD arrangement. Open one (for example the Discovery decaying-per-diem agreement) to see the date range it is valid for and which scheme plans are mapped to it — one agreement can cover dozens of plans.
Set the decaying rate grid
Inside an agreement, the rate grid defines the tariffs and prices used for each combination of diagnosis (F31 / F32 / F33), age bracket (<18, 18–29, 30+) and period (days 1–7 vs. days 8–21). Edit the linked schemes/plans, the applicable sites, and the prices as required, saving with a reason.
7 Simulator — test before you publish
The simulator runs the full billing calculation against your current configuration, so you can confirm a bill comes out as expected before the prices go live. It is the safest way to sanity-check a change.
Build a test case
Go to Simulator. Choose Private or Medical Aid mode and fill in the scenario: the site, the tariff lines (code + quantity) and, for medical aid, the scheme/plan, patient age, admission and discharge dates, and ICD codes. Select Run Simulation.
Read the result and the trace
The result shows each line item with its resolved price and revenue stream, the scheme → plan → rate-table resolution chain, any DPD eligibility, and the total billed amount, plus a full evaluation trace you can expand. In the example shown, a bill with two lines is evaluated and the trace explains that the patient's ICD code is not DPD eligible, so no decaying per-diem is applied.
Save test cases for regression checks
Select Save Test Case to keep a scenario, optionally with an expected total. On the Test Cases tab you can Run All to re-check every saved case at once — green means it matches the expected total, red means it doesn't — and import/export the cases as JSON.
8 Exports
When a version is ready, the console exports the data for two audiences: people (readable CSV files for review) and the billing system (JSON files it can ingest directly).
Download the export you need
Go to System Exports. CSV exports are for stakeholder review (pricing rules, the pricing matrix, rate tables, scheme plans and mappings, DPD agreements and rates). JSON exports marked "System" are the machine format for the backend. Pick a row and download it.
version_id. The exact contents weren't detailed in the demo — confirm with A2D24 before wiring anything downstream.9 Common workflows
The everyday jobs, as ordered checklists. Each assumes you are working in a Draft version (Section 3) and will publish when done.
Annual rate update
- Create a new Draft for the year (or roll forward — confirm the roll-forward steps with A2D24).
- Apply bulk increases to private pricing rules and to medical-aid rate tables (filter by revenue stream if the increase differs).
- Review the Year-over-Year views and adjust individual prices.
- Update DPD rates where they change.
- Run your saved simulator test cases.
- Set statuses to Active, get the draft approved, then publish.
- Export the CSV for review and the JSON for the backend.
Onboard a new medical aid
- Create the rate table and set its prices, then activate it.
- Create the scheme and plans (one plan per option offered).
- Create the mapping(s) linking the plans to the rate table.
- If pricing varies by site, add a network group + tier and a network mapping.
- Add a DPD agreement if the scheme has one.
- Verify in the simulator and check the coverage matrix for gaps.
Move a scheme onto a different rate table
- Go to Rate Mappings and find the mapping.
- Reassign it to the new rate table (or create a new mapping with the correct effective dates).
- Verify in the simulator.
Add a new tariff and price it
- Private: add the tariff in Private Pricing → Tariffs, then add pricing rules per site. Medical aid: add the code in Medical Aid → Tariff Codes — it appears in every rate table at R0.00 — then set its price on each table.
- Verify in the simulator.
10 Troubleshooting & escalation
| Symptom | Likely cause | What to do |
|---|---|---|
| I can't edit anything — fields are greyed out | You are viewing a locked Production or Approved version | Create a New Draft (Section 3) and make your changes there. |
| My change isn't reflected in a bill or the simulator | The rule/table is still Draft or Archived | Set its status to Active — only active records are used. |
| A price shows blank in the matrix | No rule sets a price for that tariff at that site | Add a site-specific rule, or an ALL default rule to cover it. |
| The coverage matrix shows a red "—" (gap) | A plan has no rate table at that site | Add or fix the mapping — those patients cannot be billed until you do. |
| A patient wasn't billed the decaying per-diem | The ICD code is on the DPD excluded list, or the stay was below the minimum | Check the DPD Config tab and the simulator's evaluation trace. |
| A tariff appears in the wrong report bucket | It is assigned to the wrong (or the default Other) revenue stream | Edit the tariff/code and set the correct revenue stream. |
| I can't find a scheme or plan | Hundreds exist; scrolling won't find it | Use the search box on the Schemes & Plans screen. |
11 FAQ
Will my edits change live prices immediately?
No. You edit in a Draft. Live prices only change when a draft is approved and published to Production.
What's the difference between a tariff and a pricing rule?
A tariff is the item (a code and a name). A pricing rule gives that tariff a price, at one or more sites. A tariff with no rule has no price.
How does the console decide which price to use for a site?
It looks for a site-specific rule first; if there isn't one, it uses the ALL (default) rule.
What does "decaying per diem" mean?
For certain psychiatric admissions the daily rate reduces after the first week — days 1–7 pay a higher rate than days 8–21. The DPD screens configure this.
Why must I enter a reason when I save?
Every change is recorded in the audit trail with who, when and why. The reason makes the history meaningful when someone reviews it later.
Should I export from a draft or production?
Take system (JSON) exports from a Production version — it is the billing system's source of truth. CSV review copies can be taken from a draft while you check your work.
Can I see what prices looked like last year?
Yes — pick the year and the older version in the sidebar. It opens read-only.
12 Glossary
| Term | Meaning |
|---|---|
| PMA | The Akeso application this admin console configures pricing for. |
| Tariff / tariff code | A billable item — a code and description. Priced by rules (private) or rate tables (medical aid). |
| Pricing rule | Sets a private tariff's price (local and international) for one or more sites, with effective dates and a status. |
| Rate table | A set of prices for medical-aid tariff codes, for a particular administrator or arrangement. IDs start RT_. |
| Scheme / plan | A medical aid (scheme) and the specific option a member is on (plan). Each plan maps to a rate table. |
| Mapping | The link between a scheme/plan and the rate table it uses, for a given period. |
| Network / tier | A site-specific (DSP) arrangement. A tier links a rate table to specific sites for a network. |
| Coverage matrix | A grid showing how each plan resolves at each site: network (N), default (D) or no coverage (—). |
| Revenue stream | A reporting bucket every tariff is assigned to, so billed amounts aggregate in reports. |
| DPD (decaying per diem) | A psychiatric-admission arrangement where the daily rate decreases after the first week (days 1–7 vs. 8–21). |
| Admission auto-billing | Rules that automatically add opening charges when an admission is created, incrementing each day. |
| Version (Draft / Approved / Production) | The controlled lifecycle of a price file. You edit drafts; production is live and locked. |
| Fee for service (FFS) / Per diem | Two billing types: pay per item (FFS) or a daily rate (per diem). |
| Audit trail | The changelog of every edit — who, when, old → new, and the reason. |
★ One-page quick reference
Before you touch anything
- Check the year + version in the sidebar. Locked banner = Production. To edit, create a + New Draft.
- Do all work in the draft. Save each change with a reason.
- Set records to Active — only active rules/tables are used.
- Run simulator test cases, then approve and publish to production.
- Export: CSV for review, JSON (from Production) for the backend.
Where things live
- Private price → Private Pricing → Pricing Rules (site-specific first, else ALL).
- Annual increase → Bulk Increase (rules) / Bulk Increase All (rate tables).
- Medical-aid price → Rate Tables → Edit Prices; link via Rate Mappings.
- Site-specific MA price → Networks (tier = rate table + sites); check Coverage.
- Psychiatric decaying rate → DPD Billing (Config + Agreement rate grid).
- Something wrong? → Simulator evaluation trace, then escalate to A2D24.