Chronic Limb-Threatening Ischaemia risk CALculator — a bilingual (English / 日本語) web app that predicts peri-procedural and mid-term outcomes of revascularisation for chronic limb-threatening ischaemia (CLTI).
Important
This application is intended as a decision-support aid for healthcare professionals. It does not provide a diagnosis and must not replace clinical judgement. All predictions are statistical estimates derived from the published models cited below.
The clinician enters patient data on a single form — demographics, nutritional markers, comorbidities, arterial lesion sites and Rutherford class — and the app returns four predicted outcomes plus a nutritional index. Everything is computed locally in the browser: no patient data is transmitted, stored on a server, or persisted between sessions.
| Output | Description |
|---|---|
| GNRI | Geriatric Nutritional Risk Index, classified as no risk / low / moderate / major |
| 2-year OS | Overall survival, classified as low / medium / high risk |
| 2-year AFS | Amputation-free survival |
| 30-day death or amputation | Early peri-procedural outcome |
| 30-day MALE | Early major adverse limb events |
The two-year models are Cox-type predictors (S₀^exp(Σβx)); the 30-day models are logistic. Coefficients live in src/app/models/patient-risk.ts and are transcribed directly from the source publications.
The prediction models are published by Miyata T. et al. from the JCLIMB registry of the Japanese Society for Vascular Surgery:
- Risk prediction model for early outcomes of revascularization for chronic limb-threatening ischaemia. Br J Surg. 2022 Oct 14;109(11):1123.
- Prediction Models for Two Year Overall Survival and Amputation Free Survival After Revascularisation for Chronic Limb Threatening Ischaemia. Eur J Vasc Endovasc Surg. 2022 Jun 7;S1078-5884(22)00340-9.
- Bilingual UI — English and Japanese, auto-detected from the browser locale and overridable in Settings (persisted in
localStorage; nothing else is). - Installable PWA — service worker, web manifest and maskable icons; works offline once installed.
- Local Excel batch processing — download a validated template, calculate multiple patients in the browser, review row-level errors and export the results without uploading the workbook to a server. See Batch Excel processing.
- Prerendered (SSR) — every route is prerendered at build time for a fast first paint.
- Accessible — WCAG AA is a project requirement, enforced by automated axe-core checks in the test suite.
- Light / dark themes — follows the OS colour scheme, including the browser chrome tint.
| Area | Choice |
|---|---|
| Framework | Angular 22 (standalone components, signals, native control flow) |
| UI | Angular Material |
| Forms | Signal Forms (@angular/forms/signals) |
| Rendering | Angular SSR with full prerendering |
| Testing | Vitest + jsdom, axe-core for accessibility |
| Hosting | Firebase Hosting, deployed by GitHub Actions |
State is held in signals: PatientDataStore owns the form data and the computed risk, and TranslationService owns the locale.
Requires Node.js 22+.
npm ciStart the development server at http://localhost:4200/:
npm startRun the test suite (Vitest, single run):
npm testBuild the production bundle into dist/clitical-web/:
npm run buildScaffold a component with the Angular CLI:
ng generate component component-namesrc/app/
├── models/ # PatientData and the risk prediction models
├── batch-processing/ # Local Excel template, validation and batch calculation
├── services/ # PatientDataStore (signals), TranslationService, i18n messages
├── question-form/ # Patient data entry (Signal Forms) with select/switch rows
├── risk-view/ # Predicted risk results
├── references/ # Source publications
├── settings/ # Language, terms, version
└── navigation/ # App shell and routing chrome
Routes are lazily loaded; see app.routes.ts.
Contributor guidance lives in .claude/CLAUDE.md. In short: standalone components, input() / output() functions, signals for state, inject() over constructor injection, native control flow, and no ngClass / ngStyle. Accessibility regressions are treated as bugs.
Pushing to main triggers .github/workflows/deploy.yml, which runs the test suite and then deploys to Firebase Hosting at clitical.web.app. Deployment requires the FIREBASE_TOKEN repository secret.
To deploy manually:
npm run deployCLiTICAL began as clti_risk, a Flutter application; this repository is the Angular web port and shares its prediction models and test cases.
Released under the MIT License.
Published by the Japanese Society for Vascular Surgery and the JCLIMB Committee; software by Kazuhiro Miyahara.