All use cases
Integration Pattern
Pre-Submission Enrichment
Before a claim goes to the payer, call RCI to validate and enrich it. This is the highest-value integration — it prevents denials before they happen.
For: RCM platforms, billing companies, clearinghouses, EHR vendors
How it works
architecture flow
Your EHR / RCM Platform │ ├─ Claim ready for submission │ ├─ Call RCI: POST /v1/knowledge/resolve │ ├─ Validate billing form (L2) CMS-1500 vs UB-04 │ ├─ Validate POS code (L3) Matches facility + setting │ ├─ Check modifiers (L3/L5) Required for this service │ ├─ Verify filing deadline (L4) Within payer's window │ └─ Estimate payment (L6) RVU × GPCI × CF │ ├─ All checks pass → Submit to payer │ └─ Errors found → Return to user with corrections
Code examples
1. Resolve billing context before submission
python
import httpx
async def enrich_claim(api_key: str, claim: dict) -> dict:
async with httpx.AsyncClient(
base_url="https://api.rci.health",
headers={"X-API-Key": api_key},
) as client:
resp = await client.post("/v1/knowledge/resolve", json={
"ccn": claim["facility_ccn"],
"cpt": claim["cpt_code"],
"payer": claim.get("payer", "Medicare"),
"care_setting": claim.get("care_setting", "outpatient"),
})
knowledge = resp.json()
errors = []
layers = knowledge.get("layers", [])
# Check billing form
expected_form = layers[1]["data"].get("billing_form")
if claim["billing_form"] != expected_form:
errors.append(f"Wrong form: expected {expected_form}")
# Check POS code
expected_pos = layers[2]["data"].get("pos_code")
if str(claim["pos_code"]) != str(expected_pos):
errors.append(f"Wrong POS: expected {expected_pos}")
# Check filing deadline
filing_limit = layers[3]["data"].get("timely_filing_federal")
# ... compare against claim date_of_service
return {
"valid": len(errors) == 0,
"errors": errors,
"expected_payment": knowledge.get("payment_estimate"),
"knowledge": knowledge,
}2. Same thing in TypeScript
typescript
async function enrichClaim(apiKey: string, claim: Claim) {
const res = await fetch("https://api.rci.health/v1/knowledge/resolve", {
method: "POST",
headers: {
"X-API-Key": apiKey,
"Content-Type": "application/json",
},
body: JSON.stringify({
ccn: claim.facilityCcn,
cpt: claim.cptCode,
payer: claim.payer ?? "Medicare",
care_setting: claim.careSetting ?? "outpatient",
}),
});
const knowledge = await res.json();
const errors: string[] = [];
const expectedForm = knowledge.layers[1]?.data?.billing_form;
if (claim.billingForm !== expectedForm) {
errors.push(`Wrong form: expected ${expectedForm}`);
}
const expectedPos = knowledge.layers[2]?.data?.pos_code;
if (String(claim.posCode) !== String(expectedPos)) {
errors.push(`Wrong POS: expected ${expectedPos}`);
}
return { valid: errors.length === 0, errors, knowledge };
}What it catches
Wrong billing form
CARC 16CMS-1500 submitted for a facility that requires UB-04
Wrong POS code
CARC 182POS doesn't match the facility type and care setting
Missing modifier
CARC 4Required modifier for this service at this facility
Expired filing deadline
CARC 29Claim submitted after payer's timely filing limit
Wrong payment system
Routing errorClaim routed to wrong fee schedule for this facility
Incorrect TOB code
CARC 16Type of bill doesn't match facility classification
Start enriching claims
Get your API key and make your first knowledge resolution call in under 5 minutes.