55 lines
3.6 KiB
JSON
Raw Normal View History

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