allOf and oneOf
This commit is contained in:
@@ -45,9 +45,8 @@ components:
|
||||
x-order: 4
|
||||
x-label: "Notes"
|
||||
|
||||
ProcedureNotes:
|
||||
ProcedureNoteBase:
|
||||
type: object
|
||||
x-display-format: "{summary}"
|
||||
properties:
|
||||
summary:
|
||||
type: string
|
||||
@@ -58,6 +57,139 @@ components:
|
||||
x-order: 2
|
||||
x-label: "Details"
|
||||
|
||||
ProcedureNotes:
|
||||
x-display-format: "{summary}"
|
||||
oneOf:
|
||||
- $ref: '#/components/schemas/BasicNote'
|
||||
- $ref: '#/components/schemas/HeartRateNote'
|
||||
- $ref: '#/components/schemas/DentalNote'
|
||||
- $ref: '#/components/schemas/VaccineNote'
|
||||
- $ref: '#/components/schemas/PreOpNote'
|
||||
- $ref: '#/components/schemas/SurgeryNote'
|
||||
discriminator:
|
||||
propertyName: noteType
|
||||
mapping:
|
||||
basic: BasicNote
|
||||
heart_rate: HeartRateNote
|
||||
dental: DentalNote
|
||||
vaccine: VaccineNote
|
||||
preop: PreOpNote
|
||||
surgery: SurgeryNote
|
||||
|
||||
BasicNote:
|
||||
allOf:
|
||||
- $ref: '#/components/schemas/ProcedureNoteBase'
|
||||
- type: object
|
||||
properties:
|
||||
noteType:
|
||||
type: string
|
||||
enum: [basic]
|
||||
x-order: 0
|
||||
x-label: "Type"
|
||||
required: [noteType]
|
||||
|
||||
HeartRateNote:
|
||||
allOf:
|
||||
- $ref: '#/components/schemas/ProcedureNoteBase'
|
||||
- type: object
|
||||
properties:
|
||||
noteType:
|
||||
type: string
|
||||
enum: [heart_rate]
|
||||
x-order: 0
|
||||
x-label: "Type"
|
||||
bpm:
|
||||
type: integer
|
||||
x-order: 3
|
||||
x-label: "Heart Rate (bpm)"
|
||||
required: [noteType, bpm]
|
||||
|
||||
DentalNote:
|
||||
allOf:
|
||||
- $ref: '#/components/schemas/ProcedureNoteBase'
|
||||
- type: object
|
||||
properties:
|
||||
noteType:
|
||||
type: string
|
||||
enum: [dental]
|
||||
x-order: 0
|
||||
x-label: "Type"
|
||||
procedureType:
|
||||
type: string
|
||||
enum: [scaling, polishing]
|
||||
x-order: 3
|
||||
x-label: "Procedure"
|
||||
teeth:
|
||||
type: string
|
||||
enum: [all, upper_only, lower_only]
|
||||
x-order: 4
|
||||
x-label: "Teeth"
|
||||
required: [noteType, procedureType]
|
||||
|
||||
VaccineNote:
|
||||
allOf:
|
||||
- $ref: '#/components/schemas/ProcedureNoteBase'
|
||||
- type: object
|
||||
properties:
|
||||
noteType:
|
||||
type: string
|
||||
enum: [vaccine]
|
||||
x-order: 0
|
||||
x-label: "Type"
|
||||
medicine:
|
||||
type: string
|
||||
enum: [Rabies, DHPP, Tricat, Deworming]
|
||||
x-order: 3
|
||||
x-label: "Medicine"
|
||||
leg:
|
||||
type: string
|
||||
enum: [front_left, front_right, hind_left, hind_right]
|
||||
x-order: 4
|
||||
x-label: "Injection Leg"
|
||||
required: [noteType, medicine, leg]
|
||||
|
||||
PreOpNote:
|
||||
allOf:
|
||||
- $ref: '#/components/schemas/ProcedureNoteBase'
|
||||
- type: object
|
||||
properties:
|
||||
noteType:
|
||||
type: string
|
||||
enum: [preop]
|
||||
x-order: 0
|
||||
x-label: "Type"
|
||||
heartRate:
|
||||
type: integer
|
||||
x-order: 3
|
||||
x-label: "Heart Rate (bpm)"
|
||||
temperature:
|
||||
type: number
|
||||
format: float
|
||||
x-order: 4
|
||||
x-label: "Temperature (°C)"
|
||||
required: [noteType, heartRate, temperature]
|
||||
|
||||
SurgeryNote:
|
||||
allOf:
|
||||
- $ref: '#/components/schemas/ProcedureNoteBase'
|
||||
- type: object
|
||||
properties:
|
||||
noteType:
|
||||
type: string
|
||||
enum: [surgery]
|
||||
x-order: 0
|
||||
x-label: "Type"
|
||||
surgeryType:
|
||||
type: string
|
||||
enum: [neuter, spay]
|
||||
x-order: 3
|
||||
x-label: "Surgery Type"
|
||||
complications:
|
||||
type: string
|
||||
x-order: 4
|
||||
x-label: "Complications"
|
||||
required: [noteType, surgeryType]
|
||||
|
||||
Call:
|
||||
type: object
|
||||
x-primary-key: _received_at
|
||||
|
||||
Reference in New Issue
Block a user