Pentla - OT World Leipzig

Demo scope - May 19-22, 2026
Acceptance criteria required for Pentla's demo at OT World Leipzig. Live: patient creation, visit, configurator, order submission. Mocked: production, treatment monitoring, test socket iterations, traceability.
pentla-api STALE
main 81340c2 chore(db): add pentla_owner/pentla_runtime functio... 3 h ago
e2e 2030267 239 ACs 15 h ago
pentla-frontend STALE
main 936cc9f feat(orders): tailor cranial order detail and surf... 4 d ago
e2e e3b2e73 283 ACs 6 d ago
Organisation
77%
23 ready, 2 partial of 30
Patients
12%
10 ready, 32 partial of 86
Orders & Configuration
3%
2 ready, 13 partial of 61
Component Trees
0%
0 ready, 2 partial of 36
Component Catalogue
0%
0 ready, 0 partial of 0
Overall Progress 35 of 213 ready (16%)
35 ready (both BE + FE) 49 partial (one side) 129 not ready
Implementation Notes 17 annotated ACs + 19 spec issues in OT World Leipzig scope
SPEC Needs Product Decision 24
Specs the PM must resolve before these ACs can be tested. GitHub spec issues open on Pentla-tech/pentla-specs.
ACs needing decision
AC-ORD-030 Orders & Configuration [BOTH] The configurator displays a visual representation of the device — not a form with dropdowns Visual device representation - configurator is visual but spec wording needs clarification AC-CTE-102 Component Trees [CO] Solid AFO tree: shell (with proximal trim as specification), footplate, posterior strap, calf cuff, instep strap (conditional — deep-shell override), padding, liner (conditional on laminated fabrication at DEVICE level), lateral/medial support (per-side valgus/varus, valid across bilateral pairs), T-strap (conditional on tibial torsion), growth margin (conditional on paediatric), rocker bottom, sole insert — positions, per-side alignment rules, and clinical workflow order are clinically accurate Clinical accuracy spot-check J8 - data-only, requires CO sign-off AC-CTE-104 Component Trees [CO] Transtibial prosthesis: socket assembly (socket shell, socket adapter), liner, suspension (11 types: PASSIVE_SUCTION, ACTIVE_SUCTION, SAS, HYBRID_LOCK, PIN_LOCK, LANYARD, SUPRACONDYLAR, SUPRACONDYLAR_CUFF, ANATOMIC, CUFF_STRAP, FIGURE_EIGHT_STRAP — with bidirectional liner-suspension rules), functional adapter, pylon, foot, ankle adapter — positions, dependencies, and clinical workflow order are clinically accurate Clinical accuracy spot-check J8 - data-only, requires CO sign-off AC-CTE-105 Component Trees [CO] Transfemoral prosthesis: socket assembly (socket shell, socket adapter), liner, suspension (7 types: PASSIVE_SUCTION, ACTIVE_SUCTION, SAS, HYBRID_LOCK, PIN_LOCK, LANYARD, KISS — with suspension sleeve, socket valve, vacuum pump, auxiliary belt, and bidirectional liner rules), knee unit (4 types with charging dock/battery charger cascade), functional adapter, pylon, foot, ankle adapter — positions, dependencies, and clinical workflow order are clinically accurate Clinical accuracy spot-check J8 - data-only, requires CO sign-off AC-CTE-107 Component Trees [CO] Corrective helmet: shell (fabrication method, and method-specific attributes — shell colour + design pattern + optional vapor smoothing finish for 3D-printed, transfer paper (First Choice and Backup Choice — both required before the order can move past DRAFT; 'Pick pattern later' is a tickbox that lets the CPO keep working on the rest of the order without warnings while parents decide, but it doesn't skip the requirement) for thermoplastic; shell designed around the patient's 3D scan with design file linked to order), padding (single spec: coverage, material, thickness, colour, and method-specific perforation attribute — Padding Perforation for 3D-printed with Perforated default, Helmet Perforation for thermoplastic with Don't perforate default; allergy-incompatible materials hidden from catalogue; perforated padding-material variants hidden from catalogue for thermoplastic; protective layer surfaced only when the atopic dermatitis clinical flag is set, then required as a hard rule with CPO selecting Microfibre or 3D Breathable fabric), closure (auto-selected by fabrication method), pathology classification (positional/synostotic with 11 variants — informs the CPO's shell design, does not drive configurator conditionals), clinical flags (hemangioma, atopic dermatitis, drainage, scar, birthmarks, glasses), device preview, and treatment phase with monthly progress reviews reflect clinical practice Clinical accuracy spot-check J8 - data-only, requires CO sign-off
Open spec issues on GitHub
#302 critical spec: define AC-INF area - demo environment, seeded data, demo orgs/users domengabrovsek #301 critical spec: define AC-CMP area - audit trail centralisation, traceability export, retention domengabrovsek #300 critical spec: define AC-INV area - inventory, materials, purchase orders domengabrovsek #299 critical spec: define AC-PROD area - production workflows, work orders, quality control, delivery domengabrovsek #399 high spec: clarify 9 ambiguous component-tree ACs (AC-CTE-015/025/029/055/061/062/087/090/101) domengabrovsek #308 high spec: define AC-ORG-037 notification defaults matrix (roles x categories) domengabrovsek #307 high spec: clarify AC-ORG-030 - should invitation email list all assigned units or just primary? domengabrovsek #446 medium Spec gap — device-type change/override flow at the configurator is underspecified Sahtair #518 [post-Leipzig] Add `Closure Location` (Left/Right) attribute to Closure node spec for unilateral closures boltezar #517 [post-Leipzig] Spec the canonical Padding Thickness options for the Corrective Helmet configurator boltezar #516 [post-Leipzig] Reconcile `Forehead Asymmetry` field across spec, Figma, and implementation boltezar #514 [post-Leipzig] Reconcile CVAI severity scale across spec, Figma, and implementation boltezar #513 [post-Leipzig] Spec the alert copy for the clinical transparency-notice gate across patient + wizard pages boltezar #504 spec(component-trees): formal Global Component Category Registry — enumerate codes referenced by Contract #28 boltezar #498 Helmet fitting design (Figma 1178:76119) omits PROs - reconcile spec or design domengabrovsek #473 feat(organisation): formal Design Pattern Library spec + empty-library onboarding gate (post-Leipzig) boltezar #428 spec: define guardian removal workflow - AC-PAT-115 only covers "change", no rules for removing a non-primary / primary / last guardian Sahtair #309 spec: clarify AC-ORD-053 - warranty validation vs incident notification conflict domengabrovsek #303 spec: define AC-RPT area - normative hours and basic operational metrics domengabrovsek
BE Backend Not Implemented 1
FE Frontend Not Implemented 8
Status:
Area:
Note:
Legend
Status (deterministic, test-driven)
READY Both BE and FE E2E tests pass
PARTIAL One of BE or FE E2E tests passes
NOT READY No passing tests in either repo
Test Coverage
BE ✓ Passing e2e test in pentla-api (backend)
BE No passing backend test
FE ✓ Passing e2e test in pentla-frontend
FE No passing frontend test
BE-only / FE-only AC only requires one repo for ready status
Note Categories (informational)
BE Backend API code not yet implemented
FE Frontend UI/UX not yet built
INFRA Platform infrastructure missing
SPEC Needs product decision or spec clarification
DEFERRED Intentionally postponed (post-Leipzig)
DEP Blocked by another feature or cross-module dependency

Organisation

23 ready 2 partial 5 not ready 30 total
#1 New Custom Manufacturer Onboarding End-to-End 23/30 77%
Step 1 — Platform Admin opens organisation management and starts creating a new organisation
READY BE ✓ FE ✓ AC-ORG-001 [CPO] Required fields enforced: organisation type, legal name, country, primary contact email
READY BE ✓ FE ✓ AC-ORG-002 [CPO] All 4 in-scope organisation types are selectable: Custom Manufacturer, Central Fab, Integrated Clinic-Fab, Clinic
READY BE ✓ FE ✓ AC-ORG-003 [CPO] Select "Custom-Made Device Manufacturer" as the type
Step 2 — Platform Admin creates the first unit (Production Facility)
READY BE ✓ FE ✓ AC-ORG-004 [CPO] Unit requires: name, type, country, address, data residency region, and applicable regulations
READY BE ✓ FE ✓ AC-ORG-005 [CPO] All 4 unit types are available: Clinic, Production Facility, Office, Warehouse
READY BE ✓ FE ✓ AC-ORG-006 [CO] Regulatory configuration and data residency region are auto-suggested based on unit country — e.g., Germany suggests MDR and GDPR with EU data residency
READY BE ✓ FE ✓ AC-ORG-007 [CPO] Data residency region is set at the unit level, not the organisation level. The org admin can adjust the auto-suggested region
READY BE ✓ FE ✓ AC-ORG-008 [CPO] Creating this first unit satisfies the requirement that an organisation must have at least one active unit
Step 3 — Platform Admin creates the first Org Admin user using the primary contact email
READY BE ✓ BE-only AC-ORG-009 [CPO] The first user is automatically assigned the Org Admin role
Step 4 — Platform Admin sets verification status and activates the organisation
READY BE ✓ FE ✓ AC-ORG-012 [CPO] Verification is a platform admin attribute on the organisation record — not a gate to access
READY BE ✓ FE ✓ AC-ORG-013 [CPO] Organisation transitions from Setup to Active
READY BE ✓ FE ✓ AC-ORG-014 [CPO] Org Admin cannot self-verify
Step 5 — Org Admin accepts the invitation, sets password, and logs in
PARTIAL BE FE ✓ AC-ORG-015 [CPO] Org Admin can set their password and access the platform once the organisation is Active
READY BE ✓ BE-only AC-ORG-016 [CPO] Platform loads with the Org Admin's primary unit as default context
READY FE ✓ FE-only AC-ORG-017 [CPO] On first login, Org Admin sees a welcome state with prompts to complete optional profile fields (trading name, addresses, logo) and invite team members. Incomplete fields are surfaced prominently but do not block platform use
Step 6 — Org Admin completes the organisation profile
READY BE ✓ FE ✓ AC-ORG-018 [CPO] Optional fields are editable: trading name, tax identifier, registration number, addresses, phone, website, logo
READY BE ✓ FE ✓ AC-ORG-019 [CPO] Organisation type is displayed but not editable by the Org Admin. A "Contact Support" action is available, pre-filled with the current type and reason for change request
READY BE ✓ FE ✓ AC-ORG-020 [CPO] Enabled areas are visible but changes require contacting sales
READY BE ✓ FE ✓ AC-ORG-021 [CPO] Changing the legal name saves immediately (no pending state). Org Admin sees confirmation that the change was saved and a note that Pentla may follow up. The platform admin is notified for potential re-verification. No access interruption
Step 7 — Org Admin configures organisation-wide preferences
READY BE ✓ FE ✓ AC-ORG-022 [CPO] All preferences configurable: measurement system, date format, time format, timezone, currency, language, locale
READY BE ✓ FE ✓ AC-ORG-023 [CO] Measurement system selection (metric vs imperial) is present and clearly labelled — this setting will propagate to all clinical measurement capture
Step 8 — Org Admin opens settings and sees sections appropriate for Custom Manufacturer
READY BE ✓ FE ✓ AC-ORG-024 [CPO] Visible sections: Organisation Profile, Units, Users and Roles, Preferences, Patient Settings, Production Settings, Order Settings, Notifications, Subscription and Billing
READY FE ✓ FE-only FE AC-ORG-025 [CPO] No sections are shown that do not apply to this organisation type
NOT READY AC-ORG-256 [CPO] The Org Admin can set the order reference number format in Order Settings. Editing the format affects only future orders — existing reference numbers are preserved
NOT READY AC-ORG-257 [CPO] The Org Admin can set the starting sequence value at onboarding so the platform continues the organisation's existing numbering. After the organisation has issued its first order reference, the starting value becomes view-only — adjusting it later requires Platform Admin involvement and a clear warning
NOT READY AC-ORG-258 [CPO] The current sequence value (the next number about to be issued) is visible in Order Settings so the Org Admin can monitor the organisation's running count
Step 9 — Org Admin invites team members: a CPO, a Production Manager, and a Technician
READY BE ✓ BE-only integration AC-ORG-249 [CPO] Invitation email lists all assigned units with their roles and indicates which unit is primary
Edge Cases
NOT READY AC-ORG-254 [CPO] Email uniqueness is validated inline when the Platform Admin enters the primary contact email during org creation — the error appears before proceeding to unit and user setup
NOT READY AC-ORG-255 [CPO] If a duplicate email bypasses the invitation gate (race condition, direct data operation), the platform detects the ambiguity at login and blocks access until resolved — the user sees an error directing them to contact Pentla support. The incident is logged as a security event
PARTIAL BE FE ✓ AC-ORG-048 [CPO] If a user accepts an invitation while the organisation is still in Setup state, they can set their password but see a message explaining that the organisation is being set up and full platform access will begin once the Platform Admin activates it

Patients

10 ready 32 partial 44 not ready 86 total
#0 Patient Creation Scenarios 6/15 40%
Prerequisites
NOT READY AC-PAT-016 [CPO] Patient creation requires the organisation to be in Active state — blocked with explanatory message when organisation is in Setup or Terminated state
PARTIAL BE FE ✓ AC-PAT-321 [CPO] Patient creation requires assignment to an active unit — blocked if no active units exist
PARTIAL BE FE ✓ AC-PAT-322 [CPO] New patient's primary unit is auto-assigned from the user's active unit context *(AC-ORG-072, AC-ORG-073)* — no manual unit selection in the creation form. If a CPO needs to create a patient for a different unit, they switch unit context first (one action in the persistent header control), then create the patient
Mandatory and progressive fields
READY BE ✓ FE ✓ AC-PAT-001 [CPO] Patient record can be created with minimum fields: first name, last name, date of birth, phone number, email address
Draft orders without Clinical Prescription
READY BE ✓ FE ✓ AC-PAT-325 [CPO] A CPO can proceed from a visit to device configuration before the Clinical Prescription (izvid) is in the system. The order is created silently — the CPO begins clinical work without an explicit "create order" step
READY BE ✓ FE ✓ AC-PAT-326 [CPO] The draft order collects visit data, measurements, scans, and device configuration — all before the Clinical Prescription arrives
PARTIAL BE ✓ FE AC-PAT-327 [CPO] The order's "Send to Production" button stays disabled until a valid Clinical Prescription (izvid) has been uploaded against the order (for MDR-regulated orders). The Clinical Prescription is a release gate, not a creation prerequisite. For insured patients, a Reimbursement Prescription (naročilnica) is additionally required on the order before fabrication can begin
PARTIAL BE FE ✓ AC-PAT-003 [CPO] Duplicate detection fires on name + DOB match — shows potential matches but does not block creation
READY BE ✓ FE ✓ AC-PAT-004 [CPO] Patient status starts as Active when the record is created
Path E and F — CPO creates directly in clinic
PARTIAL BE FE ✓ AC-PAT-333 [CO] CPO can create the patient record and proceed directly to clinical work without admin involvement
Transparency and consent per path
PARTIAL BE FE ✓ AC-PAT-334 [CPO] Both Front Desk and CPO roles can record the patient information acknowledgment. The record captures WHO informed the patient
PARTIAL BE FE ✓ AC-PAT-335 [CPO] The signed patient information form (patient information acknowledgment + non-clinical consents) must be scanned and uploaded to the patient record as a classified attachment type (distinct from clinical images and scans — aids audit retrieval)
READY FE ✓ FE-only AC-PAT-336 [CPO] Patient information is a soft prompt, not a hard block — clinical work can proceed if the patient information record hasn't been completed yet, but the system shows a persistent reminder
READY FE ✓ FE-only AC-PAT-338 [CPO] Non-clinical consent checkboxes on the form must default to unchecked — pre-ticked boxes are not valid consent under GDPR (Recital 32, CJEU Planet49)
PARTIAL BE FE ✓ AC-PAT-339 [CPO] Non-clinical consent (marketing, research) can be captured at any point — reception, during a visit, or at a later visit. It never blocks clinical actions
#1 New AFO Patient — End-to-End 3/25 12%
Step 2 — Verify patient information and consent
PARTIAL BE FE ✓ AC-PAT-025 [CPO] Outstanding patient information items are visible on the patient record summary — none should remain before clinical work begins
READY BE ✓ FE ✓ AC-PAT-020 [CPO] Patient information record present with: timestamp, method, staff member identity
NOT READY be_implemented AC-PAT-021 [CO] Patient information record is informational — not a consent gate. Clinical processing continues under the treatment lawful basis (Article 9(2)(h))
Step 3 — Enter Clinical Prescription (izvid) and Reimbursement Prescription (naročilnica)
NOT READY AC-PAT-030 [CPO] Clinical Prescription (izvid) requires: prescriber name, qualification, licence number, institution, diagnosis (with ICD code), device authorised, laterality (left/right/bilateral — shown for lateralised devices; hidden for midline devices such as cranial helmets and spinal braces), prescription date, expiration date, uploaded document. Prescriptions can be created by users with prescribing authority: Physician role (always), or Clinician role where the unit's jurisdiction authorises CPO prescribing *(BR-ORG-029)*. Front Desk can record prescriber details and upload prescription documents from paper prescriptions — this is data entry of an external prescription, not the clinical act of prescribing
NOT READY AC-PAT-033 [CPO] Previously entered prescribers are suggested on name entry
PARTIAL BE FE ✓ AC-PAT-035 [CO] K-level field appears only for prosthetic Clinical Prescriptions — it is hidden for non-prosthetic device types (orthotics, cranial helmets, spinal braces)
NOT READY AC-PAT-032 [CPO] Clinical Prescriptions are immutable after creation — corrections supersede the original, which is preserved in the audit trail
Step 4 — Conduct Initial Evaluation
PARTIAL BE FE ✓ AC-PAT-040 [CPO] System verifies the patient record is in Active state before a visit can be started — if the patient is Inactive, reactivation is prompted
NOT READY AC-PAT-042 [CPO] Visit starts in Draft status
PARTIAL BE FE ✓ AC-PAT-045 [CO] For returning patients, medical history is pre-populated from the patient record and editable
NOT READY AC-PAT-344 [CO] Each measurement records: type, anatomical location, laterality (left/right/N/A), value, unit (per org settings), and condition (weight-bearing/non-weight-bearing/supine)
NOT READY FE AC-PAT-345 [CO] For returning patients, previous measurements are visible alongside new measurements
PARTIAL BE FE ✓ AC-PAT-050 [CO] Clinical reasoning fields present: assessment summary, treatment goals, device recommendation, special instructions
READY FE ✓ FE-only AC-PAT-346 [CO] Empty clinical reasoning triggers a warning but does NOT block completion
Step 5 — Mark a required field as clinically unavailable
PARTIAL BE FE ✓ AC-PAT-049 [CO] CPO can mark a required field as "clinically unavailable" with mandatory free-text justification
NOT READY FE AC-PAT-347 [CO] The justification becomes part of the visit record
NOT READY FE AC-PAT-348 [CPO] Visit with documented field unavailability is valid for order creation
Step 6 — Upload scan files and clinical images
PARTIAL BE FE ✓ AC-PAT-102 [CPO] Scan files (STL, OBJ, PLY, STEP) can be uploaded with metadata: body region, laterality, description
PARTIAL BE FE ✓ AC-PAT-103 [CPO] Clinical images (JPG, PNG, HEIC) can be uploaded
READY BE ✓ BE-only AC-PAT-104 [CPO] File integrity verified via checksum on upload
PARTIAL BE FE ✓ AC-PAT-105 [CPO] File size limits enforced per type (500 MB scan, 50 MB image)
NOT READY BE AC-PAT-109 [CPO] If no patient information record exists, the system prompts — but does not block upload
Step 7 — Complete Initial Evaluation and create order
PARTIAL BE FE ✓ AC-PAT-041 [CO] Minimum fields enforced for Initial Evaluation completion: weight, height, at least one measurement, contraindication review completed (either individual category review or a single 'no contraindications identified' confirmation covering all categories)
PARTIAL BE FE ✓ AC-PAT-043 [CPO] On completion, system records: CPO identity and completion timestamp
NOT READY AC-PAT-034 [CPO] Clinical Prescription (izvid) validity checked at "Send to Production" (not at order creation) — must be active, non-expired on the order. For insured patients, Reimbursement Prescription (naročilnica) must also be approved before fabrication begins. Draft orders can exist without either document per AC-PAT-325
#2 Corrective Helmet Treatment — Infant with Guardian 1/16 6%
Step 1 — Create infant patient record
PARTIAL BE FE ✓ AC-PAT-110 [CPO] Entering a DOB indicating a minor triggers a prompt for guardian information
PARTIAL BE FE ✓ AC-PAT-111 [CPO] Minor detection is calculated from DOB, not a manual flag
PARTIAL BE FE ✓ AC-PAT-112 [CPO] Multiple guardians can be entered (both parents), one marked as primary contact
Step 2 — Patient information and guardian consent
READY BE ✓ FE ✓ AC-PAT-024 [CPO] Consent record identifies the guardian as the consenting party, not the infant
PARTIAL BE FE ✓ AC-PAT-114 [CPO] Communication preferences default to the guardian's contact details
Step 3 — Consultation and cranial scan (most patients arrive without prescription)
NOT READY be_implemented AC-PAT-116 [CPO] The scan report (a cranial scan PDF produced by the CPO's scanner software) is uploaded to Pentla. Pentla parses the PDF and extracts measurement data (CVAI, Cephalic Index, circumference, diagonals, severity) into the visit fields — CPO reviews and confirms, no manual re-entry. Parents take a copy of the report to the prescriber
NOT READY AC-PAT-053 [CO] Visit form adapts for the cranial helmet device type (both Consultation and Initial Evaluation)
NOT READY AC-PAT-085 [CO] All cranial measurement fields listed in the Helmet-Specific Visit Fields table (`06_PATIENT_ASSESSMENT_HELMET.md` §Helmet-Specific Visit Fields) are present and functional, including pre-fill from scan report extraction
NOT READY AC-PAT-469 [CO] Deformation Type is captured at Initial Evaluation as a single-select between Positional and Synostotic
NOT READY AC-PAT-470 [CO] Subtype is captured as a single-select within the chosen Deformation Type. The form label shifts to "Positional Deformation Subtype" or "Synostosis Type" based on the Deformation Type selection. Full enum (5 positional subtypes, 6 synostotic subtypes) defined in `06_PATIENT_ASSESSMENT_HELMET.md` §Pathology Classification
NOT READY AC-PAT-471 [CO] The system suggests a Deformation Type based on scan measurements — primarily CVAI pattern and cephalic index. The suggestion appears to the CPO who reviews and can change it. The suggestion is never auto-applied. If scan inputs are missing or flagged low-confidence, no suggestion is shown
NOT READY AC-PAT-131 [CO] Clinical flag checkboxes are available during helmet visits (Consultation, Initial Evaluation, and Progress Review). Multiple flags can be selected
PARTIAL BE ✓ FE AC-PAT-132 [CO] Selected clinical flags are visible to the technician alongside the device configuration — the technician does not need to search the patient record
NOT READY AC-PAT-133 [CO] When atopic dermatitis is flagged, the configurator requires a Protective Layer in the Padding Layer configuration (CPO selects either Microfibre Fabric or 3D Breathable Fabric at clinical discretion)
NOT READY AC-PAT-472 [CPO] The scan report produced by the scanner software can be uploaded to the patient record as a Document attachment. For Consultation patients (no prescription yet), this is the evidence the parents take to the prescriber
Edge Cases
NOT READY AC-PAT-473 [CO] When a device is replaced mid-treatment, the treatment timeline surfaces two reference anchors: (a) the treatment baseline — the original order's Initial Evaluation — and (b) the device reference point — the Progress Review that triggered the replacement, which serves as the starting measurement for the new device. Both anchors are displayed together so the CPO can compare current values against treatment-wide and device-specific starting points (e.g., "treatment started at CVAI 12.0" vs "this device started at CVAI 7.8")
#3 Prosthetic Test Socket Iterations — Returning Patient 0/11 0%
Step 1 — Open returning patient and start Initial Evaluation
PARTIAL BE FE ✓ AC-PAT-045 [CO] Medical history pre-populated from patient record, editable
NOT READY FE AC-PAT-345 [CO] Previous measurements visible alongside new measurements
PARTIAL BE FE ✓ AC-PAT-095 [CO] Previous prosthesis configurations visible with full bill of materials
NOT READY AC-PAT-053 [CO] Visit form adapts for prosthetic device type
PARTIAL BE FE ✓ AC-PAT-090 [CO] All prosthetic-specific fields present and functional
Step 2 — Complete Initial Evaluation and create order
NOT READY FE AC-PAT-363 [CO] Prosthetic Initial Evaluation minimum fields include side and K-level in addition to standard minimums (amputation level is the picker's Subcategory and is not re-asked in the IE)
Step 7 — Same patient returns 5 years later
PARTIAL BE FE ✓ AC-PAT-095 [CO] Previous prosthesis orders visible with full component detail
PARTIAL BE FE ✓ AC-PAT-045 [CO] Medical history pre-populated but editable (weight, medications change over years)
NOT READY FE AC-PAT-345 [CO] Previous measurements visible alongside new measurements
Edge Cases
PARTIAL BE FE ✓ AC-PAT-049 [CO] K0 patient: CPO can mark visit fields as "clinically unavailable" with justification and proceed
PARTIAL BE FE ✓ AC-PAT-049 [CO] Open wound: measurements marked "clinically unavailable" with justification
#15 Patient-to-Order Seamless Flow (Cross-Module) 0/6 0%
NOT READY AC-PAT-200 [BOTH] When the CPO proceeds from a visit to device configuration, patient data (measurements, contraindications, prescriber details, linked scans/images) is already populated — no re-entry. The order is created silently
NOT READY AC-PAT-201 [BOTH] The CPO can navigate back to the patient record from the order context and return to the order without losing work
NOT READY AC-PAT-202 [BOTH] Device type selection reflects the visit context — if the CPO assessed for an AFO, the device type is pre-suggested (but changeable)
NOT READY AC-PAT-203 [BOTH] When the CPO proceeds to device configuration, the configurator applies the pre-fills defined for the device type (per its component tree spec). The CPO reviews and adjusts; pre-fill scope varies by device type — some device types pre-fill from clinical assessment, others only from fabrication-method choices
NOT READY AC-PAT-204 [BOTH] The CPO can complete the full flow (patient creation → visit → device selection → component configuration → offer → order confirmation) without leaving the workflow or re-entering data at any step
PARTIAL BE ✓ FE AC-PAT-205 [BOTH] Clinical Prescription verification and Reimbursement Prescription validation happen at the appropriate moments (per AC-PAT-327 and AC-PAT-323) without interrupting the flow — the system guides, not blocks
#17 Lower Limb Orthotic Visit 0/13 0%
Step 1 — Initial Evaluation with pathology classification
NOT READY AC-PAT-448 [CO] The 12 orthotic SubCategory values (DROP_FOOT, SPASTIC_EQUINUS, SPASTIC_EQUINOVARUS, CROUCH_GAIT, KNEE_RECURVATUM, KNEE_INSTABILITY, KNEE_VALGUS_VARUS, HIP_INSTABILITY, ANKLE_INSTABILITY, FOOT_DEFORMITY, IMMOBILISATION, GAIT_DEVIATION_COMPLEX) are available when the device type is a lower limb orthotic
NOT READY AC-PAT-449 [CO] Type values are filtered to the selected SubCategory — e.g., selecting DROP_FOOT shows only COMPLETE_PARALYSIS, PARTIAL_WEAKNESS, PROGRESSIVE, RECOVERING
NOT READY AC-PAT-450 [CO] The selected SubCategory and Type populate the order's `pathologySubCategory` and `pathologyType` respectively
NOT READY AC-PAT-451 [CO] Functional Grade (FG-1 through FG-4) is used for orthotic patients. K-level field is hidden
Step 2 — Functional assessment fields
NOT READY AC-PAT-452 [CO] Lower limb orthotic Initial Evaluation captures all required fields: Functional Grade, primary functional presentation, clinical specification, range of motion per relevant joint, deformity flexibility (when deformity is present), muscle strength (MMT), weight-bearing status, skin condition, and footwear (AFO/KAFO/HKAFO)
NOT READY AC-PAT-453 [CO] When the SubCategory is neurological (DROP_FOOT, SPASTIC_EQUINUS, SPASTIC_EQUINOVARUS, CROUCH_GAIT, KNEE_RECURVATUM, GAIT_DEVIATION_COMPLEX), muscle tone assessment (Modified Ashworth Scale) is required in addition to muscle strength
NOT READY AC-PAT-454 [CO] Gait observation with structured prompts per deviation type is captured
Step 3 — Fabrication measurements
NOT READY AC-PAT-455 [CO] Fabrication measurements are captured at Initial Evaluation: circumference measurements at multiple levels per device type, length measurements, joint axis locations, foot length and width, and impression method (scan/cast/foam box)
Step 4 — Proceed to device configuration
NOT READY AC-PAT-456 [CO] The selected pathology SubCategory and Type pre-fill the configurator's conditional rules — e.g., DROP_FOOT pre-fills a dorsiflexion assist hinge, SPASTIC_EQUINUS pre-fills a plantarflexion stop
Edge Cases
NOT READY AC-PAT-457 [CO] When a patient has multiple functional deficits (e.g., spasticity + drop foot), the CO classifies by the dominant biomechanical problem. The full clinical picture is captured in the visit narrative
NOT READY AC-PAT-458 [CO] Orthotic-specific fields (Functional Grade, gait observation, muscle tone, pathology SubCategory/Type) are hidden when assessing for a non-orthotic device
NOT READY AC-PAT-467 [CO] Footwear is required for AFO, KAFO, and HKAFO assessments — the AFO-footwear combination is a biomechanical unit
NOT READY AC-PAT-468 [CO] Deformity flexibility (flexible/fixed/mixed) is captured per affected joint when deformity is present — determines whether the device corrects or accommodates

Orders & Configuration

2 ready 13 partial 46 not ready 61 total
#1 New AFO Order — End-to-End 1/35 3%
Step 1 — Select device type, complete Initial Evaluation, proceed to configuration
NOT READY AC-ORD-001 [CPO] When a CPO selects a device type (Device Category and Subcategory) for a patient, the order is created silently in DRAFT — no explicit "Create Order" action
NOT READY AC-ORD-135 [BOTH] The Orders area does not contain a "Create Order" button or any order initiation action. Orders can only be initiated from within a clinical event context (patient page, service visit, warranty evaluation). The Orders area is a monitoring dashboard showing in-progress orders and awaiting-action items
NOT READY AC-ORD-136 [BOTH] Where the patient already has clinical signal (existing prescription, diagnosis, prior order), the system suggests a device type. The CPO confirms or picks a different type. No blank dropdown requiring the CPO to pick from scratch when the platform already knows the answer
NOT READY AC-ORD-002 [CPO] The order record contains a link to the patient at creation; links to visit and prescription are added at Initial Evaluation completion
NOT READY AC-ORD-003 [BOTH] The IE entry on the order is editable while the order is in DRAFT and locked once the order leaves DRAFT (AWAITING_PRESCRIPTION onwards). Post-DRAFT corrections require cancelling the order and starting a new one
NOT READY AC-ORD-007 [CPO] Only CPOs can create new device orders; Production Managers can create repair and maintenance orders
PARTIAL BE ✓ FE AC-ORD-008 [CPO] Orders are scoped to the organisation — users in Organisation A cannot see Organisation B's orders
Step 2 — Configure device in the visual configurator
NOT READY SPEC AC-ORD-030 [BOTH] The configurator displays a visual representation of the device — not a form with dropdowns
NOT READY AC-ORD-031 [CO] Pre-filled mode loads all components per the device type's component tree
NOT READY AC-ORD-032 [CO] Every pre-filled component can be changed, removed, or swapped
NOT READY AC-ORD-033 [CO] Build-from-scratch mode starts with an empty canvas and allows manual component addition
NOT READY AC-ORD-034 [CPO] Switching between modes preserves existing component selections
READY BE ✓ BE-only AC-ORD-036 [CPO] All component actions are logged with timestamp and user
NOT READY AC-ORD-037 [CO] Device categories and types are supported per the defined table
NOT READY AC-ORD-048 [CPO] Reimbursement codes are visible on each component
Step 3 — Attachments
NOT READY AC-ORD-167 [CPO] Required attachments by device type block "Send to Production" until present — hard block
NOT READY AC-ORD-168 [CPO] Production staff see an order's fabrication-relevant attachments with patient PII stripped
NOT READY AC-ORD-169 [CPO] A CPO can remove an attachment from an order while the order is in DRAFT, AWAITING_PRESCRIPTION, or READY_FOR_PRODUCTION; once the order is in IN_PRODUCTION, removal is no longer possible
Step 4 — Set payment path (Path A)
NOT READY FE AC-ORD-080 [CPO] Four payment paths (A, B, C, D) are supported and documented on the order
PARTIAL BE ✓ FE AC-ORD-086 [CPO] Order total is calculated from component unit prices — not manually entered
PARTIAL BE ✓ FE AC-ORD-087 [CPO] Insurance budget is displayed alongside the order total for comparison
NOT READY AC-ORD-088 [CPO] Payment path is required before order submission (submission prerequisite)
Step 5 — Confirm device configuration (saves to DRAFT)
NOT READY AC-ORD-092 [BOTH] "Confirm device configuration" prerequisites verify required components, no hard-block errors, required attachments, documented overrides, prescriber details, and payment path
PARTIAL BE ✓ FE AC-ORD-017 [CPO] Every status transition is logged with timestamp, user, and notes
Step 6 — Send to Production (DRAFT or AWAITING_PRESCRIPTION → READY_FOR_PRODUCTION → IN_PRODUCTION → READY_FOR_FITTING)
NOT READY AC-ORD-155 [BOTH] The order reference number format is defined per organisation in Organisation Settings — Pentla does not impose a single platform-wide format. The platform follows the organisation's existing numbering scheme
NOT READY AC-ORD-156 [BOTH] The order sequence is a single monotonic counter at the organisation level, shared across all units. Two orders never receive the same sequence value
NOT READY AC-ORD-157 [BOTH] Two patients whose names produce identical letter prefixes are disambiguated by the sequence number alone — no additional suffix is added to handle name collisions
NOT READY AC-ORD-158 [CPO] Established organisations onboarding to Pentla can configure a starting sequence value so the platform continues their existing numbering instead of restarting at 1
NOT READY AC-ORD-159 [CPO] Changing the reference number format in Organisation Settings affects only future orders; existing reference numbers are preserved as-is
NOT READY AC-ORD-163 [CPO] A second click on "Send to Production" for an order that has already left DRAFT is a no-op — no duplicate transition, no duplicate notification, no duplicate audit entry. Concurrent clicks from two qualified users surface "the order has already been released" inline to the second clicker
NOT READY AC-ORD-164 [CPO] When a hard requirement on a DRAFT or AWAITING_PRESCRIPTION order reverts to unmet (e.g., the Clinical Prescription expires while the order sits in DRAFT, the Reimbursement Prescription is voided, a recorded Path D payment is reversed), the "Send to Production" button re-disables and the hard-requirement checklist refreshes inline to show the missing item
NOT READY AC-ORD-165 [CPO] When a pre-fabrication order is cancelled, the Cancelled-Order Audit Record is created on the patient with all six fields populated: retired reference number, device type, created at / created by, created during visit, cancelled at / cancelled by, and structured cancellation reason
NOT READY AC-ORD-166 [CPO] An attachment upload that is in flight when an order is cancelled either completes against the order's cancellation retention tier or fails cleanly — no orphaned attachments are left referencing a cancelled order, and the cascade is never partially applied
NOT READY AC-ORD-168 [CPO] Production staff see an order's fabrication-relevant attachments with patient PII stripped
Edge Cases
NOT READY AC-ORD-004 [CPO] Draft orders can be saved and resumed later
#2 Prosthetic Order with Test Socket 0/17 0%
Step 1 — Create order and configure prosthesis
NOT READY AC-ORD-046 [CO] Pre-fill logic populates components based on visit data and patient context
NOT READY AC-ORD-047 [CO] K-level pre-fill is scoped to prosthetics — not applied to all device types
PARTIAL BE FE ✓ AC-ORD-014 [CO] `TEST_DEVICE_*` statuses are only available for orders whose device type includes the test device phase
PARTIAL BE FE ✓ AC-ORD-015 [CPO] The test device phase and treatment phase are independent — a device type may include either, both, or neither
Step 2 — Submit and fabricate test socket
NOT READY AC-ORD-011 [CPO] The unified status flow applies to all orders, with optional phases determined by device type
Step 3 — Test socket Visit A (fit-and-dispense)
NOT READY AC-ORD-143 [CPO] The `FITTING` → `TEST_SOCKET_IN_USE` transition is hard-blocked without a linked Clinical Prescription; blocked attempts are logged as attempted-transition evidence (who, when, missing prescription)
NOT READY AC-ORD-144 [CPO] Visit A and Visit B outcome vocabularies are distinct. Visit A uses dispatch outcomes (dispatched supervised / unsupervised, not-dispatched rebuild / adjust-in-clinic / discontinue, patient declined, deferred); Visit B uses the universal four-way Trial Fitting enum. No same-day approval outcome exists on Visit A
PARTIAL BE ✓ FE AC-ORD-016 [CO] Test socket approve/rebuild decisions can only be made by a CPO
Step 4 — Home trial period (TEST_SOCKET_IN_USE)
NOT READY AC-ORD-145 [CPO] `TEST_SOCKET_IN_USE` is available for orders whose device type includes the test device phase. The status represents the home trial period — the test socket is in the patient's possession between Visit A dispatch and Visit B return
NOT READY AC-ORD-146 [CPO] The order exits `TEST_SOCKET_IN_USE` on a scheduled Visit B return or on an interrupted-trial early return. Both transitions return the order to `FITTING` for in-clinic evaluation
Step 5 — Test socket Visit B (review-after-trial)
NOT READY AC-ORD-106 [CO] Test device phase: each test socket iteration spans a Visit A (fit-and-dispense), a home trial period, a Visit B (review-after-trial), and optional Visit C (in-clinic adjustment) entries. Visit B allows proceed-to-definitive, rebuild, adjust-and-retest, or discontinue decisions
PARTIAL BE ✓ FE AC-ORD-108 [CO] Test socket iterations are numbered (anchored to the fabricated test socket). Each iteration is represented by one Trial Fitting record on the patient file, containing one or more visit entries
NOT READY AC-ORD-147 [CPO] For prosthetic orders in the test device phase, component swap scope is limited to knee unit and foot unit; swaps, finalisations, and un-finalisations are captured via the structured ComponentDecision model with component-class-specific reason enums
Step 6 — Rebuild iteration
NOT READY AC-ORD-148 [CPO] An in-clinic adjustment that materially changes the socket's contact surfaces closes the current iteration with a Rebuild outcome and starts a new iteration (per BR-PROS-009)
Edge Cases
NOT READY AC-ORD-106 [CO] Unlimited test socket iterations — no system-imposed maximum
NOT READY AC-ORD-149 [CPO] Test sockets are treated as temporary custom-made fabrication aids, not independent custom-made devices. A test socket does not generate its own Annex XIII Section 1 statement; Trial Fitting records are retained as part of the definitive device's Annex XIII Section 2 documentation
NOT READY AC-ORD-150 [CPO] Clinical safety gates on test socket dispatch (Clinical Prescription, CPO Clinical Attribution, patient/legal representative acknowledgement, pre-dispatch safety check) apply regardless of the fabrication-aid position
#3 Treatment Phase Devices (Cranial Helmets, Scoliosis Braces) 0/4 0%
Step 1 — Create order and configure helmet
PARTIAL BE FE ✓ AC-ORD-013 [CO] IN_TREATMENT is only available for orders whose device type includes the treatment phase
NOT READY AC-ORD-037 [CO] Device categories and types are supported per the defined table
Step 3 — Enter treatment phase (FITTING → IN_TREATMENT)
PARTIAL BE FE ✓ AC-ORD-105 [CO] Treatment phase: FITTING → IN_TREATMENT → COMPLETE after treatment completion signal
Step 4 — Treatment completion
NOT READY AC-ORD-098 [BOTH] Orders with treatment phase require treatment completion signal for completion
#10 Device Rejection at Fitting 1/5 20%
Step 2 — CPO rejects the device
PARTIAL BE FE ✓ AC-ORD-107 [CO] Device rejection at fitting sends the order back to IN_PRODUCTION with a documented reason
PARTIAL BE FE ✓ AC-ORD-027 [CPO] A device rejected at fitting returns to IN_PRODUCTION with a documented rejection reason
Step 3 — Component modifications during rework
READY BE ✓ BE-only AC-ORD-036 [CPO] All component actions are logged with timestamp and user
Edge Cases
PARTIAL BE ✓ FE AC-ORD-017 [CPO] Every status transition (FITTING → IN_PRODUCTION → FITTING) is logged
NOT READY AC-ORD-020 [CPO] Cancelled and rejected orders retain all data

Component Trees

0 ready 2 partial 34 not ready 36 total
#1 CPO Configures a New AFO — Tree Evaluation End-to-End 0/26 0%
Step 1 — CPO selects device type
NOT READY AC-CTE-001 [BOTH] Device hierarchy presents category → type → variant navigation
NOT READY AC-CTE-003 [CPO] Selecting a variant loads the published tree version for that variant
NOT READY AC-CTE-004 [CPO] If only one variant exists for a type, variant selection is skipped
Step 3 — Tree loads and pre-fill fires
NOT READY AC-CTE-005 [BOTH] The configurator displays all component positions for the selected device type, each clearly indicating whether it is required, optional, or conditionally dependent on another selection
NOT READY AC-CTE-006 [CO] Pre-fill recommendations populate based on patient clinical data from the linked visit — weight, height, activity level, pathology
NOT READY partial_scope AC-CTE-007 [CPO] Pre-fill sources layer in priority order: visit data overrides previous device history — when sources conflict, the higher-priority source wins. Organisation preferences and Pentla defaults add two further layers below previous device history (deferred)
NOT READY AC-CTE-008 [CO] Previous device manufacturer ranks higher in suggestions but does not lock the selection
NOT READY AC-CTE-009 [CPO] Pre-fill populates all positions before the CPO begins interacting with the configurator — there is no visible loading state for pre-fill results after the tree appears
Step 4 — CPO reviews and modifies components
NOT READY AC-CTE-010 [BOTH] Every pre-filled value can be changed, removed, or swapped by the CPO — pre-fill is recommendation, never constraint
NOT READY AC-CTE-011 [CO] Available products for each position come from the organisation's component catalog, filtered by component category
NOT READY AC-CTE-012 [CPO] Preferred catalog entries rank higher in the selection list
PARTIAL BE ✓ FE AC-CTE-013 [CPO] Each component shows its reimbursement code
NOT READY AC-CTE-109 [CPO] Component specifications in the configurator (size, weight class, load rating) display in the organisation's configured measurement system (metric/imperial per AC-ORG-202). Changing the org preference affects display only — stored specifications retain their original units
NOT READY AC-CTE-014 [CO] Selecting a component that triggers a conditional dependency immediately updates affected positions — e.g., selecting an articulated shell requires a hinge
NOT READY AC-CTE-015 [CO] When a component selection triggers a dependency, the configurator responds correctly: required positions appear, excluded positions are removed, recommended positions show a suggestion, and default-value positions are pre-populated — each response matches clinical expectation for the device type
NOT READY AC-CTE-016 [CPO] Changing a component updates only visibly affected positions — unrelated positions remain unchanged
NOT READY AC-CTE-017 [CPO] When the CPO changes a component, dependency and validation updates appear without a visible loading state — affected positions update immediately
PARTIAL BE ✓ FE AC-CTE-018 [CO] Compatibility rules check physical constraints between selected products — e.g., adapter type mismatch between knee and pylon
NOT READY AC-CTE-019 [CO] Hard blocks prevent submission for physical impossibilities — the affected positions display the specific incompatibility (e.g., "selected knee requires 4-hole adapter, selected pylon has tube-clamp adapter") and the CPO can continue configuring other positions while the conflict exists
NOT READY AC-CTE-020 [CO] Soft warnings allow submission with documented clinical justification — the justification field appears in-context at the warning, not on a separate screen
NOT READY AC-CTE-021 [CPO] Positions without a selection do not trigger compatibility warnings — the CPO is not warned about a conflict until both relevant components are selected
Step 5 — Full validation on submission
NOT READY AC-CTE-026 [BOTH] Full validation pass runs at submission: all positions checked, all dependencies verified, all compatibility rules evaluated
NOT READY AC-CTE-027 [CPO] Every position shows a validation status — including valid ones
NOT READY AC-CTE-028 [CPO] Hard blocks prevent submission; soft warnings allow submission with override
Step 6 — Save and resume (edge case)
NOT READY AC-CTE-029 [CPO] Reopening a saved draft re-evaluates the full tree against saved selections using the pinned tree version
NOT READY AC-CTE-030 [CPO] Re-evaluation catches catalog changes since the draft was saved — deactivated products flagged
#2 CPO Configures a Transfemoral Prosthesis — Complex Tree 0/6 0%
Step 1 — Device type selection and pre-fill
NOT READY AC-CTE-031 [CO] Transfemoral prosthesis tree loads with all expected positions: socket assembly (socket shell, socket adapter), liner, knee unit (with proximal/distal adapters, charging dock, battery charger), pylon, functional adapter, foot, ankle adapter, suspension (with socket valve, vacuum pump, suspension sleeve, auxiliary belt), cosmetic cover, stump socks, protective sleeve
NOT READY AC-CTE-032 [CO] K-level from visit pre-fills appropriate knee unit categories — K2 sees fluid-controlled (default), polycentric, and microprocessor; K3 sees microprocessor ranked first and fluid-controlled; K4 sees microprocessor (default) with fluid-controlled and polycentric alternatives
NOT READY AC-CTE-033 [CO] Patient weight pre-fills load-rated components within safe range across all eight weight-validated components (socket adapter, knee unit, knee proximal/distal adapters, pylon, functional adapter, ankle adapter, foot)
Step 2 — Knee unit cascade
NOT READY AC-CTE-034 [CO] Selecting a specific knee unit triggers adapter compatibility check on pylon and cascade to charging dock and battery charger (microprocessor) or exclusion (mechanical, fluid-controlled)
NOT READY AC-CTE-035 [CO] If selected pylon adapter is incompatible with the knee unit, a hard block appears at both affected positions — the CPO can continue configuring other positions and resolve the mismatch before submission
NOT READY AC-CTE-036 [CO] Changing the knee unit re-evaluates charging dock, battery charger, and adapter chain dependencies
#8 Device Type Examples — Clinical Accuracy Spot-Check 0/4 0%
Step 1 — AFO tree accuracy
NOT READY SPEC AC-CTE-102 [CO] Solid AFO tree: shell (with proximal trim as specification), footplate, posterior strap, calf cuff, instep strap (conditional — deep-shell override), padding, liner (conditional on laminated fabrication at DEVICE level), lateral/medial support (per-side valgus/varus, valid across bilateral pairs), T-strap (conditional on tibial torsion), growth margin (conditional on paediatric), rocker bottom, sole insert — positions, per-side alignment rules, and clinical workflow order are clinically accurate
Step 2 — Prosthetic tree accuracy
NOT READY SPEC AC-CTE-104 [CO] Transtibial prosthesis: socket assembly (socket shell, socket adapter), liner, suspension (11 types: PASSIVE_SUCTION, ACTIVE_SUCTION, SAS, HYBRID_LOCK, PIN_LOCK, LANYARD, SUPRACONDYLAR, SUPRACONDYLAR_CUFF, ANATOMIC, CUFF_STRAP, FIGURE_EIGHT_STRAP — with bidirectional liner-suspension rules), functional adapter, pylon, foot, ankle adapter — positions, dependencies, and clinical workflow order are clinically accurate
NOT READY SPEC AC-CTE-105 [CO] Transfemoral prosthesis: socket assembly (socket shell, socket adapter), liner, suspension (7 types: PASSIVE_SUCTION, ACTIVE_SUCTION, SAS, HYBRID_LOCK, PIN_LOCK, LANYARD, KISS — with suspension sleeve, socket valve, vacuum pump, auxiliary belt, and bidirectional liner rules), knee unit (4 types with charging dock/battery charger cascade), functional adapter, pylon, foot, ankle adapter — positions, dependencies, and clinical workflow order are clinically accurate
Step 3 — Cranial helmet accuracy
NOT READY SPEC AC-CTE-107 [CO] Corrective helmet: shell (fabrication method, and method-specific attributes — shell colour + design pattern + optional vapor smoothing finish for 3D-printed, transfer paper (First Choice and Backup Choice — both required before the order can move past DRAFT; 'Pick pattern later' is a tickbox that lets the CPO keep working on the rest of the order without warnings while parents decide, but it doesn't skip the requirement) for thermoplastic; shell designed around the patient's 3D scan with design file linked to order), padding (single spec: coverage, material, thickness, colour, and method-specific perforation attribute — Padding Perforation for 3D-printed with Perforated default, Helmet Perforation for thermoplastic with Don't perforate default; allergy-incompatible materials hidden from catalogue; perforated padding-material variants hidden from catalogue for thermoplastic; protective layer surfaced only when the atopic dermatitis clinical flag is set, then required as a hard rule with CPO selecting Microfibre or 3D Breathable fabric), closure (auto-selected by fabrication method), pathology classification (positional/synostotic with 11 variants — informs the CPO's shell design, does not drive configurator conditionals), clinical flags (hemangioma, atopic dermatitis, drainage, scar, birthmarks, glasses), device preview, and treatment phase with monthly progress reviews reflect clinical practice

Component Catalogue

0 ready 0 partial 0 not ready 0 total