clqms-be/docs/openapi.yaml
2026-01-26 12:58:09 +07:00

3288 lines
80 KiB
YAML

{
"openapi": "3.0.3",
"info": {
"title": "CLQMS API",
"description": "Clinical Laboratory Quality Management System REST API",
"version": "1.0.0",
"contact": {
"name": "CLQMS Development Team"
}
},
"servers": [
{
"url": "http://localhost/clqms01/",
"description": "Development server"
}
],
"components": {
"securitySchemes": {
"jwtAuth": {
"type": "apiKey",
"in": "cookie",
"name": "token",
"description": "JWT token stored in HTTP-only cookie"
}
},
"schemas": {
"ApiResponse": {
"type": "object",
"properties": {
"status": {
"type": "string",
"enum": ["success", "failed"],
"description": "Response status"
},
"message": {
"type": "string",
"description": "Response message"
},
"data": {
"type": "object",
"description": "Response data payload"
}
}
},
"Patient": {
"type": "object",
"properties": {
"InternalPID": {
"type": "integer",
"description": "Internal patient ID"
},
"PatientID": {
"type": "string",
"maxLength": 30,
"description": "Patient identifier"
},
"AlternatePID": {
"type": "string",
"maxLength": 30,
"description": "Alternate patient ID"
},
"Prefix": {
"type": "string",
"maxLength": 10,
"description": "Name prefix"
},
"NameFirst": {
"type": "string",
"minLength": 1,
"maxLength": 60,
"description": "First name"
},
"NameMiddle": {
"type": "string",
"minLength": 1,
"maxLength": 60,
"description": "Middle name"
},
"NameLast": {
"type": "string",
"minLength": 1,
"maxLength": 60,
"description": "Last name"
},
"NameMaiden": {
"type": "string",
"minLength": 1,
"maxLength": 60,
"description": "Maiden name"
},
"Suffix": {
"type": "string",
"maxLength": 10,
"description": "Name suffix"
},
"Sex": {
"type": "string",
"description": "Gender (M/F)"
},
"Birthdate": {
"type": "string",
"format": "date",
"description": "Date of birth"
},
"PlaceOfBirth": {
"type": "string",
"maxLength": 100,
"description": "Place of birth"
},
"Street_1": {
"type": "string",
"maxLength": 255,
"description": "Address line 1"
},
"Street_2": {
"type": "string",
"maxLength": 255,
"description": "Address line 2"
},
"Street_3": {
"type": "string",
"maxLength": 255,
"description": "Address line 3"
},
"City": {
"type": "string",
"description": "City"
},
"Province": {
"type": "string",
"description": "Province/State"
},
"ZIP": {
"type": "string",
"maxLength": 10,
"description": "Postal code"
},
"EmailAddress1": {
"type": "string",
"format": "email",
"maxLength": 100,
"description": "Primary email"
},
"EmailAddress2": {
"type": "string",
"format": "email",
"maxLength": 100,
"description": "Secondary email"
},
"Phone": {
"type": "string",
"pattern": "^\\+?[0-9]{8,15}$",
"description": "Phone number"
},
"MobilePhone": {
"type": "string",
"pattern": "^\\+?[0-9]{8,15}$",
"description": "Mobile phone number"
},
"PatIdt": {
"$ref": "#/components/schemas/PatientIdentifier"
},
"PatAtt": {
"type": "array",
"items": {
"$ref": "#/components/schemas/PatientAttribute"
},
"description": "Patient attributes/addresses"
}
}
},
"PatientIdentifier": {
"type": "object",
"properties": {
"IdentifierType": {
"type": "string",
"description": "Identifier type (KTP, PASS, SSN, SIM, KTAS)"
},
"Identifier": {
"type": "string",
"maxLength": 255,
"description": "Identifier value"
}
}
},
"PatientAttribute": {
"type": "object",
"properties": {
"Address": {
"type": "string",
"description": "Patient address"
}
}
},
"PatVisit": {
"type": "object",
"properties": {
"PatVisitID": {
"type": "integer",
"description": "Patient visit ID"
},
"InternalPID": {
"type": "integer",
"description": "Internal patient ID"
},
"VisitDate": {
"type": "string",
"format": "date-time",
"description": "Visit date/time"
},
"VisitType": {
"type": "string",
"description": "Type of visit"
},
"DepartmentID": {
"type": "integer",
"description": "Department ID"
},
"ProviderID": {
"type": "integer",
"description": "Provider/Doctor ID"
},
"VisitStatus": {
"type": "string",
"description": "Visit status"
}
}
},
"OrderTest": {
"type": "object",
"properties": {
"OrderID": {
"type": "integer",
"description": "Order ID"
},
"InternalPID": {
"type": "integer",
"description": "Patient ID"
},
"PatVisitID": {
"type": "integer",
"description": "Visit ID"
},
"OrderDateTime": {
"type": "string",
"format": "date-time",
"description": "Order date/time"
},
"Priority": {
"type": "string",
"description": "Order priority"
},
"OrderStatus": {
"type": "string",
"enum": ["ORD", "SCH", "ANA", "VER", "REV", "REP"],
"description": "Order status"
},
"OrderingProvider": {
"type": "string",
"description": "Ordering provider"
},
"DepartmentID": {
"type": "integer",
"description": "Department ID"
},
"WorkstationID": {
"type": "integer",
"description": "Workstation ID"
},
"Tests": {
"type": "array",
"items": {
"$ref": "#/components/schemas/OrderTestItem"
}
}
}
},
"OrderTestItem": {
"type": "object",
"properties": {
"TestID": {
"type": "integer",
"description": "Test ID"
},
"TestCode": {
"type": "string",
"description": "Test code"
},
"TestName": {
"type": "string",
"description": "Test name"
}
}
},
"Specimen": {
"type": "object",
"properties": {
"SID": {
"type": "integer",
"description": "Specimen ID"
},
"OrderID": {
"type": "integer",
"description": "Order ID"
},
"InternalPID": {
"type": "integer",
"description": "Patient ID"
},
"SpecimenType": {
"type": "string",
"description": "Specimen type"
},
"ContainerCode": {
"type": "string",
"description": "Container code"
},
"CollectionDateTime": {
"type": "string",
"format": "date-time",
"description": "Collection date/time"
},
"ReceivedDateTime": {
"type": "string",
"format": "date-time",
"description": "Received date/time"
},
"Status": {
"type": "string",
"description": "Specimen status"
}
}
},
"TestDefinition": {
"type": "object",
"properties": {
"TestID": {
"type": "integer",
"description": "Test ID"
},
"TestCode": {
"type": "string",
"description": "Test code"
},
"TestName": {
"type": "string",
"description": "Test name"
},
"SpecimenType": {
"type": "string",
"description": "Required specimen type"
},
"DepartmentID": {
"type": "integer",
"description": "Department ID"
},
"Category": {
"type": "string",
"description": "Test category"
}
}
},
"ValueSet": {
"type": "object",
"properties": {
"ValueSetID": {
"type": "integer",
"description": "Value set ID"
},
"ValueSetKey": {
"type": "string",
"description": "Value set key"
},
"Name": {
"type": "string",
"description": "Value set name"
},
"Description": {
"type": "string",
"description": "Value set description"
},
"Items": {
"type": "array",
"items": {
"$ref": "#/components/schemas/ValueSetItem"
}
}
}
},
"ValueSetItem": {
"type": "object",
"properties": {
"ItemID": {
"type": "integer",
"description": "Item ID"
},
"Value": {
"type": "string",
"description": "Item value/code"
},
"Label": {
"type": "string",
"description": "Item display label"
},
"Sequence": {
"type": "integer",
"description": "Display order"
}
}
},
"ValueSetDef": {
"type": "object",
"properties": {
"VSetDefID": {
"type": "integer",
"description": "Value set definition ID"
},
"ValueSetKey": {
"type": "string",
"description": "Value set key"
},
"Name": {
"type": "string",
"description": "Definition name"
}
}
},
"Location": {
"type": "object",
"properties": {
"LocationID": {
"type": "integer",
"description": "Location ID"
},
"Code": {
"type": "string",
"description": "Location code"
},
"Name": {
"type": "string",
"description": "Location name"
},
"Type": {
"type": "string",
"description": "Location type"
},
"ParentID": {
"type": "integer",
"description": "Parent location ID"
}
}
},
"Contact": {
"type": "object",
"properties": {
"ContactID": {
"type": "integer",
"description": "Contact ID"
},
"Name": {
"type": "string",
"description": "Contact name"
},
"Type": {
"type": "string",
"description": "Contact type"
},
"Phone": {
"type": "string",
"description": "Phone number"
},
"Email": {
"type": "string",
"format": "email",
"description": "Email address"
}
}
},
"Organization": {
"type": "object",
"properties": {
"AccountID": {
"type": "integer",
"description": "Account ID"
},
"AccountCode": {
"type": "string",
"description": "Account code"
},
"AccountName": {
"type": "string",
"description": "Account name"
}
}
},
"Site": {
"type": "object",
"properties": {
"SiteID": {
"type": "integer",
"description": "Site ID"
},
"SiteCode": {
"type": "string",
"description": "Site code"
},
"SiteName": {
"type": "string",
"description": "Site name"
},
"AccountID": {
"type": "integer",
"description": "Account ID"
}
}
},
"Department": {
"type": "object",
"properties": {
"DepartmentID": {
"type": "integer",
"description": "Department ID"
},
"DepartmentCode": {
"type": "string",
"description": "Department code"
},
"DepartmentName": {
"type": "string",
"description": "Department name"
},
"SiteID": {
"type": "integer",
"description": "Site ID"
}
}
},
"Discipline": {
"type": "object",
"properties": {
"DisciplineID": {
"type": "integer",
"description": "Discipline ID"
},
"DisciplineCode": {
"type": "string",
"description": "Discipline code"
},
"DisciplineName": {
"type": "string",
"description": "Discipline name"
}
}
},
"Workstation": {
"type": "object",
"properties": {
"WorkstationID": {
"type": "integer",
"description": "Workstation ID"
},
"WorkstationCode": {
"type": "string",
"description": "Workstation code"
},
"WorkstationName": {
"type": "string",
"description": "Workstation name"
},
"DepartmentID": {
"type": "integer",
"description": "Department ID"
}
}
},
"AreaGeo": {
"type": "object",
"properties": {
"AreaGeoID": {
"type": "integer",
"description": "Area ID"
},
"ParentID": {
"type": "integer",
"description": "Parent area ID"
},
"AreaName": {
"type": "string",
"description": "Area name"
},
"Level": {
"type": "integer",
"description": "Geographic level"
}
}
},
"SpecimenContainerDef": {
"type": "object",
"properties": {
"ContainerDefID": {
"type": "integer",
"description": "Container definition ID"
},
"ContainerCode": {
"type": "string",
"description": "Container code"
},
"ContainerName": {
"type": "string",
"description": "Container name"
},
"Volume": {
"type": "string",
"description": "Required volume"
},
"SpecimenType": {
"type": "string",
"description": "Specimen type"
}
}
},
"SpecimenPrep": {
"type": "object",
"properties": {
"PrepID": {
"type": "integer",
"description": "Preparation ID"
},
"PrepCode": {
"type": "string",
"description": "Preparation code"
},
"PrepName": {
"type": "string",
"description": "Preparation name"
}
}
},
"SpecimenStatus": {
"type": "object",
"properties": {
"StatusID": {
"type": "integer",
"description": "Status ID"
},
"StatusCode": {
"type": "string",
"description": "Status code"
},
"StatusName": {
"type": "string",
"description": "Status name"
}
}
},
"Counter": {
"type": "object",
"properties": {
"CounterID": {
"type": "integer",
"description": "Counter ID"
},
"CounterName": {
"type": "string",
"description": "Counter name"
},
"CounterValue": {
"type": "integer",
"description": "Current counter value"
},
"CounterPrefix": {
"type": "string",
"description": "Counter prefix"
},
"CounterSuffix": {
"type": "string",
"description": "Counter suffix"
}
}
},
"Error": {
"type": "object",
"properties": {
"status": {
"type": "string",
"enum": ["failed"],
"description": "Error status"
},
"message": {
"type": "string",
"description": "Error message"
}
}
},
"LoginRequest": {
"type": "object",
"required": ["username", "password"],
"properties": {
"username": {
"type": "string",
"description": "Username"
},
"password": {
"type": "string",
"format": "password",
"description": "Password"
}
}
},
"LoginResponse": {
"type": "object",
"properties": {
"status": {
"type": "string",
"enum": ["success"]
},
"code": {
"type": "integer",
"description": "HTTP status code"
},
"message": {
"type": "string",
"description": "Response message"
}
}
}
}
},
"security": [
{
"jwtAuth": []
}
],
"paths": {
"/v2/auth/login": {
"post": {
"tags": ["Authentication"],
"summary": "User login",
"description": "Authenticate user and receive JWT token in HTTP-only cookie",
"requestBody": {
"required": true,
"content": {
"application/x-www-form-urlencoded": {
"schema": {
"$ref": "#/components/schemas/LoginRequest"
}
}
}
},
"responses": {
"200": {
"description": "Login successful",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/LoginResponse"
}
}
}
},
"401": {
"description": "Invalid credentials",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
}
}
}
},
"/v2/auth/logout": {
"post": {
"tags": ["Authentication"],
"summary": "User logout",
"description": "Clear JWT token cookie",
"responses": {
"200": {
"description": "Logout successful"
}
}
}
},
"/v2/auth/check": {
"get": {
"tags": ["Authentication"],
"summary": "Check authentication status",
"description": "Verify if JWT token is valid",
"responses": {
"200": {
"description": "Authenticated",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiResponse"
}
}
}
},
"401": {
"description": "Not authenticated",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
}
}
}
},
"/api/auth/login": {
"post": {
"tags": ["Authentication"],
"summary": "User login (legacy)",
"description": "Authenticate user and receive JWT token in HTTP-only cookie",
"requestBody": {
"required": true,
"content": {
"application/x-www-form-urlencoded": {
"schema": {
"$ref": "#/components/schemas/LoginRequest"
}
}
}
},
"responses": {
"200": {
"description": "Login successful",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/LoginResponse"
}
}
}
},
"401": {
"description": "Invalid credentials",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Error"
}
}
}
}
}
}
},
"/api/auth/register": {
"post": {
"tags": ["Authentication"],
"summary": "Register new user",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"required": ["username", "password"],
"properties": {
"username": {
"type": "string"
},
"password": {
"type": "string",
"format": "password"
}
}
}
}
}
},
"responses": {
"201": {
"description": "User created successfully"
},
"409": {
"description": "Username already exists"
}
}
}
},
"/api/patient": {
"get": {
"tags": ["Patient"],
"summary": "List patients",
"description": "Get list of patients with optional filtering",
"parameters": [
{
"name": "InternalPID",
"in": "query",
"schema": {
"type": "integer"
}
},
{
"name": "PatientID",
"in": "query",
"schema": {
"type": "string"
}
},
{
"name": "Name",
"in": "query",
"schema": {
"type": "string"
}
},
{
"name": "Birthdate",
"in": "query",
"schema": {
"type": "string",
"format": "date"
}
}
],
"responses": {
"200": {
"description": "List of patients",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiResponse"
}
}
}
}
}
},
"post": {
"tags": ["Patient"],
"summary": "Create patient",
"description": "Create a new patient record",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Patient"
}
}
}
},
"responses": {
"201": {
"description": "Patient created successfully"
},
"400": {
"description": "Validation error"
}
}
},
"patch": {
"tags": ["Patient"],
"summary": "Update patient",
"description": "Update an existing patient record",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Patient"
}
}
}
},
"responses": {
"200": {
"description": "Patient updated successfully"
},
"400": {
"description": "Validation error"
}
}
},
"delete": {
"tags": ["Patient"],
"summary": "Delete patient (soft delete)",
"description": "Soft delete a patient record",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"required": ["InternalPID"],
"properties": {
"InternalPID": {
"type": "integer"
}
}
}
}
}
},
"responses": {
"200": {
"description": "Patient deleted successfully"
},
"400": {
"description": "Invalid patient ID"
},
"404": {
"description": "Patient not found"
}
}
}
},
"/api/patient/{InternalPID}": {
"get": {
"tags": ["Patient"],
"summary": "Get patient by ID",
"parameters": [
{
"name": "InternalPID",
"in": "path",
"required": true,
"schema": {
"type": "integer"
}
}
],
"responses": {
"200": {
"description": "Patient details",
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ApiResponse"
}
}
}
}
}
}
},
"/api/patient/check": {
"get": {
"tags": ["Patient"],
"summary": "Check patient existence",
"parameters": [
{
"name": "PatientID",
"in": "query",
"schema": {
"type": "string"
}
},
{
"name": "EmailAddress1",
"in": "query",
"schema": {
"type": "string",
"format": "email"
}
}
],
"responses": {
"200": {
"description": "Check result",
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"status": {
"type": "string"
},
"message": {
"type": "string"
},
"data": {
"type": "boolean",
"description": "true if not exists (available), false if exists"
}
}
}
}
}
},
"400": {
"description": "Missing required parameter"
}
}
}
},
"/api/patvisit": {
"get": {
"tags": ["Patient Visit"],
"summary": "List patient visits",
"responses": {
"200": {
"description": "List of visits"
}
}
},
"post": {
"tags": ["Patient Visit"],
"summary": "Create patient visit",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/PatVisit"
}
}
}
},
"responses": {
"201": {
"description": "Visit created successfully"
}
}
},
"patch": {
"tags": ["Patient Visit"],
"summary": "Update patient visit",
"responses": {
"200": {
"description": "Visit updated successfully"
}
}
},
"delete": {
"tags": ["Patient Visit"],
"summary": "Delete patient visit (soft delete)",
"responses": {
"200": {
"description": "Visit deleted successfully"
}
}
}
},
"/api/patvisit/patient/{InternalPID}": {
"get": {
"tags": ["Patient Visit"],
"summary": "Get visits by patient",
"parameters": [
{
"name": "InternalPID",
"in": "path",
"required": true,
"schema": {
"type": "integer"
}
}
],
"responses": {
"200": {
"description": "List of patient visits"
}
}
}
},
"/api/patvisit/{PatVisitID}": {
"get": {
"tags": ["Patient Visit"],
"summary": "Get visit by ID",
"parameters": [
{
"name": "PatVisitID",
"in": "path",
"required": true,
"schema": {
"type": "integer"
}
}
],
"responses": {
"200": {
"description": "Visit details"
}
}
}
},
"/api/ordertest": {
"get": {
"tags": ["Order Test"],
"summary": "List test orders",
"parameters": [
{
"name": "InternalPID",
"in": "query",
"schema": {
"type": "integer"
},
"description": "Filter by patient ID"
}
],
"responses": {
"200": {
"description": "List of orders"
}
}
},
"post": {
"tags": ["Order Test"],
"summary": "Create test order",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"required": ["InternalPID"],
"properties": {
"InternalPID": {
"type": "integer",
"description": "Patient ID"
},
"PatVisitID": {
"type": "integer",
"description": "Visit ID (optional)"
},
"Priority": {
"type": "string",
"description": "Order priority"
},
"Tests": {
"type": "array",
"items": {
"type": "integer",
"description": "Test IDs"
}
}
}
}
}
}
},
"responses": {
"201": {
"description": "Order created successfully"
},
"400": {
"description": "Validation error"
}
}
},
"patch": {
"tags": ["Order Test"],
"summary": "Update test order",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"OrderID": {
"type": "integer"
},
"Priority": {
"type": "string"
},
"OrderStatus": {
"type": "string"
},
"OrderingProvider": {
"type": "string"
},
"DepartmentID": {
"type": "integer"
},
"WorkstationID": {
"type": "integer"
}
}
}
}
}
},
"responses": {
"200": {
"description": "Order updated successfully"
}
}
},
"delete": {
"tags": ["Order Test"],
"summary": "Delete test order (soft delete)",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"required": ["OrderID"],
"properties": {
"OrderID": {
"type": "integer"
}
}
}
}
}
},
"responses": {
"200": {
"description": "Order deleted successfully"
}
}
}
},
"/api/ordertest/{OrderID}": {
"get": {
"tags": ["Order Test"],
"summary": "Get order by ID",
"parameters": [
{
"name": "OrderID",
"in": "path",
"required": true,
"schema": {
"type": "integer"
}
}
],
"responses": {
"200": {
"description": "Order details"
}
}
}
},
"/api/ordertest/status": {
"post": {
"tags": ["Order Test"],
"summary": "Update order status",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"required": ["OrderID", "OrderStatus"],
"properties": {
"OrderID": {
"type": "integer"
},
"OrderStatus": {
"type": "string",
"enum": ["ORD", "SCH", "ANA", "VER", "REV", "REP"],
"description": "Order status code"
}
}
}
}
}
},
"responses": {
"200": {
"description": "Status updated successfully"
},
"400": {
"description": "Invalid status"
}
}
}
},
"/api/specimen": {
"get": {
"tags": ["Specimen"],
"summary": "List specimens",
"responses": {
"200": {
"description": "List of specimens"
}
}
},
"post": {
"tags": ["Specimen"],
"summary": "Create specimen",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Specimen"
}
}
}
},
"responses": {
"201": {
"description": "Specimen created successfully"
}
}
},
"patch": {
"tags": ["Specimen"],
"summary": "Update specimen",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Specimen"
}
}
}
},
"responses": {
"200": {
"description": "Specimen updated successfully"
}
}
}
},
"/api/specimen/{SID}": {
"get": {
"tags": ["Specimen"],
"summary": "Get specimen by ID",
"parameters": [
{
"name": "SID",
"in": "path",
"required": true,
"schema": {
"type": "integer"
}
}
],
"responses": {
"200": {
"description": "Specimen details"
}
}
}
},
"/api/specimen/container": {
"get": {
"tags": ["Specimen"],
"summary": "List container definitions",
"responses": {
"200": {
"description": "List of containers"
}
}
},
"post": {
"tags": ["Specimen"],
"summary": "Create container definition",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/SpecimenContainerDef"
}
}
}
},
"responses": {
"201": {
"description": "Container created successfully"
}
}
},
"patch": {
"tags": ["Specimen"],
"summary": "Update container definition",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/SpecimenContainerDef"
}
}
}
},
"responses": {
"200": {
"description": "Container updated successfully"
}
}
}
},
"/api/specimen/container/{ContainerDefID}": {
"get": {
"tags": ["Specimen"],
"summary": "Get container definition by ID",
"parameters": [
{
"name": "ContainerDefID",
"in": "path",
"required": true,
"schema": {
"type": "integer"
}
}
],
"responses": {
"200": {
"description": "Container details"
}
}
}
},
"/api/specimen/prep": {
"get": {
"tags": ["Specimen"],
"summary": "List specimen preparations",
"responses": {
"200": {
"description": "List of preparations"
}
}
},
"post": {
"tags": ["Specimen"],
"summary": "Create specimen preparation",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/SpecimenPrep"
}
}
}
},
"responses": {
"201": {
"description": "Preparation created successfully"
}
}
},
"patch": {
"tags": ["Specimen"],
"summary": "Update specimen preparation",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/SpecimenPrep"
}
}
}
},
"responses": {
"200": {
"description": "Preparation updated successfully"
}
}
}
},
"/api/specimen/status": {
"get": {
"tags": ["Specimen"],
"summary": "List specimen statuses",
"responses": {
"200": {
"description": "List of statuses"
}
}
},
"post": {
"tags": ["Specimen"],
"summary": "Create specimen status",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/SpecimenStatus"
}
}
}
},
"responses": {
"201": {
"description": "Status created successfully"
}
}
},
"patch": {
"tags": ["Specimen"],
"summary": "Update specimen status",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/SpecimenStatus"
}
}
}
},
"responses": {
"200": {
"description": "Status updated successfully"
}
}
}
},
"/api/specimen/collection": {
"get": {
"tags": ["Specimen"],
"summary": "List specimen collections",
"responses": {
"200": {
"description": "List of collections"
}
}
},
"post": {
"tags": ["Specimen"],
"summary": "Create specimen collection",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object"
}
}
}
},
"responses": {
"201": {
"description": "Collection created successfully"
}
}
},
"patch": {
"tags": ["Specimen"],
"summary": "Update specimen collection",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object"
}
}
}
},
"responses": {
"200": {
"description": "Collection updated successfully"
}
}
}
},
"/api/tests": {
"get": {
"tags": ["Tests"],
"summary": "List test definitions",
"responses": {
"200": {
"description": "List of tests"
}
}
},
"post": {
"tags": ["Tests"],
"summary": "Create test definition",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/TestDefinition"
}
}
}
},
"responses": {
"201": {
"description": "Test created successfully"
}
}
},
"patch": {
"tags": ["Tests"],
"summary": "Update test definition",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/TestDefinition"
}
}
}
},
"responses": {
"200": {
"description": "Test updated successfully"
}
}
}
},
"/api/tests/{TestID}": {
"get": {
"tags": ["Tests"],
"summary": "Get test definition by ID",
"parameters": [
{
"name": "TestID",
"in": "path",
"required": true,
"schema": {
"type": "integer"
}
}
],
"responses": {
"200": {
"description": "Test details"
}
}
}
},
"/api/location": {
"get": {
"tags": ["Location"],
"summary": "List locations",
"responses": {
"200": {
"description": "List of locations"
}
}
},
"post": {
"tags": ["Location"],
"summary": "Create location",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Location"
}
}
}
},
"responses": {
"201": {
"description": "Location created successfully"
}
}
},
"patch": {
"tags": ["Location"],
"summary": "Update location",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Location"
}
}
}
},
"responses": {
"200": {
"description": "Location updated successfully"
}
}
},
"delete": {
"tags": ["Location"],
"summary": "Delete location (soft delete)",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"required": ["LocationID"],
"properties": {
"LocationID": {
"type": "integer"
}
}
}
}
}
},
"responses": {
"200": {
"description": "Location deleted successfully"
}
}
}
},
"/api/location/{LocationID}": {
"get": {
"tags": ["Location"],
"summary": "Get location by ID",
"parameters": [
{
"name": "LocationID",
"in": "path",
"required": true,
"schema": {
"type": "integer"
}
}
],
"responses": {
"200": {
"description": "Location details"
}
}
}
},
"/api/contact": {
"get": {
"tags": ["Contact"],
"summary": "List contacts",
"responses": {
"200": {
"description": "List of contacts"
}
}
},
"post": {
"tags": ["Contact"],
"summary": "Create contact",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Contact"
}
}
}
},
"responses": {
"201": {
"description": "Contact created successfully"
}
}
},
"patch": {
"tags": ["Contact"],
"summary": "Update contact",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Contact"
}
}
}
},
"responses": {
"200": {
"description": "Contact updated successfully"
}
}
},
"delete": {
"tags": ["Contact"],
"summary": "Delete contact (soft delete)",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"required": ["ContactID"],
"properties": {
"ContactID": {
"type": "integer"
}
}
}
}
}
},
"responses": {
"200": {
"description": "Contact deleted successfully"
}
}
}
},
"/api/contact/{ContactID}": {
"get": {
"tags": ["Contact"],
"summary": "Get contact by ID",
"parameters": [
{
"name": "ContactID",
"in": "path",
"required": true,
"schema": {
"type": "integer"
}
}
],
"responses": {
"200": {
"description": "Contact details"
}
}
}
},
"/api/occupation": {
"get": {
"tags": ["Contact"],
"summary": "List occupations",
"responses": {
"200": {
"description": "List of occupations"
}
}
},
"post": {
"tags": ["Contact"],
"summary": "Create occupation",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"OccupationCode": {
"type": "string"
},
"OccupationName": {
"type": "string"
}
}
}
}
}
},
"responses": {
"201": {
"description": "Occupation created successfully"
}
}
},
"patch": {
"tags": ["Contact"],
"summary": "Update occupation",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"OccupationID": {
"type": "integer"
},
"OccupationCode": {
"type": "string"
},
"OccupationName": {
"type": "string"
}
}
}
}
}
},
"responses": {
"200": {
"description": "Occupation updated successfully"
}
}
}
},
"/api/occupation/{OccupationID}": {
"get": {
"tags": ["Contact"],
"summary": "Get occupation by ID",
"parameters": [
{
"name": "OccupationID",
"in": "path",
"required": true,
"schema": {
"type": "integer"
}
}
],
"responses": {
"200": {
"description": "Occupation details"
}
}
}
},
"/api/medicalspecialty": {
"get": {
"tags": ["Contact"],
"summary": "List medical specialties",
"responses": {
"200": {
"description": "List of specialties"
}
}
},
"post": {
"tags": ["Contact"],
"summary": "Create medical specialty",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"SpecialtyCode": {
"type": "string"
},
"SpecialtyName": {
"type": "string"
}
}
}
}
}
},
"responses": {
"201": {
"description": "Specialty created successfully"
}
}
},
"patch": {
"tags": ["Contact"],
"summary": "Update medical specialty",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"SpecialtyID": {
"type": "integer"
},
"SpecialtyCode": {
"type": "string"
},
"SpecialtyName": {
"type": "string"
}
}
}
}
}
},
"responses": {
"200": {
"description": "Specialty updated successfully"
}
}
}
},
"/api/medicalspecialty/{SpecialtyID}": {
"get": {
"tags": ["Contact"],
"summary": "Get medical specialty by ID",
"parameters": [
{
"name": "SpecialtyID",
"in": "path",
"required": true,
"schema": {
"type": "integer"
}
}
],
"responses": {
"200": {
"description": "Specialty details"
}
}
}
},
"/api/organization/account": {
"get": {
"tags": ["Organization"],
"summary": "List accounts",
"responses": {
"200": {
"description": "List of accounts"
}
}
},
"post": {
"tags": ["Organization"],
"summary": "Create account",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Organization"
}
}
}
},
"responses": {
"201": {
"description": "Account created successfully"
}
}
},
"patch": {
"tags": ["Organization"],
"summary": "Update account",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Organization"
}
}
}
},
"responses": {
"200": {
"description": "Account updated successfully"
}
}
},
"delete": {
"tags": ["Organization"],
"summary": "Delete account (soft delete)",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"required": ["AccountID"],
"properties": {
"AccountID": {
"type": "integer"
}
}
}
}
}
},
"responses": {
"200": {
"description": "Account deleted successfully"
}
}
}
},
"/api/organization/account/{AccountID}": {
"get": {
"tags": ["Organization"],
"summary": "Get account by ID",
"parameters": [
{
"name": "AccountID",
"in": "path",
"required": true,
"schema": {
"type": "integer"
}
}
],
"responses": {
"200": {
"description": "Account details"
}
}
}
},
"/api/organization/site": {
"get": {
"tags": ["Organization"],
"summary": "List sites",
"responses": {
"200": {
"description": "List of sites"
}
}
},
"post": {
"tags": ["Organization"],
"summary": "Create site",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Site"
}
}
}
},
"responses": {
"201": {
"description": "Site created successfully"
}
}
},
"patch": {
"tags": ["Organization"],
"summary": "Update site",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Site"
}
}
}
},
"responses": {
"200": {
"description": "Site updated successfully"
}
}
},
"delete": {
"tags": ["Organization"],
"summary": "Delete site (soft delete)",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"required": ["SiteID"],
"properties": {
"SiteID": {
"type": "integer"
}
}
}
}
}
},
"responses": {
"200": {
"description": "Site deleted successfully"
}
}
}
},
"/api/organization/site/{SiteID}": {
"get": {
"tags": ["Organization"],
"summary": "Get site by ID",
"parameters": [
{
"name": "SiteID",
"in": "path",
"required": true,
"schema": {
"type": "integer"
}
}
],
"responses": {
"200": {
"description": "Site details"
}
}
}
},
"/api/organization/discipline": {
"get": {
"tags": ["Organization"],
"summary": "List disciplines",
"responses": {
"200": {
"description": "List of disciplines"
}
}
},
"post": {
"tags": ["Organization"],
"summary": "Create discipline",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Discipline"
}
}
}
},
"responses": {
"201": {
"description": "Discipline created successfully"
}
}
},
"patch": {
"tags": ["Organization"],
"summary": "Update discipline",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Discipline"
}
}
}
},
"responses": {
"200": {
"description": "Discipline updated successfully"
}
}
},
"delete": {
"tags": ["Organization"],
"summary": "Delete discipline (soft delete)",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"required": ["DisciplineID"],
"properties": {
"DisciplineID": {
"type": "integer"
}
}
}
}
}
},
"responses": {
"200": {
"description": "Discipline deleted successfully"
}
}
}
},
"/api/organization/discipline/{DisciplineID}": {
"get": {
"tags": ["Organization"],
"summary": "Get discipline by ID",
"parameters": [
{
"name": "DisciplineID",
"in": "path",
"required": true,
"schema": {
"type": "integer"
}
}
],
"responses": {
"200": {
"description": "Discipline details"
}
}
}
},
"/api/organization/department": {
"get": {
"tags": ["Organization"],
"summary": "List departments",
"responses": {
"200": {
"description": "List of departments"
}
}
},
"post": {
"tags": ["Organization"],
"summary": "Create department",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Department"
}
}
}
},
"responses": {
"201": {
"description": "Department created successfully"
}
}
},
"patch": {
"tags": ["Organization"],
"summary": "Update department",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Department"
}
}
}
},
"responses": {
"200": {
"description": "Department updated successfully"
}
}
},
"delete": {
"tags": ["Organization"],
"summary": "Delete department (soft delete)",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"required": ["DepartmentID"],
"properties": {
"DepartmentID": {
"type": "integer"
}
}
}
}
}
},
"responses": {
"200": {
"description": "Department deleted successfully"
}
}
}
},
"/api/organization/department/{DepartmentID}": {
"get": {
"tags": ["Organization"],
"summary": "Get department by ID",
"parameters": [
{
"name": "DepartmentID",
"in": "path",
"required": true,
"schema": {
"type": "integer"
}
}
],
"responses": {
"200": {
"description": "Department details"
}
}
}
},
"/api/organization/workstation": {
"get": {
"tags": ["Organization"],
"summary": "List workstations",
"responses": {
"200": {
"description": "List of workstations"
}
}
},
"post": {
"tags": ["Organization"],
"summary": "Create workstation",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Workstation"
}
}
}
},
"responses": {
"201": {
"description": "Workstation created successfully"
}
}
},
"patch": {
"tags": ["Organization"],
"summary": "Update workstation",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Workstation"
}
}
}
},
"responses": {
"200": {
"description": "Workstation updated successfully"
}
}
},
"delete": {
"tags": ["Organization"],
"summary": "Delete workstation (soft delete)",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"required": ["WorkstationID"],
"properties": {
"WorkstationID": {
"type": "integer"
}
}
}
}
}
},
"responses": {
"200": {
"description": "Workstation deleted successfully"
}
}
}
},
"/api/organization/workstation/{WorkstationID}": {
"get": {
"tags": ["Organization"],
"summary": "Get workstation by ID",
"parameters": [
{
"name": "WorkstationID",
"in": "path",
"required": true,
"schema": {
"type": "integer"
}
}
],
"responses": {
"200": {
"description": "Workstation details"
}
}
}
},
"/api/valueset": {
"get": {
"tags": ["Value Set"],
"summary": "List value sets",
"parameters": [
{
"name": "key",
"in": "query",
"schema": {
"type": "string"
},
"description": "Filter by value set key"
}
],
"responses": {
"200": {
"description": "List of value sets"
}
}
},
"post": {
"tags": ["Value Set"],
"summary": "Refresh value sets",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"key": {
"type": "string",
"description": "Value set key to refresh"
}
}
}
}
}
},
"responses": {
"200": {
"description": "Value sets refreshed"
}
}
}
},
"/api/valueset/{key}": {
"get": {
"tags": ["Value Set"],
"summary": "Get value set by key",
"parameters": [
{
"name": "key",
"in": "path",
"required": true,
"schema": {
"type": "string"
}
}
],
"responses": {
"200": {
"description": "Value set details"
}
}
}
},
"/api/valueset/items": {
"get": {
"tags": ["Value Set"],
"summary": "List value set items",
"parameters": [
{
"name": "key",
"in": "query",
"schema": {
"type": "string"
},
"description": "Filter by value set key"
}
],
"responses": {
"200": {
"description": "List of value set items"
}
}
},
"post": {
"tags": ["Value Set"],
"summary": "Create value set item",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"ValueSetID": {
"type": "integer"
},
"Value": {
"type": "string"
},
"Label": {
"type": "string"
},
"Sequence": {
"type": "integer"
}
}
}
}
}
},
"responses": {
"201": {
"description": "Item created successfully"
}
}
}
},
"/api/valueset/items/{ItemID}": {
"get": {
"tags": ["Value Set"],
"summary": "Get value set item by ID",
"parameters": [
{
"name": "ItemID",
"in": "path",
"required": true,
"schema": {
"type": "integer"
}
}
],
"responses": {
"200": {
"description": "Item details"
}
}
},
"put": {
"tags": ["Value Set"],
"summary": "Update value set item",
"parameters": [
{
"name": "ItemID",
"in": "path",
"required": true,
"schema": {
"type": "integer"
}
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"properties": {
"Value": {
"type": "string"
},
"Label": {
"type": "string"
},
"Sequence": {
"type": "integer"
}
}
}
}
}
},
"responses": {
"200": {
"description": "Item updated successfully"
}
}
},
"delete": {
"tags": ["Value Set"],
"summary": "Delete value set item",
"parameters": [
{
"name": "ItemID",
"in": "path",
"required": true,
"schema": {
"type": "integer"
}
}
],
"responses": {
"200": {
"description": "Item deleted successfully"
}
}
}
},
"/api/result/valueset": {
"get": {
"tags": ["Result Value Set"],
"summary": "List result value sets",
"description": "CRUD operations for result value sets",
"responses": {
"200": {
"description": "List of result value sets"
}
}
},
"post": {
"tags": ["Result Value Set"],
"summary": "Create result value set",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ValueSet"
}
}
}
},
"responses": {
"201": {
"description": "Value set created successfully"
}
}
}
},
"/api/result/valueset/{ValueSetID}": {
"get": {
"tags": ["Result Value Set"],
"summary": "Get result value set by ID",
"parameters": [
{
"name": "ValueSetID",
"in": "path",
"required": true,
"schema": {
"type": "integer"
}
}
],
"responses": {
"200": {
"description": "Value set details"
}
}
},
"put": {
"tags": ["Result Value Set"],
"summary": "Update result value set",
"parameters": [
{
"name": "ValueSetID",
"in": "path",
"required": true,
"schema": {
"type": "integer"
}
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ValueSet"
}
}
}
},
"responses": {
"200": {
"description": "Value set updated successfully"
}
}
},
"delete": {
"tags": ["Result Value Set"],
"summary": "Delete result value set",
"parameters": [
{
"name": "ValueSetID",
"in": "path",
"required": true,
"schema": {
"type": "integer"
}
}
],
"responses": {
"200": {
"description": "Value set deleted successfully"
}
}
}
},
"/api/result/valuesetdef": {
"get": {
"tags": ["Result Value Set Definition"],
"summary": "List value set definitions",
"description": "CRUD operations for value set definitions",
"responses": {
"200": {
"description": "List of value set definitions"
}
}
},
"post": {
"tags": ["Result Value Set Definition"],
"summary": "Create value set definition",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ValueSetDef"
}
}
}
},
"responses": {
"201": {
"description": "Definition created successfully"
}
}
}
},
"/api/result/valuesetdef/{VSetDefID}": {
"get": {
"tags": ["Result Value Set Definition"],
"summary": "Get value set definition by ID",
"parameters": [
{
"name": "VSetDefID",
"in": "path",
"required": true,
"schema": {
"type": "integer"
}
}
],
"responses": {
"200": {
"description": "Definition details"
}
}
},
"put": {
"tags": ["Result Value Set Definition"],
"summary": "Update value set definition",
"parameters": [
{
"name": "VSetDefID",
"in": "path",
"required": true,
"schema": {
"type": "integer"
}
}
],
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/ValueSetDef"
}
}
}
},
"responses": {
"200": {
"description": "Definition updated successfully"
}
}
},
"delete": {
"tags": ["Result Value Set Definition"],
"summary": "Delete value set definition",
"parameters": [
{
"name": "VSetDefID",
"in": "path",
"required": true,
"schema": {
"type": "integer"
}
}
],
"responses": {
"200": {
"description": "Definition deleted successfully"
}
}
}
},
"/api/counter": {
"get": {
"tags": ["Counter"],
"summary": "List counters",
"responses": {
"200": {
"description": "List of counters"
}
}
},
"post": {
"tags": ["Counter"],
"summary": "Create counter",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Counter"
}
}
}
},
"responses": {
"201": {
"description": "Counter created successfully"
}
}
},
"patch": {
"tags": ["Counter"],
"summary": "Update counter",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"$ref": "#/components/schemas/Counter"
}
}
}
},
"responses": {
"200": {
"description": "Counter updated successfully"
}
}
},
"delete": {
"tags": ["Counter"],
"summary": "Delete counter (soft delete)",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object",
"required": ["CounterID"],
"properties": {
"CounterID": {
"type": "integer"
}
}
}
}
}
},
"responses": {
"200": {
"description": "Counter deleted successfully"
}
}
}
},
"/api/counter/{CounterID}": {
"get": {
"tags": ["Counter"],
"summary": "Get counter by ID",
"parameters": [
{
"name": "CounterID",
"in": "path",
"required": true,
"schema": {
"type": "integer"
}
}
],
"responses": {
"200": {
"description": "Counter details"
}
}
}
},
"/api/areageo": {
"get": {
"tags": ["Area Geo"],
"summary": "List geographic areas",
"responses": {
"200": {
"description": "List of geographic areas"
}
}
}
},
"/api/areageo/provinces": {
"get": {
"tags": ["Area Geo"],
"summary": "List provinces",
"responses": {
"200": {
"description": "List of provinces"
}
}
}
},
"/api/areageo/cities": {
"get": {
"tags": ["Area Geo"],
"summary": "List cities",
"parameters": [
{
"name": "province_id",
"in": "query",
"schema": {
"type": "integer"
},
"description": "Filter by province ID"
}
],
"responses": {
"200": {
"description": "List of cities"
}
}
}
},
"/api/demo/order": {
"post": {
"tags": ["Demo"],
"summary": "Create demo order",
"description": "Create a demo test order (no auth required)",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object"
}
}
}
},
"responses": {
"201": {
"description": "Demo order created"
}
}
}
},
"/api/demo/orders": {
"get": {
"tags": ["Demo"],
"summary": "List demo orders",
"description": "List demo test orders (no auth required)",
"responses": {
"200": {
"description": "List of demo orders"
}
}
}
},
"/api/edge/results": {
"post": {
"tags": ["Edge"],
"summary": "Receive instrument results",
"description": "Receive test results from tiny-edge middleware (no auth required)",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object"
}
}
}
},
"responses": {
"200": {
"description": "Results received"
}
}
}
},
"/api/edge/orders": {
"get": {
"tags": ["Edge"],
"summary": "Get orders for edge",
"description": "Get orders for instrument integration (no auth required)",
"responses": {
"200": {
"description": "Orders for edge"
}
}
}
},
"/api/edge/orders/{OrderID}/ack": {
"post": {
"tags": ["Edge"],
"summary": "Acknowledge order",
"description": "Acknowledge order receipt by edge (no auth required)",
"parameters": [
{
"name": "OrderID",
"in": "path",
"required": true,
"schema": {
"type": "integer"
}
}
],
"responses": {
"200": {
"description": "Order acknowledged"
}
}
}
},
"/api/edge/status": {
"post": {
"tags": ["Edge"],
"summary": "Receive instrument status",
"description": "Receive status updates from instruments (no auth required)",
"requestBody": {
"required": true,
"content": {
"application/json": {
"schema": {
"type": "object"
}
}
}
},
"responses": {
"200": {
"description": "Status received"
}
}
}
}
},
"tags": [
{
"name": "Authentication",
"description": "User authentication endpoints"
},
{
"name": "Patient",
"description": "Patient management endpoints"
},
{
"name": "Patient Visit",
"description": "Patient visit management endpoints"
},
{
"name": "Order Test",
"description": "Test order management endpoints"
},
{
"name": "Specimen",
"description": "Specimen management endpoints"
},
{
"name": "Tests",
"description": "Test definition endpoints"
},
{
"name": "Location",
"description": "Location management endpoints"
},
{
"name": "Contact",
"description": "Contact management endpoints"
},
{
"name": "Organization",
"description": "Organization management endpoints"
},
{
"name": "Value Set",
"description": "Value set library endpoints"
},
{
"name": "Result Value Set",
"description": "Result-specific value set CRUD endpoints"
},
{
"name": "Result Value Set Definition",
"description": "Value set definition CRUD endpoints"
},
{
"name": "Counter",
"description": "Counter management endpoints"
},
{
"name": "Area Geo",
"description": "Geographic area endpoints"
},
{
"name": "Demo",
"description": "Demo/test endpoints (no auth)"
},
{
"name": "Edge",
"description": "Instrument integration endpoints (no auth)"
}
]
}