feat: update /api/valueset to return {value, label, count} format
This commit is contained in:
parent
5272efa7b9
commit
d5f1d9fc84
@ -27,13 +27,18 @@ class ValueSetController extends \CodeIgniter\Controller
|
||||
foreach ($all as $name => $entry) {
|
||||
if ($search) {
|
||||
$nameLower = strtolower($name);
|
||||
$labelLower = strtolower($entry['VSName'] ?? '');
|
||||
$searchLower = strtolower($search);
|
||||
if (strpos($nameLower, $searchLower) === false) {
|
||||
if (strpos($nameLower, $searchLower) === false && strpos($labelLower, $searchLower) === false) {
|
||||
continue;
|
||||
}
|
||||
}
|
||||
$count = count($entry['values'] ?? []);
|
||||
$result[$name] = $count;
|
||||
$result[] = [
|
||||
'value' => $name,
|
||||
'label' => $entry['VSName'] ?? '',
|
||||
'count' => $count
|
||||
];
|
||||
}
|
||||
return $this->respond([
|
||||
'status' => 'success',
|
||||
|
||||
@ -1,3 +1,17 @@
|
||||
ValueSetListItem:
|
||||
type: object
|
||||
description: Library/system value set summary (from JSON files)
|
||||
properties:
|
||||
value:
|
||||
type: string
|
||||
description: The value set key/name
|
||||
label:
|
||||
type: string
|
||||
description: The display name/label
|
||||
count:
|
||||
type: integer
|
||||
description: Number of items in this value set
|
||||
|
||||
ValueSetLibItem:
|
||||
type: object
|
||||
description: Library/system value set item from JSON files
|
||||
|
||||
@ -2,7 +2,7 @@
|
||||
get:
|
||||
tags: [ValueSets]
|
||||
summary: List lib value sets
|
||||
description: List all library/system value sets from JSON files with item counts. Returns an object where keys are value set names and values are item counts.
|
||||
description: List all library/system value sets from JSON files with item counts. Returns an array of objects with value, label, and count properties.
|
||||
security:
|
||||
- bearerAuth: []
|
||||
parameters:
|
||||
@ -10,7 +10,7 @@
|
||||
in: query
|
||||
schema:
|
||||
type: string
|
||||
description: Optional search term to filter value set names
|
||||
description: Optional search term to filter value set names or labels
|
||||
responses:
|
||||
'200':
|
||||
description: List of lib value sets with item counts
|
||||
@ -23,14 +23,19 @@
|
||||
type: string
|
||||
example: success
|
||||
data:
|
||||
type: object
|
||||
additionalProperties:
|
||||
type: integer
|
||||
description: Number of items in each value set
|
||||
type: array
|
||||
items:
|
||||
$ref: '../components/schemas/valuesets.yaml#/ValueSetListItem'
|
||||
example:
|
||||
sex: 3
|
||||
marital_status: 6
|
||||
order_status: 6
|
||||
- value: sex
|
||||
label: Sex
|
||||
count: 3
|
||||
- value: marital_status
|
||||
label: Marital Status
|
||||
count: 6
|
||||
- value: order_status
|
||||
label: Order Status
|
||||
count: 6
|
||||
|
||||
/api/valueset/{key}:
|
||||
get:
|
||||
|
||||
@ -27,12 +27,25 @@ class ValueSetControllerTest extends CIUnitTestCase
|
||||
|
||||
$this->assertEquals('success', $data['status']);
|
||||
$this->assertIsArray($data['data']);
|
||||
$this->assertArrayHasKey('sex', $data['data']);
|
||||
$this->assertArrayHasKey('specimen_type', $data['data']);
|
||||
$this->assertArrayHasKey('order_priority', $data['data']);
|
||||
$this->assertArrayHasKey('specimen_status', $data['data']);
|
||||
$this->assertIsInt($data['data']['sex']);
|
||||
$this->assertGreaterThan(0, $data['data']['sex']);
|
||||
|
||||
// Find specific valuesets in the array
|
||||
$valuesets = [];
|
||||
foreach ($data['data'] as $item) {
|
||||
$valuesets[$item['value']] = $item;
|
||||
}
|
||||
|
||||
$this->assertArrayHasKey('sex', $valuesets);
|
||||
$this->assertArrayHasKey('specimen_type', $valuesets);
|
||||
$this->assertArrayHasKey('order_priority', $valuesets);
|
||||
$this->assertArrayHasKey('specimen_status', $valuesets);
|
||||
|
||||
// Check structure
|
||||
$this->assertArrayHasKey('value', $valuesets['sex']);
|
||||
$this->assertArrayHasKey('label', $valuesets['sex']);
|
||||
$this->assertArrayHasKey('count', $valuesets['sex']);
|
||||
$this->assertIsInt($valuesets['sex']['count']);
|
||||
$this->assertGreaterThan(0, $valuesets['sex']['count']);
|
||||
$this->assertEquals('Sex', $valuesets['sex']['label']);
|
||||
}
|
||||
|
||||
public function testShowByNameReturnsSingleLookup()
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user