Drop in Pentacam .ini exports. The screener resolves which
Belin/Ambrósio version produced each BAD D before scoring it, runs the scan-quality
gate first, and refuses to score anything whose provenance it cannot establish.
Six metrics from [Examination Data N]. Boundaries are inclusive — the
threshold value itself counts as that level.
| Metric | Direction | Suspect | Abnormal | Role |
|---|---|---|---|---|
| BAD (version-resolved) | higher worse | 1.6 (v3) | 2.6 (v3) | drives verdict |
Ele_B_BFS8mm_Thinnest | higher worse | 12 | 16 | drives verdict |
ArtMax | lower worse | 412 | 339 | drives verdict |
KMaxFront | higher worse | 47.2 | 48.0 | drives verdict |
IHD | higher worse | 0.014 | 0.016 | drives verdict |
Pachy Min | lower worse | 500 | 470 | ⚠ low-specificity — excluded |
BAD is version-scoped. v3 uses the published 1.6 / 2.6. v4 cutoffs are
intentionally unset, so v4 exams report unscored (v4, no calibrated cutoff) and the
other five metrics still score. ISV, IVA, KI, CKI, IHA, IS are shown as context but
never scored.
Why v4 is still unset. A calibration was attempted against a 76-exam bank carrying paired v3 and v4 values. It does not support a cutoff. The two are related but loosely (r = 0.84, residual SD 1.06 on cutoffs near 1.7–3.2), and the mapping is era-dependent — exports that actually display v4 imply 1.42 / 2.40, while older ones imply 1.71 / 3.28. Restricting to the exports that genuinely display v4 leaves 3 eyes at or above the v3 suspect line and 1 above the abnormal line. A threshold fitted to one event is not a calibration. Separately, tuning v4 to agree with v3 assumes v3 is the truth, which would discard whatever improvement v4 offers. A defensible v4 cutoff needs clinically-labelled eyes, not v3 concordance.
Status ≠ OK or StatusCode ≠ 0 → REJECTED with no risk verdict. A confident "normal" off a failed capture is worse than no output.Pachy Min never drives a verdict. Thin normals are common and it is collinear with ArtMax. When it is the only flag the result is WNL plus a refractive-planning note.
BAD D is not a canonical measurement. It mirrors whichever Belin/Ambrósio Deviation
variant the acquiring software was configured to display, and the variants disagree by more than
2× on the same eye. The published 1.6 / 2.6 cutoffs are calibrated for the older v3 family,
so a BAD D value is meaningless until you know which variant produced it.
BADD_Version_Display is present it is authoritative for the major version. If BAD D matches no candidate of that version, that is a hard error (version_mismatch) — not a guess.BAD D is matched numerically against BADD_v4 / v4_myo / v4_hyp / v3_myp / v3_hyp at tolerance 0.005 (values print to 2 dp). Exactly one match → resolved. Several → ambiguous. None → unknown.
Prior refractive surgery invalidates these cutoffs — the ablation profile alone drives the
pachymetric-progression terms. The screener warns (never vetoes) when
Asph Q Anterior (4.5mm) is oblate, or when BADDf < 0.5 while
BADDb > 2. A decentered cone can also produce an oblate central Q, so this is a
prompt to check history, not a conclusion.
The action band is a stated rule over the verdict, the quality gate and the treatment-history flag — not a probability. It deliberately outranks the risk verdict in two cases, because neither supports acting on the number:
There is deliberately no 0–100 risk score. Calibrating one needs a cohort with known outcomes; without that, a single number would imply a precision the underlying data does not carry, and would collapse "how abnormal" and "how much you can trust it" into one figure that hides the difference.
When both eyes of one patient are present they are grouped, and the inter-eye differences for every scored metric are shown above the pair. Pronounced asymmetry between fellow eyes is itself a keratoconus signal — but there is no validated inter-eye cutoff here, so the deltas are reported and left to you rather than thresholded.
Pentacam exports are Windows-encoded with CRLF endings, repeat keys inside a single section, and
distinguish ARTMin from ArtMax by case. A standard INI reader lowercases
keys and rejects duplicates, so this uses a hand-written parser that preserves order, case,
duplicates and raw values, and leaves all interpretation to the scorer. Every
[Examination Data N] block is an independent measurement and gets its own row.