@claude reformatted @alistairewj's feedback as the following
Problem Description
The current implementation uses JavaScript calls to control question visibility in the UI, which presents several significant issues:
- Security Risk: Executing unvalidated JavaScript poses a major security vulnerability
- Platform Limitations: Requires a JavaScript runtime, making it incompatible with non-JS frameworks (e.g., Flutter)
- Anti-pattern: Mixes code and data, violating separation of concerns
Proposed Solution
Adopt a declarative format similar to FHIR's enableWhen functionality, which uses JSON-based conditions rather than executable code.
Action Items
Additional Considerations
- Ensure backward compatibility during transition period
- Consider performance implications of the new approach
- Validate that all existing use cases can be expressed in the declarative format
Example
Current approach (problematic):
visibility: "return responseData.age >= 18"
Proposed approach (declarative):
"enableWhen": [{
"question": "age",
"operator": ">=",
"answerInteger": 18
}]
@claude reformatted @alistairewj's feedback as the following
Problem Description
The current implementation uses JavaScript calls to control question visibility in the UI, which presents several significant issues:
Proposed Solution
Adopt a declarative format similar to FHIR's
enableWhenfunctionality, which uses JSON-based conditions rather than executable code.Action Items
enableWhenspecification as a reference implementationAdditional Considerations
Example
Current approach (problematic):
visibility: "return responseData.age >= 18"Proposed approach (declarative):