Deploy Ladill Care / deploy (push) Successful in 1m26s
Add a template-driven assessment system with universal intake, clinical pathways, disease instruments (stroke MVP + extended, diabetes, and ten specialty packs), scoring, patient outcome trends, REST/API + FHIR export, and Enterprise org-level assessment analytics. Seed packs and design/licensing docs ship for deploy and pre-GA review.
289 lines
8.1 KiB
YAML
289 lines
8.1 KiB
YAML
openapi: 3.1.0
|
|
info:
|
|
title: Ladill Care API
|
|
version: 1.1.0
|
|
description: |
|
|
Healthcare management API at care.ladill.com.
|
|
Assessment and pathway endpoints require organization `settings.rollout.assessments_engine = true`.
|
|
Public IDs are UUIDs (never internal integer FKs).
|
|
servers:
|
|
- url: https://care.ladill.com/api/v1
|
|
paths:
|
|
/health:
|
|
get:
|
|
summary: Health check
|
|
servers:
|
|
- url: https://care.ladill.com/api
|
|
/patients:
|
|
get:
|
|
summary: List patients
|
|
post:
|
|
summary: Register patient
|
|
/patients/{patient}:
|
|
get:
|
|
summary: Patient dashboard
|
|
put:
|
|
summary: Update patient
|
|
delete:
|
|
summary: Archive patient
|
|
/appointments:
|
|
get:
|
|
summary: List appointments
|
|
post:
|
|
summary: Book appointment
|
|
/bills:
|
|
get:
|
|
summary: List bills
|
|
/drugs:
|
|
get:
|
|
summary: List pharmacy inventory
|
|
post:
|
|
summary: Add drug
|
|
|
|
/assessment-templates:
|
|
get:
|
|
summary: List current system assessment templates
|
|
tags: [Assessments]
|
|
security: [{ sanctum: [] }]
|
|
responses:
|
|
'200':
|
|
description: Template catalog with questions
|
|
'404':
|
|
description: Assessments engine not enabled
|
|
|
|
/patients/{patient}/assessments:
|
|
parameters:
|
|
- $ref: '#/components/parameters/PatientUuid'
|
|
get:
|
|
summary: List assessments for a patient
|
|
tags: [Assessments]
|
|
security: [{ sanctum: [] }]
|
|
parameters:
|
|
- name: status
|
|
in: query
|
|
schema: { type: string, enum: [draft, completed, cancelled] }
|
|
- name: template_code
|
|
in: query
|
|
schema: { type: string }
|
|
- name: category
|
|
in: query
|
|
schema: { type: string }
|
|
responses:
|
|
'200':
|
|
description: Paginated assessments
|
|
post:
|
|
summary: Start assessment (idempotent draft)
|
|
tags: [Assessments]
|
|
security: [{ sanctum: [] }]
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
required: [template_code]
|
|
properties:
|
|
template_code: { type: string, example: nihss }
|
|
consultation_uuid: { type: string, format: uuid, nullable: true }
|
|
visit_uuid: { type: string, format: uuid, nullable: true }
|
|
responses:
|
|
'200':
|
|
description: Existing draft returned
|
|
'201':
|
|
description: New draft created
|
|
'403':
|
|
description: Capture not allowed for role/template
|
|
|
|
/consultations/{consultation}/assessments:
|
|
post:
|
|
summary: Start assessment linked to consultation
|
|
tags: [Assessments]
|
|
security: [{ sanctum: [] }]
|
|
parameters:
|
|
- $ref: '#/components/parameters/ConsultationUuid'
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
required: [template_code]
|
|
properties:
|
|
template_code: { type: string }
|
|
responses:
|
|
'200':
|
|
description: Existing draft
|
|
'201':
|
|
description: Created
|
|
|
|
/assessments/{assessment}:
|
|
parameters:
|
|
- $ref: '#/components/parameters/AssessmentUuid'
|
|
get:
|
|
summary: Get assessment with answers and score
|
|
tags: [Assessments]
|
|
security: [{ sanctum: [] }]
|
|
responses:
|
|
'200':
|
|
description: Assessment detail
|
|
put:
|
|
summary: Save draft answers (keyed by question code)
|
|
tags: [Assessments]
|
|
security: [{ sanctum: [] }]
|
|
requestBody:
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
answers:
|
|
type: object
|
|
additionalProperties: true
|
|
example: { chief_complaint: "Headache", pain_score: 4 }
|
|
notes: { type: string, nullable: true }
|
|
responses:
|
|
'200':
|
|
description: Updated
|
|
'422':
|
|
description: Not draft or validation error
|
|
|
|
/assessments/{assessment}/complete:
|
|
post:
|
|
summary: Complete assessment (validates required; materializes score if strategy set)
|
|
tags: [Assessments]
|
|
security: [{ sanctum: [] }]
|
|
parameters:
|
|
- $ref: '#/components/parameters/AssessmentUuid'
|
|
responses:
|
|
'200':
|
|
description: Completed with optional score
|
|
'422':
|
|
description: Missing required answers or already completed
|
|
|
|
/assessments/{assessment}/cancel:
|
|
post:
|
|
summary: Cancel draft assessment
|
|
tags: [Assessments]
|
|
security: [{ sanctum: [] }]
|
|
parameters:
|
|
- $ref: '#/components/parameters/AssessmentUuid'
|
|
responses:
|
|
'200':
|
|
description: Cancelled
|
|
|
|
/assessments/{assessment}/fhir:
|
|
get:
|
|
summary: Export assessment as FHIR R4 Bundle (Questionnaire + QuestionnaireResponse)
|
|
tags: [Assessments]
|
|
security: [{ sanctum: [] }]
|
|
parameters:
|
|
- $ref: '#/components/parameters/AssessmentUuid'
|
|
responses:
|
|
'200':
|
|
description: application/fhir+json Bundle
|
|
content:
|
|
application/fhir+json:
|
|
schema:
|
|
type: object
|
|
|
|
/pathways:
|
|
get:
|
|
summary: List active clinical pathway catalog
|
|
tags: [Pathways]
|
|
security: [{ sanctum: [] }]
|
|
responses:
|
|
'200':
|
|
description: Pathway catalog with template bindings
|
|
|
|
/patients/{patient}/pathways:
|
|
parameters:
|
|
- $ref: '#/components/parameters/PatientUuid'
|
|
get:
|
|
summary: Active and historical patient pathways
|
|
tags: [Pathways]
|
|
security: [{ sanctum: [] }]
|
|
responses:
|
|
'200':
|
|
description: Active + history
|
|
post:
|
|
summary: Activate pathway (creates required draft assessments)
|
|
tags: [Pathways]
|
|
security: [{ sanctum: [] }]
|
|
requestBody:
|
|
required: true
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
required: [pathway_code]
|
|
properties:
|
|
pathway_code: { type: string, example: stroke }
|
|
consultation_uuid: { type: string, format: uuid, nullable: true }
|
|
activation_diagnosis_text: { type: string, nullable: true }
|
|
responses:
|
|
'201':
|
|
description: Activated (idempotent if already active)
|
|
|
|
/patients/{patient}/pathways/{patientPathway}/deactivate:
|
|
post:
|
|
summary: Deactivate active pathway
|
|
tags: [Pathways]
|
|
security: [{ sanctum: [] }]
|
|
parameters:
|
|
- $ref: '#/components/parameters/PatientUuid'
|
|
- name: patientPathway
|
|
in: path
|
|
required: true
|
|
schema: { type: string, format: uuid }
|
|
responses:
|
|
'200':
|
|
description: Deactivated
|
|
|
|
/consultations/{consultation}/pathway-suggestions:
|
|
get:
|
|
summary: Suggest pathways from persisted diagnoses only
|
|
tags: [Pathways]
|
|
security: [{ sanctum: [] }]
|
|
parameters:
|
|
- $ref: '#/components/parameters/ConsultationUuid'
|
|
responses:
|
|
'200':
|
|
description: Ranked suggestions with match reasons
|
|
content:
|
|
application/json:
|
|
schema:
|
|
type: object
|
|
properties:
|
|
data:
|
|
type: array
|
|
items:
|
|
type: object
|
|
properties:
|
|
pathway_code: { type: string }
|
|
pathway_name: { type: string }
|
|
rank: { type: integer }
|
|
match_reason: { type: string }
|
|
already_active: { type: boolean }
|
|
|
|
components:
|
|
securitySchemes:
|
|
sanctum:
|
|
type: http
|
|
scheme: bearer
|
|
parameters:
|
|
PatientUuid:
|
|
name: patient
|
|
in: path
|
|
required: true
|
|
schema: { type: string, format: uuid }
|
|
ConsultationUuid:
|
|
name: consultation
|
|
in: path
|
|
required: true
|
|
schema: { type: string, format: uuid }
|
|
AssessmentUuid:
|
|
name: assessment
|
|
in: path
|
|
required: true
|
|
schema: { type: string, format: uuid }
|