mahdahar bb7df6b70c feat(valueset): refactor from ID-based to name-based lookups
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)
2026-01-12 16:53:41 +07:00

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"}
]
}