Rename legacy boolean helpers to is* naming across test definitions, patient models, and infrastructure data to match rest of backend. Update controllers, models, migrations, seeders, tests, and OpenAPI docs/bundled spec so contracts and runtime align.
206 lines
4.7 KiB
YAML
206 lines
4.7 KiB
YAML
PatientIdentifier:
|
|
type: object
|
|
properties:
|
|
IdentifierType:
|
|
type: string
|
|
enum: [KTP, PASS, SSN, SIM, KTAS]
|
|
description: |
|
|
KTP: 16 digit numeric
|
|
PASS: alphanumeric max 9
|
|
SSN: 9 digit numeric
|
|
SIM: 19-20 digit numeric
|
|
KTAS: 11 digit numeric
|
|
Identifier:
|
|
type: string
|
|
maxLength: 255
|
|
|
|
LinkedPatient:
|
|
type: object
|
|
description: Linked patient reference
|
|
properties:
|
|
InternalPID:
|
|
type: integer
|
|
description: Internal patient ID of the linked patient
|
|
PatientID:
|
|
type: string
|
|
description: Patient ID of the linked patient
|
|
|
|
Custodian:
|
|
type: object
|
|
description: Patient custodian/guardian
|
|
properties:
|
|
InternalPID:
|
|
type: integer
|
|
description: Internal patient ID of the custodian
|
|
PatientID:
|
|
type: string
|
|
description: Patient ID of the custodian
|
|
|
|
PatAttEntry:
|
|
type: object
|
|
description: Patient address/attorney entry
|
|
properties:
|
|
Address:
|
|
type: string
|
|
description: Address text
|
|
|
|
Patient:
|
|
type: object
|
|
required:
|
|
- PatientID
|
|
- Sex
|
|
- NameFirst
|
|
- Birthdate
|
|
properties:
|
|
PatientID:
|
|
type: string
|
|
maxLength: 30
|
|
pattern: '^[A-Za-z0-9]+$'
|
|
description: Internal patient identifier
|
|
AlternatePID:
|
|
type: string
|
|
maxLength: 30
|
|
pattern: '^[A-Za-z0-9]+$'
|
|
Prefix:
|
|
type: string
|
|
maxLength: 10
|
|
enum: [Mr, Mrs, Ms, Dr, Prof]
|
|
Sex:
|
|
type: string
|
|
enum: ['1', '2']
|
|
description: '1: Female, 2: Male'
|
|
NameFirst:
|
|
type: string
|
|
minLength: 1
|
|
maxLength: 60
|
|
pattern: "^[A-Za-z'\\. ]+$"
|
|
NameMiddle:
|
|
type: string
|
|
minLength: 1
|
|
maxLength: 60
|
|
NameMaiden:
|
|
type: string
|
|
minLength: 1
|
|
maxLength: 60
|
|
NameLast:
|
|
type: string
|
|
minLength: 1
|
|
maxLength: 60
|
|
Suffix:
|
|
type: string
|
|
maxLength: 10
|
|
Birthdate:
|
|
type: string
|
|
format: date-time
|
|
description: ISO 8601 UTC datetime
|
|
PlaceOfBirth:
|
|
type: string
|
|
maxLength: 100
|
|
Citizenship:
|
|
type: string
|
|
maxLength: 100
|
|
Street_1:
|
|
type: string
|
|
maxLength: 255
|
|
Street_2:
|
|
type: string
|
|
maxLength: 255
|
|
Street_3:
|
|
type: string
|
|
maxLength: 255
|
|
ZIP:
|
|
type: string
|
|
maxLength: 10
|
|
pattern: '^[0-9]+$'
|
|
Phone:
|
|
type: string
|
|
pattern: "^\\+?[0-9]{8,15}$"
|
|
MobilePhone:
|
|
type: string
|
|
pattern: "^\\+?[0-9]{8,15}$"
|
|
EmailAddress1:
|
|
type: string
|
|
format: email
|
|
maxLength: 100
|
|
EmailAddress2:
|
|
type: string
|
|
format: email
|
|
maxLength: 100
|
|
PatIdt:
|
|
$ref: 'patient.yaml#/PatientIdentifier'
|
|
LinkTo:
|
|
type: array
|
|
description: Array of linked patient references
|
|
items:
|
|
$ref: 'patient.yaml#/LinkedPatient'
|
|
Custodian:
|
|
$ref: 'patient.yaml#/Custodian'
|
|
isDead:
|
|
type: string
|
|
enum: ['0', '1']
|
|
description: '0: No (alive), 1: Yes (deceased)'
|
|
TimeOfDeath:
|
|
type: string
|
|
format: date-time
|
|
description: ISO 8601 UTC datetime of death
|
|
PatCom:
|
|
type: string
|
|
description: Patient comment/notes
|
|
PatAtt:
|
|
type: array
|
|
description: Patient address entries
|
|
items:
|
|
$ref: 'patient.yaml#/PatAttEntry'
|
|
Province:
|
|
type: integer
|
|
description: Province AreaGeoID (foreign key to areageo table)
|
|
ProvinceLabel:
|
|
type: string
|
|
description: Province name (resolved from areageo)
|
|
City:
|
|
type: integer
|
|
description: City AreaGeoID (foreign key to areageo table)
|
|
CityLabel:
|
|
type: string
|
|
description: City name (resolved from areageo)
|
|
Country:
|
|
type: string
|
|
maxLength: 10
|
|
description: Country ISO 3-letter code (e.g., IDN, USA)
|
|
CountryLabel:
|
|
type: string
|
|
description: Country name (resolved from valueset)
|
|
Race:
|
|
type: string
|
|
maxLength: 100
|
|
MaritalStatus:
|
|
type: string
|
|
enum: [A, B, D, M, S, W]
|
|
description: 'A: Annulled, B: Separated, D: Divorced, M: Married, S: Single, W: Widowed'
|
|
Religion:
|
|
type: string
|
|
maxLength: 100
|
|
Ethnic:
|
|
type: string
|
|
maxLength: 100
|
|
|
|
PatientListResponse:
|
|
type: object
|
|
properties:
|
|
status:
|
|
type: string
|
|
example: success
|
|
data:
|
|
type: array
|
|
items:
|
|
$ref: 'patient.yaml#/Patient'
|
|
pagination:
|
|
type: object
|
|
properties:
|
|
page:
|
|
type: integer
|
|
perPage:
|
|
type: integer
|
|
total:
|
|
type: integer
|