CLQMS: Test Definition API Examples

5 min read

Test Definition API Examples

This document provides API examples for test-related endpoints in the CLQMS Backend.

Base URL: http://localhost:8080/v1/tests

1. testdefsite - Main Test Definitions

The main test definitions table. Test types include: TEST, PARAM, CALC, GROUP, TITLE.

GET /v1/tests - List all tests

Request:

curl -X GET "http://localhost:8080/v1/tests" \
  -H "Cookie: token=<jwt_token>"

Query Parameters:

Parameter Type Description
SiteID int Filter by site
TestType int Filter by test type (valueset ID)
VisibleScr int Filter by screen visibility (0 or 1)
VisibleRpt int Filter by report visibility (0 or 1)
TestSiteName string Search keyword

Response (200):

{
  "status": "success",
  "message": "Data fetched successfully",
  "data": [
    {
      "TestSiteID": 1,
      "TestSiteCode": "GLU",
      "TestSiteName": "Glucose",
      "TestType": 27,
      "TypeCode": "TEST",
      "TypeName": "Test",
      "SeqScr": 1,
      "SeqRpt": 1,
      "VisibleScr": 1,
      "VisibleRpt": 1,
      "CountStat": 1,
      "StartDate": "2025-01-01 00:00:00",
      "EndDate": null
    }
  ]
}

GET /v1/tests/{id} - Get single test with details

Request:

curl -X GET "/v1/tests/1" \
  -H "Cookie: token=<jwt_token>"

Response (200) - TEST type with refnum:

{
  "status": "success",
  "message": "Data fetched successfully",
  "data": {
    "TestSiteID": 1,
    "TestSiteCode": "GLU",
    "TestSiteName": "Glucose",
    "TestType": 27,
    "TypeCode": "TEST",
    "TypeName": "Test",
    "Description": "Fasting blood glucose",
    "SeqScr": 1,
    "SeqRpt": 1,
    "VisibleScr": 1,
    "VisibleRpt": 1,
    "CountStat": 1,
    "StartDate": "2025-01-01 00:00:00",
    "EndDate": null,
    "testdeftech": [
      {
        "TestTechID": 1,
        "TestSiteID": 1,
        "DisciplineID": 1,
        "DisciplineName": "Chemistry",
        "DepartmentID": 1,
        "DepartmentName": "Laboratory",
        "ResultType": "NMRC",
        "RefType": 1,
        "VSet": null,
        "ReqQty": 1,
        "ReqQtyUnit": "mL",
        "Unit1": "mg/dL",
        "Factor": null,
        "Unit2": null,
        "Decimal": 0,
        "CollReq": "Fasting",
        "Method": "GOD-PAP",
        "ExpectedTAT": 24,
        "EndDate": null
      }
    ],
    "testmap": [],
    "refnum": [
      {
        "RefNumID": 1,
        "NumRefType": 1,
        "NumRefTypeVValue": "AB",
        "RangeType": 1,
        "RangeTypeVValue": "NORMAL",
        "Sex": 0,
        "SexVValue": null,
        "AgeStart": 0,
        "AgeEnd": 150,
        "LowSign": 1,
        "LowSignVValue": ">=",
        "Low": 70,
        "HighSign": 2,
        "HighSignVValue": "<=",
        "High": 100,
        "Flag": "N"
      }
    ],
    "refTypeOptions": [
      { "vid": 1, "vvalue": "NMRC", "vdesc": "Numeric" },
      { "vid": 2, "vvalue": "TEXT", "vdesc": "Text" }
    ],
    "sexOptions": [
      { "vid": 0, "vvalue": null, "vdesc": "All" },
      { "vid": 1, "vvalue": "M", "vdesc": "Male" },
      { "vid": 2, "vvalue": "F", "vdesc": "Female" }
    ],
    "mathSignOptions": [
      { "vid": 1, "vvalue": ">=", "vdesc": "Greater or Equal" },
      { "vid": 2, "vvalue": "<=", "vdesc": "Less or Equal" },
      { "vid": 3, "vvalue": ">", "vdesc": "Greater Than" },
      { "vid": 4, "vvalue": "<", "vdesc": "Less Than" }
    ],
    "numRefTypeOptions": [
      { "vid": 1, "vvalue": "AB", "vdesc": "Absolute" },
      { "vid": 2, "vvalue": "DIFF", "vdesc": "Differential" }
    ],
    "rangeTypeOptions": [
      { "vid": 1, "vvalue": "NORMAL", "vdesc": "Normal" },
      { "vid": 2, "vvalue": "PANIC", "vdesc": "Panic" },
      { "vid": 3, "vvalue": "DELTA", "vdesc": "Delta" }
    ]
  }
}

