Infection / VTE · LIVE
RIPASA score
Sum the Chong 2010 RIPASA points from 15 caller-assigned findings and return below_cutoff (<7.5) or at_or_above_cutoff (≥7.5) from the derivation ROC only.
Markdown: /docs/ripasa.md · Canonical: https://magentlab.com/docs/ripasa
Not a medical device. Not a diagnosis, dose, or listing recommendation.
What it computes
Sum the Chong 2010 RIPASA points from 15 caller-assigned findings and return below_cutoff (<7.5) or at_or_above_cutoff (≥7.5) from the derivation ROC only.
When to use
When an agent needs the published Chong 2010 RIPASA total and must not invent abdominal findings, laboratory cutoffs, identity-card status, an appendicitis diagnosis, or an operating-room protocol.
When not to use
- Not a medical device. Not an appendicitis diagnosis or operating-room protocol.
- Fever, raised WCC, and foreign NRIC are caller-assigned flags. magent does not apply a temperature or WBC cutoff and does not read identity documents.
- Findings are caller-assigned. magent does not examine the abdomen.
- Bands are the Chong 2010 derivation ROC cutoff only (<7.5 below_cutoff; ≥7.5 at_or_above_cutoff). magent does not add probable or possible labels from later papers.
Formula
RIPASA = (age<40 → 1.0; age≥40 → 0.5) + (male 1.0; female 0.5) + 0.5*rif_pain + 0.5*migration_to_rif + nausea_vomiting + anorexia + (symptoms_lt_48h 1.0; else 0.5) + rif_tenderness + 2*guarding + rebound_tenderness + 2*rovsing_sign + fever + raised_wcc + negative_urinalysis + foreign_nric; Chong 2010; max 16; <7.5 below_cutoff, ≥7.5 at_or_above_cutoff
Citation
- Authors
- Chong CF, Adi MIW, Thien A, Suyoi A, Mackie AJ, Tin AS, Tripathi S, Jaman NH, Tan KK, Kok KY, Mathew VV, Paw O, Chua HB, Yapp SK
- Source
- Singapore Med J. 2010;51(3):220-225
- DOI
- none
Worked example
Age 50, female, all flags false, symptoms 48h or longer
Given:
age=50anorexia=falsefever=falseforeign_nric=falseguarding=falsemigration_to_rif=falsenausea_vomiting=falsenegative_urinalysis=falseraised_wcc=falserebound_tenderness=falserif_pain=falserif_tenderness=falserovsing_sign=falsesex=femalesymptoms_lt_48h=false
- Age 50 ≥40 → 0.5; female → 0.5; symptoms_lt_48h false → 0.5; remaining flags false → 0
- Score = 1.5 (max 16); ripasa_band = below_cutoff (<7.5)
Derivation ROC cutoff 7.5
Given:
age=50anorexia=truefever=falseforeign_nric=falseguarding=truemigration_to_rif=falsenausea_vomiting=truenegative_urinalysis=falseraised_wcc=falserebound_tenderness=falserif_pain=falserif_tenderness=falserovsing_sign=truesex=femalesymptoms_lt_48h=false
- Baseline 1.5 + nausea_vomiting 1 + anorexia 1 + guarding 2 + rovsing_sign 2
- Score = 7.5 (max 16); ripasa_band = at_or_above_cutoff (≥7.5)
Also searched as
- RIPASA score
- RIPASA appendicitis
- Chong 2010
- Raja Isteri Pengiran Anak Saleha
- appendicitis scoring system
- RIPASA
- RIF appendicitis score
- foreign NRIC appendicitis
Try
Opens the live endpoint. Unpaid browser requests show the paywall; agents should send Accept: application/json.
Full URL: https://api.magentlab.com/api/calc/ripasa?age=50&sex=female&rif_pain=false&migration_to_rif=false&nausea_vomiting=false&anorexia=false&symptoms_lt_48h=false&rif_tenderness=false&guarding=false&rebound_tenderness=false&rovsing_sign=false&fever=false&raised_wcc=false&negative_urinalysis=false&foreign_nric=false
Call
Expect HTTP 402 until you retry with PAYMENT-SIGNATURE. Incomplete query params
return HTTP 400 before any quote or charge.
curl -i -H "Accept: application/json" "https://api.magentlab.com/api/calc/ripasa?age=50&sex=female&rif_pain=false&migration_to_rif=false&nausea_vomiting=false&anorexia=false&symptoms_lt_48h=false&rif_tenderness=false&guarding=false&rebound_tenderness=false&rovsing_sign=false&fever=false&raised_wcc=false&negative_urinalysis=false&foreign_nric=false"
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
age |
integer | required | Age in years as an integer from 1 to 120 (Chong 2010). <40 scores 1.0; ≥40 scores 0.5 (age 40 is the ≥40 arm). magent does not assign age. |
sex |
string | required · female, male | Caller-assigned sex (Chong 2010). male scores 1.0; female scores 0.5. magent does not assign sex. |
rif_pain |
boolean | required | Pain in the right iliac fossa (Chong 2010). true scores 0.5. magent does not take a history. |
migration_to_rif |
boolean | required | Migration of pain to the right iliac fossa (Chong 2010). true scores 0.5. magent does not take a history. |
nausea_vomiting |
boolean | required | Nausea or vomiting (Chong 2010). true scores 1.0. magent does not take a history. |
anorexia |
boolean | required | Anorexia (Chong 2010). true scores 1.0. magent does not take a history. |
symptoms_lt_48h |
boolean | required | true when symptom duration is under 48 hours (Chong 2010 <48h arm, 1.0). false scores 0.5 (the >48h arm; 48 hours is locked to this arm). magent does not timestamp onset. |
rif_tenderness |
boolean | required | Right-iliac-fossa tenderness (Chong 2010). true scores 1.0. magent does not examine the abdomen. |
guarding |
boolean | required | Guarding (Chong 2010). true scores 2.0. magent does not examine the abdomen. |
rebound_tenderness |
boolean | required | Rebound tenderness (Chong 2010). true scores 1.0. magent does not examine the abdomen. |
rovsing_sign |
boolean | required | Rovsing sign (Chong 2010). true scores 2.0. magent does not examine the abdomen. |
fever |
boolean | required | Caller-assigned fever flag (Chong 2010). true scores 1.0. magent does not apply a °C cutoff. |
raised_wcc |
boolean | required | Caller-assigned raised white-cell-count flag (Chong 2010). true scores 1.0. magent does not apply a WBC cutoff. |
negative_urinalysis |
boolean | required | Negative urinalysis (Chong 2010). true scores 1.0. magent does not assay urine. |
foreign_nric |
boolean | required | Caller-assigned foreign national registration identity card item (Chong 2010). true scores 1.0. magent does not read identity documents. |
Bulk (POST)
POST the same path with a JSON items array. The first item is the GET unit; each additional item is $0.002. Invalid items return HTTP 400 before settlement.
- 1 to 25 items. Each item uses the same keys as the GET query parameters.
- POST of 1 item costs the same as GET. Lists longer than 25: chunk into multiple POSTs. Extra items still execute; do not pad dummy rows.
- The first invalid item fails the whole request (index in the 400 JSON). You are not charged.
- HTTP 200 is {count, path, items}. Each items[i] is the GET 200 body for that row.
- Catalog misses (empty matches, found=false) stay paid 200s inside that slot.
- x402 resource URL is this path plus n and body_sha256. Browsers that prefer text/html get the same paywall as GET; Pay retries POST with the same items.
Example request (fixture)
{
"items": [
{
"age": "50",
"anorexia": "false",
"fever": "false",
"foreign_nric": "false",
"guarding": "false",
"migration_to_rif": "false",
"nausea_vomiting": "false",
"negative_urinalysis": "false",
"raised_wcc": "false",
"rebound_tenderness": "false",
"rif_pain": "false",
"rif_tenderness": "false",
"rovsing_sign": "false",
"sex": "female",
"symptoms_lt_48h": "false"
},
{
"age": "50",
"anorexia": "false",
"fever": "false",
"foreign_nric": "false",
"guarding": "false",
"migration_to_rif": "false",
"nausea_vomiting": "false",
"negative_urinalysis": "false",
"raised_wcc": "false",
"rebound_tenderness": "false",
"rif_pain": "false",
"rif_tenderness": "false",
"rovsing_sign": "false",
"sex": "female",
"symptoms_lt_48h": "false"
}
]
}
Opens a two-item fixture on the API host. Unpaid browsers get the same MetaMask paywall as GET; Pay retries POST with those items.
Example 200 (fixture)
{
"count": 2,
"path": "/api/calc/ripasa",
"items": [
{
"components": [
{
"value": 50,
"factor": "age",
"points": 0.5,
"present": true
},
{
"value": "female",
"factor": "sex",
"points": 0.5,
"present": true
},
{
"factor": "rif_pain",
"points": 0.0,
"present": false
},
{
"factor": "migration_to_rif",
"points": 0.0,
"present": false
},
{
"factor": "nausea_vomiting",
"points": 0.0,
"present": false
},
{
"factor": "anorexia",
"points": 0.0,
"present": false
},
{
"value": false,
"factor": "symptoms_lt_48h",
"points": 0.5,
"present": true
},
{
"factor": "rif_tenderness",
"points": 0.0,
"present": false
},
{
"factor": "guarding",
"points": 0.0,
"present": false
},
{
"factor": "rebound_tenderness",
"points": 0.0,
"present": false
},
{
"factor": "rovsing_sign",
"points": 0.0,
"present": false
},
{
"factor": "fever",
"points": 0.0,
"present": false
},
{
"factor": "raised_wcc",
"points": 0.0,
"present": false
},
{
"factor": "negative_urinalysis",
"points": 0.0,
"present": false
},
{
"factor": "foreign_nric",
"points": 0.0,
"present": false
}
],
"age": 50,
"disclaimer": "Not a medical device. Deterministic published-formula or published-code output for autonomous agents. A licensed clinician remains responsible for patient care and billing submissions.",
"citation": {
"authors": "Chong CF, Adi MIW, Thien A, Suyoi A, Mackie AJ, Tin AS, Tripathi S, Jaman NH, Tan KK, Kok KY, Mathew VV, Paw O, Chua HB, Yapp SK",
"id": "chong-2010",
"pmid": "20428744",
"source": "Singapore Med J. 2010;51(3):220-225",
"title": "Development of the RIPASA score: a new appendicitis scoring system for the diagnosis of acute appendicitis"
},
"formula": "ripasa",
"formula_expression": "RIPASA = (age<40 → 1.0; age≥40 → 0.5) + (male 1.0; female 0.5) + 0.5*rif_pain + 0.5*migration_to_rif + nausea_vomiting + anorexia + (symptoms_lt_48h 1.0; else 0.5) + rif_tenderness + 2*guarding + rebound_tenderness + 2*rovsing_sign + fever + raised_wcc + negative_urinalysis + foreign_nric; Chong 2010; max 16; <7.5 below_cutoff, ≥7.5 at_or_above_cutoff",
"max_score": 16,
"score": 1.5,
"sex": "female",
"ripasa_band": "below_cutoff"
},
{
"components": [
{
"value": 50,
"factor": "age",
"points": 0.5,
"present": true
},
{
"value": "female",
"factor": "sex",
"points": 0.5,
"present": true
},
{
"factor": "rif_pain",
"points": 0.0,
"present": false
},
{
"factor": "migration_to_rif",
"points": 0.0,
"present": false
},
{
"factor": "nausea_vomiting",
"points": 0.0,
"present": false
},
{
"factor": "anorexia",
"points": 0.0,
"present": false
},
{
"value": false,
"factor": "symptoms_lt_48h",
"points": 0.5,
"present": true
},
{
"factor": "rif_tenderness",
"points": 0.0,
"present": false
},
{
"factor": "guarding",
"points": 0.0,
"present": false
},
{
"factor": "rebound_tenderness",
"points": 0.0,
"present": false
},
{
"factor": "rovsing_sign",
"points": 0.0,
"present": false
},
{
"factor": "fever",
"points": 0.0,
"present": false
},
{
"factor": "raised_wcc",
"points": 0.0,
"present": false
},
{
"factor": "negative_urinalysis",
"points": 0.0,
"present": false
},
{
"factor": "foreign_nric",
"points": 0.0,
"present": false
}
],
"age": 50,
"disclaimer": "Not a medical device. Deterministic published-formula or published-code output for autonomous agents. A licensed clinician remains responsible for patient care and billing submissions.",
"citation": {
"authors": "Chong CF, Adi MIW, Thien A, Suyoi A, Mackie AJ, Tin AS, Tripathi S, Jaman NH, Tan KK, Kok KY, Mathew VV, Paw O, Chua HB, Yapp SK",
"id": "chong-2010",
"pmid": "20428744",
"source": "Singapore Med J. 2010;51(3):220-225",
"title": "Development of the RIPASA score: a new appendicitis scoring system for the diagnosis of acute appendicitis"
},
"formula": "ripasa",
"formula_expression": "RIPASA = (age<40 → 1.0; age≥40 → 0.5) + (male 1.0; female 0.5) + 0.5*rif_pain + 0.5*migration_to_rif + nausea_vomiting + anorexia + (symptoms_lt_48h 1.0; else 0.5) + rif_tenderness + 2*guarding + rebound_tenderness + 2*rovsing_sign + fever + raised_wcc + negative_urinalysis + foreign_nric; Chong 2010; max 16; <7.5 below_cutoff, ≥7.5 at_or_above_cutoff",
"max_score": 16,
"score": 1.5,
"sex": "female",
"ripasa_band": "below_cutoff"
}
]
}
Response
| Field | Type | Description |
|---|---|---|
formula |
string | ripasa |
formula_expression |
string | Exact expression used |
score |
number | Chong 2010 RIPASA points 0.5-16, 0.5 steps |
max_score |
integer | Always 16 |
ripasa_band |
string | below_cutoff when score is <7.5, at_or_above_cutoff when score is ≥7.5 (Chong 2010 derivation ROC). Not an appendicitis diagnosis. |
age |
integer | Age in years used for the <40 / ≥40 split |
sex |
string | female or male |
components |
array | Per-factor points |
citation |
object | Chong 2010 Singapore Med J citation |
disclaimer |
string | Not-a-device notice |
Example JSON
Machine form of the same example. Frozen fixture. Not a live lookup.
{
"components": [
{
"value": 50,
"factor": "age",
"points": 0.5,
"present": true
},
{
"value": "female",
"factor": "sex",
"points": 0.5,
"present": true
},
{
"factor": "rif_pain",
"points": 0.0,
"present": false
},
{
"factor": "migration_to_rif",
"points": 0.0,
"present": false
},
{
"factor": "nausea_vomiting",
"points": 0.0,
"present": false
},
{
"factor": "anorexia",
"points": 0.0,
"present": false
},
{
"value": false,
"factor": "symptoms_lt_48h",
"points": 0.5,
"present": true
},
{
"factor": "rif_tenderness",
"points": 0.0,
"present": false
},
{
"factor": "guarding",
"points": 0.0,
"present": false
},
{
"factor": "rebound_tenderness",
"points": 0.0,
"present": false
},
{
"factor": "rovsing_sign",
"points": 0.0,
"present": false
},
{
"factor": "fever",
"points": 0.0,
"present": false
},
{
"factor": "raised_wcc",
"points": 0.0,
"present": false
},
{
"factor": "negative_urinalysis",
"points": 0.0,
"present": false
},
{
"factor": "foreign_nric",
"points": 0.0,
"present": false
}
],
"age": 50,
"disclaimer": "Not a medical device. Deterministic published-formula or published-code output for autonomous agents. A licensed clinician remains responsible for patient care and billing submissions.",
"citation": {
"authors": "Chong CF, Adi MIW, Thien A, Suyoi A, Mackie AJ, Tin AS, Tripathi S, Jaman NH, Tan KK, Kok KY, Mathew VV, Paw O, Chua HB, Yapp SK",
"id": "chong-2010",
"pmid": "20428744",
"source": "Singapore Med J. 2010;51(3):220-225",
"title": "Development of the RIPASA score: a new appendicitis scoring system for the diagnosis of acute appendicitis"
},
"formula": "ripasa",
"formula_expression": "RIPASA = (age<40 → 1.0; age≥40 → 0.5) + (male 1.0; female 0.5) + 0.5*rif_pain + 0.5*migration_to_rif + nausea_vomiting + anorexia + (symptoms_lt_48h 1.0; else 0.5) + rif_tenderness + 2*guarding + rebound_tenderness + 2*rovsing_sign + fever + raised_wcc + negative_urinalysis + foreign_nric; Chong 2010; max 16; <7.5 below_cutoff, ≥7.5 at_or_above_cutoff",
"max_score": 16,
"score": 1.5,
"sex": "female",
"ripasa_band": "below_cutoff"
}
Client errors (HTTP 400)
Invalid params return 400 without charge. Shared HTTP 402 and 503 meanings: Payments.
| HTTP | Code | When |
|---|---|---|
| 400 | invalid_ripasa_age |
age must be an integer from 1 to 120 (Chong 2010 RIPASA). Returned before settlement; you are not charged. |
| 400 | invalid_sex |
sex must be female or male Returned before settlement; you are not charged. |
| 400 | invalid_flag |
boolean clinical flags must be true or false Returned before settlement; you are not charged. |
| 400 | invalid_items |
POST body must be a JSON object with only an items array Returned before settlement; you are not charged. |
| 400 | invalid_item_count |
items must be an array of 1 to 25 objects Returned before settlement; you are not charged. |
| 400 | invalid_item |
each items entry must be a JSON object Returned before settlement; you are not charged. |
Related tools
- Alvarado score — Compute the Alvarado 1986 MANTRELS score from caller-assigned findings, temperature, WBC, and neutrophil percent.
- AIR score — Compute the Andersson 2008 appendicitis inflammatory response (AIR) score from caller-assigned findings, temperature, WBC, neutrophil percent, and CRP in mg/L.
Payment
Unpaid requests return HTTP 402 even if query parameters or POST items are missing or invalid, so CDP and agents can index the path. After a PAYMENT-SIGNATURE, invalid params return HTTP 400 JSON before settlement. magent does not charge. Fix the params, then request a new 402 quote for that complete URL. Catalog misses (empty matches, found=false) are valid paid 200s. Unpaid valid requests return HTTP 402 with a base64
PAYMENT-REQUIRED
header. HTTP 503 is not a new quote: retry the same PAYMENT-SIGNATURE. Full handshake
and shared payment errors: Payments.
Stdio MCP: /docs/mcp.
Guarantees
- HTTP 402 is unpaid, including a missing query. After PAYMENT-SIGNATURE, invalid parameters return HTTP 400 before settlement. You are not charged.
- exact: settlement finishes before the tool (paymentFlow upfront). batch-settlement: verify/deposit before the tool; chargedCumulativeAmount commits after HTTP 2xx. Uncertain or failed settlement fails closed (HTTP 503). Retry the same PAYMENT-SIGNATURE.
- HTTP 402 is unpaid only. Do not sign a second authorization because of a 503.
- Execution is timeout-bounded and concurrency-capped.
- Calculator inputs are stored encrypted for allowlisted operators (Magent Console). They are not in public logs, SSH lookups, catalog, or rollups. Request logs store path without query.