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