POST /v1/tests - Create new test

Request:

curl -X POST "http://localhost:8080/v1/tests" \
  -H "Content-Type: application/json" \
  -H "Cookie: token=<jwt_token>" \
  -d '{
    "SiteID": 1,
    "TestSiteCode": "HBA1C",
    "TestSiteName": "Hemoglobin A1c",
    "TestType": 27,
    "Description": "Glycated hemoglobin test",
    "SeqScr": 10,
    "SeqRpt": 10,
    "VisibleScr": 1,
    "VisibleRpt": 1,
    "CountStat": 1,
    "details": {
      "DisciplineID": 1,
      "DepartmentID": 1,
      "ResultType": "NMRC",
      "RefType": 1,
      "Unit1": "%",
      "Decimal": 1,
      "Method": "HPLC"
    },
    "refnum": [
      {
        "NumRefType": 1,
        "RangeType": 1,
        "Sex": 0,
        "AgeStart": 0,
        "AgeEnd": 150,
        "LowSign": 1,
        "Low": 4,
        "HighSign": 2,
        "High": 5.6,
        "Flag": "N"
      }
    ]
  }'

Response (201):

{
  "status": "created",
  "message": "Test created successfully",
  "data": {
    "TestSiteId": 11
  }
}

PUT/PATCH /v1/tests/{id} - Update test

curl -X PATCH "http://localhost:8080/v1/tests/11" \
  -H "Content-Type: application/json" \
  -H "Cookie: token=<jwt_token>" \
  -d '{
    "TestSiteName": "Hemoglobin A1c (Updated)",
    "SeqScr": 15
  }'

DELETE /v1/tests/{id} - Soft delete test

curl -X DELETE "http://localhost:8080/v1/tests/11" \
  -H "Content-Type: application/json" \
  -H "Cookie: token=<jwt_token>" \
  -d '{"TestSiteID": 11}'

2. testdefcal - Calculation Test Details

Calculation tests (CALC type) have formula-based results.

Fields:

Field Type Description
TestCalID int Primary key
TestSiteID int Foreign key to testdefsite
FormulaInput string Input parameters
FormulaCode string Formula identifier
Method string Calculation method

3. testdefgrp - Group Test Members

Group tests (GROUP type) contain multiple member tests.

Fields:

Field Type Description
TestGrpID int Primary key
TestSiteID int Parent test (the group)
Member int Foreign key to member test
MemberTypeCode string Member test type code

4. refnum - Numeric Reference Ranges

Numeric reference ranges for NMRC type results.

Valueset IDs:

Valueset ID Description
NumRefType 46 Numeric reference type
RangeType 45 Range type (NORMAL, PANIC, DELTA)
Sex 3 Gender values
MathSign 41 Mathematical signs (>=, <=, >, <)

Test Types Summary

Type Code Type Name Related Table Description
TEST Test testdeftech + refnum/reftxt Standard test with numeric/text results
PARAM Parameter testdeftech + refnum/reftxt Parameter test
CALC Calculation testdefcal Formula-based calculated result
GROUP Group testdefgrp Group of multiple tests
TITLE Title testmap only Title/marker in reports

Common Valueset IDs

ID Name Used For
3 Sex Gender selection
27 Test Type testdefsite.TestType
44 Ref Type testdeftech.RefType, testdefcal.RefType
45 Range Type refnum.RangeType
46 Num Ref Type refnum.NumRefType
47 Txt Ref Type reftxt.TxtRefType
41 Math Sign refnum.LowSign, refnum.HighSign

Authentication

All endpoints require JWT authentication via cookie:

-H "Cookie: token=<jwt_token>"

Error Responses

400 Bad Request:

{
  "status": "error",
  "errors": {
    "TestSiteCode": "The TestSiteCode field is required.",
    "TestSiteName": "The TestSiteName field is required."
  }
}

404 Not Found:

{
  "status": "error",
  "error": "Test not found"
}

500 Server Error:

{
  "status": "error",
  "error": "Something went wrong: <error message>"
}