Strategic Pricing
Set up a chargemaster repricing study, read its tabs and pricing model, move the levers, run the tactical review, export.
These tools run a Strategic Pricing study end to end. The assistant is walked through them by strategic_pricing_next_step and by the next_step on every result. Setup tools are free; the results tools return 5 rows with every dollar figure hidden on a free account; exports need the Strategic Pricing service.
strategic_pricing_next_step
What to call next for a study, or the whole walk when no study is named.
| Parameter | Type | Default | What it does |
|---|---|---|---|
study_id | string | none | The study id, as returned by the create tool or the list tool of that study kind. |
find_or_create_owner
The hospital or health system whose chargemaster is repriced, with its metro area.
| Parameter | Type | Default | What it does |
|---|---|---|---|
msa | string | none | The metro area (CBSA code) from find_metro: the market the chargemaster is benchmarked against. |
msa_name | string | none | The metro area name, for display. |
name | string | required | The study name. |
state | string | none | Two-letter US state, for example FL. A state on its own is not enough: add codes, apc, q or hospital_ids. |
zip | string | none | A 5-digit ZIP code. |
create_strategic_pricing_study
Start a draft study for an owner.
| Parameter | Type | Default | What it does |
|---|---|---|---|
name | string | required | The study name. |
owner | string | required | The provider the rates belong to: a provider id or name in your account. A new name becomes a custom provider. |
set_strategic_pricing_goal
The goal and the market cap percent; every other setting starts at the server default.
| Parameter | Type | Default | What it does |
|---|---|---|---|
kind | string | max_revenue_within_market | set_strategic_pricing_goal: max_revenue_within_market or revenue_neutral_optics. set_study_dataset: volume or cost. update_strategic_pricing_settings: the goal kind to switch to. |
market_cap_pct | number | 10 | How far above the market anchor a proposed price may go, in percent (0 to 500). |
study_id | string | required | The study id, as returned by the create tool or the list tool of that study kind. |
set_study_cdm
Pin the chargemaster: the owner's effective CDM, or a named version. A new CDM goes up with create_upload, inspect_upload and save_cdm_table; pin the version it returns.
| Parameter | Type | Default | What it does |
|---|---|---|---|
cdm_version_id | string | none | A CDM version id to pin; omitted, the owner's effective CDM (its own, else its health system's) is used. |
study_id | string | required | The study id, as returned by the create tool or the list tool of that study kind. |
save_cdm_table
Save an uploaded chargemaster as a CDM version for an owner (a new version of the owner's CDM when it has one).
| Parameter | Type | Default | What it does |
|---|---|---|---|
label | string | none | A label for this rate-table version, such as the fee schedule year. |
mapping | object | required | Which columns hold the code, the rates (one per payer) and the volume, per sheet: the suggested_mapping from inspect_upload, confirmed with the user. |
owner | string | required | The provider the rates belong to: a provider id or name in your account. A new name becomes a custom provider. |
upload_id | string | required | The id create_upload returned for the file. |
The mapping names the sheet, the header row and the columns (1-based): CDM code, description, rev code and charge, plus optional department, CPT/HCPCS and APC. Lines with no code or no charge are not saved; the result counts them (lines_no_charge, lines_no_code). A charge that is text, not a number, is refused. At most 50,000 lines.
set_study_dataset
Pin a volume or cost dataset: one in Data Sources, or an upload with its column mapping, normalized on the server.
| Parameter | Type | Default | What it does |
|---|---|---|---|
dataset_id | string | none | An existing volume or cost dataset in Data Sources; otherwise give upload_id and mapping. |
description | string | none | What the dataset holds and the study it is for; required for a new dataset. |
kind | string | volume | set_strategic_pricing_goal: max_revenue_within_market or revenue_neutral_optics. set_study_dataset: volume or cost. update_strategic_pricing_settings: the goal kind to switch to. |
mapping | object | none | Which columns hold the code, the rates (one per payer) and the volume, per sheet: the suggested_mapping from inspect_upload, confirmed with the user. |
name | string | none | The study name. |
study_id | string | required | The study id, as returned by the create tool or the list tool of that study kind. |
upload_id | string | none | The id create_upload returned for the file. |
configure_strategic_pricing_study
Confirm the market (MSA), set payer sensitivity and line filters.
| Parameter | Type | Default | What it does |
|---|---|---|---|
confirm_geography | boolean | false | true to confirm the market and make the study ready to analyze. |
line_filters | object | none | Which published market lines to leave out: excludeProfessional, excludeSettingMismatch, excludePlaceholders, excludeDrugUnits. |
msa | string | none | The metro area (CBSA code) from find_metro: the market the chargemaster is benchmarked against. |
msa_name | string | none | The metro area name, for display. |
payer_sensitivity | object | none | Per payer, poc (pays a percent of charges) or fixed (a contracted rate). |
state | string | none | Two-letter US state, for example FL. A state on its own is not enough: add codes, apc, q or hospital_ids. |
study_id | string | required | The study id, as returned by the create tool or the list tool of that study kind. |
analyze_strategic_pricing_study
Run the market analysis. Returns at once; poll get_strategic_pricing_study.
| Parameter | Type | Default | What it does |
|---|---|---|---|
study_id | string | required | The study id, as returned by the create tool or the list tool of that study kind. |
get_strategic_pricing_study
Status, headline counts, pins and the next step.
| Parameter | Type | Default | What it does |
|---|---|---|---|
study_id | string | required | The study id, as returned by the create tool or the list tool of that study kind. |
list_strategic_pricing_studies
The user's studies, newest first.
| Parameter | Type | Default | What it does |
|---|
get_strategic_pricing_view
The overview, market, volume-mix, payer-trends and benchmarks tabs, paged.
| Parameter | Type | Default | What it does |
|---|---|---|---|
anchor_percentile | number | none | The percentile when anchor_stat is percentile (0 to 100). |
anchor_stat | string | none | The market statistic the benchmark column shows: mean, median, min, max or percentile. |
limit | integer | 50 | Most rows to return. Each tool has its own cap. On a free plan, paid data returns 8 rows whatever you ask for. |
mdc | string | none | An MDC code (the snapshot's crosswalk group) to narrow to. |
offset | integer | 0 | Rows to skip, for paging. |
payer | string | none | Only this insurer, as named in the data. |
scope | string | none | The benchmark geography: msa (the default for a new study), state or national when the snapshot has it. |
section | string | none | One benchmarks section: lesserOf, belowMedicare, declining, outliers, utilization, missing or orTime. |
study_id | string | required | The study id, as returned by the create tool or the list tool of that study kind. |
view | string | required | overview, market, volume-mix, payer-trends or benchmarks. |
get_strategic_pricing_model
The Pricing Model: every line's proposed price under the saved settings, filtered and paged, with group totals and APC bundle facts.
| Parameter | Type | Default | What it does |
|---|---|---|---|
below_bench | boolean | false | Only lines priced under the benchmark. |
changed_only | boolean | false | Only lines the proposal moves. |
charge_sensitive_only | boolean | true | Only lines some payer pays as a percent of charges (default true: those move the money). |
dept | string | none | A CDM department to narrow to. |
lesser_of | boolean | false | Only lines priced under a fixed payer's contracted rate. |
limit | integer | 50 | Most rows to return. Each tool has its own cap. On a free plan, paid data returns 8 rows whatever you ask for. |
mdc | string | none | An MDC code (the snapshot's crosswalk group) to narrow to. |
normalized_only | boolean | false | Only lines whose units were normalized (time blocks, rooms). |
offset | integer | 0 | Rows to skip, for paging. |
over_cap | boolean | false | Only lines priced over the market cap. |
q | string | none | Search the service description, up to 200 characters. |
sort | string | payment_delta | Column to sort by. |
study_id | string | required | The study id, as returned by the create tool or the list tool of that study kind. |
units_window | integer | 1 | Trailing years of volume the units and dollars are scaled over: 1, 2 or 3. |
update_strategic_pricing_settings
One patch onto the saved settings: global levers, per-MDC, per-revenue-code, per-line, the locked benchmark column, reset. Answers the new summary and the difference.
| Parameter | Type | Default | What it does |
|---|---|---|---|
bundles | object | none | APC bundle settings to merge: dominantLineSharePct, lineFloorPct, minGroupSize, marketCapPct. |
cap_anchor | object | none | The market statistic the cap math anchors to: {stat, percentile?}. |
cap_scope | string | none | The geography the cap reads: msa, state or national. |
clear_medicare_floor | boolean | false | true to switch the Medicare floor off. |
clear_overrides | boolean | false | true drops every per-code override. |
constraints | object | none | Model constraints to merge: bandHighPct, bandLowPct, minR2, minTrendPct, roundingUnit. |
display_anchor | object | none | The market statistic the benchmark column shows: {stat, percentile?}. |
edited_at | string | none | The time of this edit; a save older than the stored one is skipped. |
enforce_market_floor | boolean | none | Also raise prices sitting below the anchor minus the cap percent. |
kind | string | none | set_strategic_pricing_goal: max_revenue_within_market or revenue_neutral_optics. set_study_dataset: volume or cost. update_strategic_pricing_settings: the goal kind to switch to. |
lock_benchmark | boolean | none | true freezes the benchmark column under the current anchor and scope; false unfreezes it. |
market_cap_pct | number | none | How far above the market anchor a proposed price may go, in percent (0 to 500). |
medicare_floor_pct | number | none | Floor every proposal at this percent of the Medicare allowed (100 = at least Medicare). |
neutral | object | none | Revenue-neutral goal knobs to merge: decreasePct, volumeSplitPercentile, maxUpliftPct, tolerancePct. |
per_code_overrides | object | none | Per line, keyed cdmCode|dept: {newCharge, locked}; a lock with newCharge pins that price, a bare lock holds the current charge; null returns the line to the model. |
per_mdc_overrides | object | none | Per MDC: {capPct, bandHighPct, bandLowPct, locked}; null removes the override. |
per_rev_code_overrides | object | none | Per revenue code (digits, no leading zeros): {adjustPct, locked}; null removes it. |
reset | boolean | false | true returns every global lever to the goal's defaults, keeping per-code and rev-code overrides. |
study_id | string | required | The study id, as returned by the create tool or the list tool of that study kind. |
scale_group_prices
Move a whole MDC or APC group (or listed lines) by a percent; the server writes the cent-rounded per-line prices.
| Parameter | Type | Default | What it does |
|---|---|---|---|
apc | string | none | APC codes (Medicare outpatient payment groups). |
edited_at | string | none | The time of this edit; a save older than the stored one is skipped. |
keys | list of string | none | Line keys (cdmCode|dept) to scale; or give mdc or apc. |
mdc | string | none | An MDC code (the snapshot's crosswalk group) to narrow to. |
pct | number | required | The percent to move the group's current charges by (above -100). |
study_id | string | required | The study id, as returned by the create tool or the list tool of that study kind. |
export_strategic_pricing
The client PDF, the audit workbook, or a CSV, as a one-hour link. Reflects the saved settings.
| Parameter | Type | Default | What it does |
|---|---|---|---|
format | string | Benchmark: xlsx, csv, sources or pdf. Strategic pricing: pdf, xlsx, proposal-csv, benchmarks-csv or mdc-crosswalk-csv. | |
study_id | string | required | The study id, as returned by the create tool or the list tool of that study kind. |
strategic_pricing_analysis
One pass of the Tactical Review Checklist over the candidate lines.
| Parameter | Type | Default | What it does |
|---|---|---|---|
analysis | string | required | The review endpoint to run: sp_candidates, sp_controllable_prices, sp_opportunity_queues, sp_payment_sensitivity, sp_lesser_of, sp_charge_based, sp_stop_loss, sp_caps_neutralization, sp_fixed_payment, sp_government, sp_charge_relationships, sp_market_validation, sp_local_market, sp_shoppable, sp_emergency, sp_imaging or sp_portfolio. |
codes | list of string | none | CPT, HCPCS or MS-DRG codes to look up. |
study_id | string | required | The study id, as returned by the create tool or the list tool of that study kind. |
Returns the items it ran (id, finding, labelled rows, basis), the gaps it could not close (what is needed, who decides, published evidence), and a proposed disposition per candidate with its evidence.
strategic_pricing_review
Record the reviewer's decisions and the per-study inputs the passes read.
| Parameter | Type | Default | What it does |
|---|---|---|---|
decisions | list of object | none | Decisions to record: [{key, disposition, why, owner?, approved_by?}]; disposition is increase, decrease, hold, repair, contract or investigate. |
inputs | object | none | Per-study review inputs: payer_caps_pct, cap_offsets_decreases, cap_excludes_carve_outs, neutralization_pct, lesser_of_fraction, escalator_pct, horizon_years, prior_increase_pct, collection_rate, notice_days, elasticity, fiscal_year. |
study_id | string | required | The study id, as returned by the create tool or the list tool of that study kind. |
sp_sections
Every component of a study in reading order, with the tool that returns it.
| Parameter | Type | Default | What it does |
|---|---|---|---|
study_id | string | required | The study id, as returned by the create tool or the list tool of that study kind. |
sp_mix_top_codes
| Parameter | Type | Default | What it does |
|---|---|---|---|
limit | integer | 12 | Most rows to return. Each tool has its own cap. On a free plan, paid data returns 8 rows whatever you ask for. |
mdc | string | none | An MDC code (the snapshot's crosswalk group) to narrow to. |
study_id | string | required | The study id, as returned by the create tool or the list tool of that study kind. |
sp_mix_volume_trends
| Parameter | Type | Default | What it does |
|---|---|---|---|
dept | string | none | A CDM department to narrow to. |
limit | integer | 50 | Most rows to return. Each tool has its own cap. On a free plan, paid data returns 8 rows whatever you ask for. |
mdc | string | none | An MDC code (the snapshot's crosswalk group) to narrow to. |
offset | integer | 0 | Rows to skip, for paging. |
q | string | none | Search the service description, up to 200 characters. |
sort | string | charges | Column to sort by. |
study_id | string | required | The study id, as returned by the create tool or the list tool of that study kind. |
trend | string | none |
sp_bench_table
| Parameter | Type | Default | What it does |
|---|---|---|---|
anchor_percentile | number | none | The percentile when anchor_stat is percentile (0 to 100). |
anchor_stat | string | none | The market statistic the benchmark column shows: mean, median, min, max or percentile. |
dept | string | none | A CDM department to narrow to. |
flag | string | none | |
limit | integer | 50 | Most rows to return. Each tool has its own cap. On a free plan, paid data returns 8 rows whatever you ask for. |
mdc | string | none | An MDC code (the snapshot's crosswalk group) to narrow to. |
offset | integer | 0 | Rows to skip, for paging. |
q | string | none | Search the service description, up to 200 characters. |
scope | string | none | The benchmark geography: msa (the default for a new study), state or national when the snapshot has it. |
sort | string | impact | Column to sort by. |
study_id | string | required | The study id, as returned by the create tool or the list tool of that study kind. |
sp_model_apc_groups
| Parameter | Type | Default | What it does |
|---|---|---|---|
limit | integer | 50 | Most rows to return. Each tool has its own cap. On a free plan, paid data returns 8 rows whatever you ask for. |
mdc | string | none | An MDC code (the snapshot's crosswalk group) to narrow to. |
offset | integer | 0 | Rows to skip, for paging. |
study_id | string | required | The study id, as returned by the create tool or the list tool of that study kind. |
units_window | integer | 1 | Trailing years of volume the units and dollars are scaled over: 1, 2 or 3. |
sp_model_lines
| Parameter | Type | Default | What it does |
|---|---|---|---|
below_bench | boolean | false | Only lines priced under the benchmark. |
changed_only | boolean | false | Only lines the proposal moves. |
charge_sensitive_only | boolean | true | Only lines some payer pays as a percent of charges (default true: those move the money). |
dept | string | none | A CDM department to narrow to. |
lesser_of | boolean | false | Only lines priced under a fixed payer's contracted rate. |
limit | integer | 50 | Most rows to return. Each tool has its own cap. On a free plan, paid data returns 8 rows whatever you ask for. |
mdc | string | none | An MDC code (the snapshot's crosswalk group) to narrow to. |
normalized_only | boolean | false | Only lines whose units were normalized (time blocks, rooms). |
offset | integer | 0 | Rows to skip, for paging. |
over_cap | boolean | false | Only lines priced over the market cap. |
q | string | none | Search the service description, up to 200 characters. |
sort | string | payment_delta | Column to sort by. |
study_id | string | required | The study id, as returned by the create tool or the list tool of that study kind. |
units_window | integer | 1 | Trailing years of volume the units and dollars are scaled over: 1, 2 or 3. |
sp_model_line
| Parameter | Type | Default | What it does |
|---|---|---|---|
key | string | required | |
study_id | string | required | The study id, as returned by the create tool or the list tool of that study kind. |
units_window | integer | 1 | Trailing years of volume the units and dollars are scaled over: 1, 2 or 3. |
The other components
Each takes study_id, offset and limit. The payer trend tools add payer; the impact and model group tools add units_window. sp_overview_kpis, sp_overview_goal, sp_overview_provenance, sp_overview_flags, sp_market_population, sp_market_age_mix, sp_market_payer_environment, sp_market_notes, sp_mix_units_by_payer, sp_mix_payments_by_payer, sp_mix_revenue_centers, sp_mix_revenue_by_mdc, sp_mix_trend_counts, sp_payer_pareto, sp_payer_rising, sp_payer_declining, sp_payer_codes, sp_bench_lesser_of, sp_bench_below_medicare, sp_bench_declining, sp_bench_outliers, sp_bench_utilization_gaps, sp_bench_time_structure, sp_bench_missing_codes, sp_model_settings, sp_model_mdc_adjustments, sp_model_rev_code_adjustments, sp_impact_summary, sp_impact_net_margin, sp_impact_by_payer, sp_impact_by_mdc, sp_model_mdc_groups, sp_model_units_normalization, sp_pdf_executive_summary, sp_pdf_demographics, sp_pdf_payer_mix, sp_pdf_revenue_centers, sp_pdf_volume_trends, sp_pdf_market_position, sp_pdf_lesser_of_exposure, sp_pdf_pricing_proposal, sp_pdf_strategic_flags, sp_pdf_methodology, sp_xlsx_how_to_audit, sp_xlsx_summary, sp_xlsx_cdm_proposal, sp_xlsx_impact, sp_xlsx_volume_trends, sp_xlsx_payer_poc, sp_xlsx_market_benchmarks, sp_xlsx_flags, sp_xlsx_bundles, sp_xlsx_missing_codes, sp_xlsx_or_time, sp_xlsx_mdc_crosswalk, sp_xlsx_sources.
| Parameter | Type | Default | What it does |
|---|---|---|---|
limit | integer | 50 | Most rows to return. Each tool has its own cap. On a free plan, paid data returns 8 rows whatever you ask for. |
offset | integer | 0 | Rows to skip, for paging. |
study_id | string | required | The study id, as returned by the create tool or the list tool of that study kind. |