Complete overhaul of the valueset system to use human-readable names
instead of numeric IDs for improved maintainability and API consistency.
- PatientController: Renamed 'Gender' field to 'Sex' in validation rules
- ValuesetController: Changed API endpoints from ID-based (/:num) to name-based (/:any)
- TestsController: Refactored to use ValueSet library instead of direct valueset queries
- Added ValueSet library (app/Libraries/ValueSet.php) with static lookup methods:
- getOptions() - returns dropdown format [{value, label}]
- getLabel(, ) - returns label for a value
- transformLabels(, ) - batch transform records
- get() and getRaw() for Lookups compatibility
- Added ValueSetApiController for public valueset API endpoints
- Added ValueSet refresh endpoint (POST /api/valueset/refresh)
- Added DemoOrderController for testing order creation without auth
- 2026-01-12-000001: Convert valueset references from VID to VValue
- 2026-01-12-000002: Rename patient.Gender column to Sex
- OrderTestController: Now uses OrderTestModel with proper model pattern
- TestsController: Uses ValueSet library for all lookup operations
- ValueSetController: Simplified to use name-based lookups
- Updated all organization (account/site/workstation) dialogs and index views
- Updated specimen container dialogs and index views
- Updated tests_index.php with ValueSet integration
- Updated patient dialog form and index views
- Removed .factory/config.json and CLAUDE.md (replaced by AGENTS.md)
- Consolidated lookups in Lookups.php (removed inline valueset constants)
- Updated all test files to match new field names
- 32 modified files, 17 new files, 2 deleted files
- Net: +661 insertions, -1443 deletions (significant cleanup)
55 lines
3.6 KiB
JSON
55 lines
3.6 KiB
JSON
{
|
|
"version": "1.0.0",
|
|
"generated": "2026-01-12",
|
|
"description": "Value Set Definitions - Static lookup values for CLQMS",
|
|
"valuesets": [
|
|
{"file": "ws_type.json", "VSetID": 1, "VSName": "Workstation Type"},
|
|
{"file": "enable_disable.json", "VSetID": 2, "VSName": "Enable/Disable"},
|
|
{"file": "gender.json", "VSetID": 3, "VSName": "Gender"},
|
|
{"file": "marital_status.json", "VSetID": 4, "VSName": "Marital Status"},
|
|
{"file": "death_indicator.json", "VSetID": 5, "VSName": "Death Indicator"},
|
|
{"file": "identifier_type.json", "VSetID": 6, "VSName": "Identifier Type"},
|
|
{"file": "operation.json", "VSetID": 7, "VSName": "Operation (CRUD)"},
|
|
{"file": "did_type.json", "VSetID": 8, "VSName": "DID Type"},
|
|
{"file": "requested_entity.json", "VSetID": 9, "VSName": "Requested Entity"},
|
|
{"file": "order_priority.json", "VSetID": 10, "VSName": "Order Priority"},
|
|
{"file": "order_status.json", "VSetID": 11, "VSName": "Order Status"},
|
|
{"file": "location_type.json", "VSetID": 12, "VSName": "Location Type"},
|
|
{"file": "additive.json", "VSetID": 13, "VSName": "Additive"},
|
|
{"file": "container_class.json", "VSetID": 14, "VSName": "Container Class"},
|
|
{"file": "specimen_type.json", "VSetID": 15, "VSName": "Specimen Type"},
|
|
{"file": "unit.json", "VSetID": 16, "VSName": "Unit"},
|
|
{"file": "generate_by.json", "VSetID": 17, "VSName": "Generate By"},
|
|
{"file": "specimen_activity.json", "VSetID": 18, "VSName": "Specimen Activity"},
|
|
{"file": "activity_result.json", "VSetID": 19, "VSName": "Activity Result"},
|
|
{"file": "specimen_status.json", "VSetID": 20, "VSName": "Specimen Status"},
|
|
{"file": "specimen_condition.json", "VSetID": 21, "VSName": "Specimen Condition"},
|
|
{"file": "specimen_role.json", "VSetID": 22, "VSName": "Specimen Role"},
|
|
{"file": "collection_method.json", "VSetID": 23, "VSName": "Collection Method"},
|
|
{"file": "body_site.json", "VSetID": 24, "VSName": "Body Site"},
|
|
{"file": "container_size.json", "VSetID": 25, "VSName": "Container Size"},
|
|
{"file": "fasting_status.json", "VSetID": 26, "VSName": "Fasting Status"},
|
|
{"file": "test_type.json", "VSetID": 27, "VSName": "Test Type"},
|
|
{"file": "result_unit.json", "VSetID": 28, "VSName": "Result Unit"},
|
|
{"file": "formula_language.json", "VSetID": 29, "VSName": "Formula Language"},
|
|
{"file": "race.json", "VSetID": 30, "VSName": "Race (Ethnicity)"},
|
|
{"file": "religion.json", "VSetID": 31, "VSName": "Religion"},
|
|
{"file": "ethnic.json", "VSetID": 32, "VSName": "Ethnic"},
|
|
{"file": "country.json", "VSetID": 33, "VSName": "Country"},
|
|
{"file": "container_cap_color.json", "VSetID": 34, "VSName": "Container Cap Color"},
|
|
{"file": "test_activity.json", "VSetID": 35, "VSName": "Test Activity"},
|
|
{"file": "adt_event.json", "VSetID": 36, "VSName": "ADT Event"},
|
|
{"file": "site_type.json", "VSetID": 37, "VSName": "Site Type"},
|
|
{"file": "site_class.json", "VSetID": 38, "VSName": "Site Class"},
|
|
{"file": "entity_type.json", "VSetID": 39, "VSName": "Entity Type"},
|
|
{"file": "area_class.json", "VSetID": 40, "VSName": "Area Class"},
|
|
{"file": "math_sign.json", "VSetID": 41, "VSName": "Math Sign"},
|
|
{"file": "v_category.json", "VSetID": 42, "VSName": "VCategory"},
|
|
{"file": "result_type.json", "VSetID": 43, "VSName": "Result Type"},
|
|
{"file": "reference_type.json", "VSetID": 44, "VSName": "Reference Type"},
|
|
{"file": "range_type.json", "VSetID": 45, "VSName": "Range Type"},
|
|
{"file": "numeric_ref_type.json", "VSetID": 46, "VSName": "Numeric Reference Type"},
|
|
{"file": "text_ref_type.json", "VSetID": 47, "VSName": "Text Reference Type"}
|
|
]
|
|
}
|