Resource types
Within Clinia's systems, there exist many types of resources, each with different properties describing healthcare-related entities and concepts. Resources can exist on their own or be related to one another through relationships. There are 2 types of resources:
- Resource - exists as its own entity.
- Contained Resource - exists in within the scope of another entity. A contained resource has at least one property that is a reference to a parent resource.
Resources
All resources have 3 basic properties which are generated and handled by Clinia's systems:
id- identifier of the resource.createdAt- represents the instant at which the resource was created.updatedAt- represents the instant at which the resource was last updated.
Other than those 3 common properties, each resource type has its own definition.
Clinic
Type: clinicProperties
- address
- fax
- id
- identifier
- internalNote
- language
- location
- name
required - note
- onlineBooking
- openingHours
- phone
- social
Relationships
| Key | Type | Description |
|---|---|---|
practice | Array<Practice> | Practices associated with this resource. |
speciality | Array<Speciality> | Specialities associated with this resource. |
walkIn | Walk-In | Walk-in associated with this resource. |
Relationships for a clinic are not managed through the clinic itself. Rather, they are managed by creating, updating and deleting other resources referencing the targeted clinic.
- For
practice: - For
speciality:- To associate a
specialityto a clinic, one must create a Speciality with theparentproperty referencing the targeted clinic. - To disassociate a
specialityfrom a clinic, one must delete the targeted Speciality.
- To associate a
- For
walkIn:
CLSC
Type: clscProperties
- address
- fax
- id
- identifier
- internalNote
- language
- location
- name
required - note
- onlineBooking
- openingHours
- phone
- social
Relationships
| Key | Type | Description |
|---|---|---|
practice | Array<Practice> | Practices associated with this resource. |
speciality | Array<Speciality> | Specialities associated with this resource. |
walkIn | WalkIn | Walk-in associated with this resource. |
Relationships for a CLSC are not managed through the CLSC itself. Rather, they are managed by creating, updating and deleting other resources referencing the targeted CLSC.
- For
practice: - For
speciality:- To associate a
specialityto a CLSC, one must create a Speciality with theparentproperty referencing the targeted CLSC. - To disassociate a
specialityfrom a CLSC, one must delete the targeted Speciality.
- To associate a
- For
walkIn:
Community Resource
Type: communityProperties
- address
- fax
- id
- identifier
- internalNote
- language
- location
- name
required - note
- onlineBooking
- openingHours
- phone
- social
- tag
Relationships
| Key | Type | Description |
|---|---|---|
practice | Array<Practice> | Practices associated with this resource |
speciality | Array<Speciality> | Specialities associated with this resource. |
Relationships for a community resource are not managed through the community resource itself. Rather, they are managed by creating, updating and deleting other resources referencing the targeted community resource.
- For
practice: - For
speciality:- To associate a
specialityto a community resource, one must create a Speciality with theparentproperty referencing the targeted community resource. - To disassociate a
specialityfrom a community resource, one must delete the targeted Speciality.
- To associate a
Hospital
Type: hospitalProperties
Relationships
| Key | Type | Description |
|---|---|---|
practice | Array<Practice> | Practices associated with this resource. |
speciality | Array<Speciality> | Specialities associated with this resource. |
Relationships for a hospital are not managed through the community resource itself. Rather, they are managed by creating, updating and deleting other resources referencing the targeted hospital.
- For
practice: - For
speciality:- To associate a
specialityto a hospital, one must create a Speciality with theparentproperty referencing the targeted hospital. - To disassociate a
specialityfrom a hospital, one must delete the targeted Speciality.
- To associate a
Long term care
Type: long-term-careProperties
- address
- fax
- id
- identifier
- internalNote
- language
- location
- name
required - note
- onlineBooking
- openingHours
- phone
- social
- tag
Relationships
| Key | Type | Description |
|---|---|---|
practice | Array<Practice> | Practices associated with this resource. |
speciality | Array<Speciality> | Specialities associated with this resource. |
Relationships for a long term case resource are not managed through the community resource itself. Rather, they are managed by creating, updating and deleting other resources referencing the targeted long term case resource.
- For
practice: - For
speciality:- To associate a
specialityto a long term case resource, one must create a Speciality with theparentproperty referencing the targeted long term case resource. - To disassociate a
specialityfrom a long term case resource, one must delete the targeted Speciality.
- To associate a
Pharmacy
Type: phamarcyProperties
- address
- fax
- id
- identifier
- internalNote
- language
- location
- name
required - note
- onlineBooking
- openingHours
- phone
- social
Relationships
| Key | Type | Description |
|---|---|---|
practice | Array<Practice> | Practices associated with this resource. |
speciality | Array<Speciality> | Specialities associated with this resource. |
walkIn | WalkIn | Walk-in associated with this resource. |
Relationships for a pharmacy are not managed through the pharmacy itself. Rather, they are managed by creating, updating and deleting other resources referencing the targeted pharmacy.
- For
practice: - For
speciality:- To associate a
specialityto a pharmacy, one must create a Speciality with theparentproperty referencing the targeted pharmacy. - To disassociate a
specialityfrom a pharmacy, one must delete the targeted Speciality.
- To associate a
- For
walkIn:
Practitioner
Type: practitionerProperties
- acceptNewPatients
- casesToRefer
- clientele
- communication
- fax
- gender
- humanName
required - id
- identifier
- internalNote
- isPayingMember
- isValidated
- modalities
- note
- phone
- registration
- title
Relationships
| Key | Type | Description |
|---|---|---|
practice | Array<Practice> | Practices associated with this resource. |
profession | Array<Profession> | Professions associated with this resource. |
Relationships for a practitioner are not managed through the practitioner itself. Rather, they are managed by creating, updating and deleting other resources referencing the targeted practitioner.
- For
practice: - For
profession:- To associate a
professionto a practitioner, one must create a Profession with theparentproperty referencing the targeted practitioner. - To disassociate a
professionfrom a practitioner, one must delete the targeted Profession.
- To associate a
Rehabilitation Center
Type: rehabilitation-centerProperties
- address
- fax
- id
- identifier
- internalNote
- language
- location
- name
required - note
- onlineBooking
- openingHours
- phone
- social
- tag
Relationships
| Key | Type | Description |
|---|---|---|
practice | Array<Practice> | Practices associated with this resource. |
speciality | Array<Speciality> | Specialities associated with this resource. |
Relationships for a rehabilitation center are not managed through the rehabilitation center itself. Rather, they are managed by creating, updating and deleting other resources referencing the targeted rehabilitation center.
- For
practice: - For
speciality:- To associate a
specialityto a rehabilitation center, one must create a Speciality with theparentproperty referencing the targeted rehabilitation center. - To disassociate a
specialityfrom a rehabilitation center, one must delete the targeted Speciality.
- To associate a
Contained Resources
Overspecialization
Type: overspecializationProperties
The overspecialization property references the parent resource for which this resource is an overspecialization for.
The concept property should be populated with a coding value coming from the overspecialization value set.
Practice
Type: practiceProperties
- healthFacility
required - practitioner
required
The healthFacility property references a parent Clinic, Community Resource, Hospital, Long Term Care, Pharmacy or a Rehabilitation Center.
The practitioner property references a parent Practitioner.
Profession
Type: professionProperties
The parent property references the parent Practitioner to which this profession is associated.
The concept property should be populated with a coding value coming from the profession value set.
Relationships
| Key | Type | Description |
|---|---|---|
overspecialization | Array<Overspecialization> | Overspecialization associated with this resource. |
service | Array<Service> | Services associated with this resource. |
Relationships for a profession are not managed through the profession itself. Rather, they are managed by creating, updating and deleting other resources referencing the targeted profession.
- For
overspecialization:- To associate an
overspecializationto a profession, one must create an overspecialization with theoverspecializationproperty referencing the targeted profession. Theconceptproperty for this newly created overspecialization should be a coding value coming from the value set for the targeted profession. - To disassociate an
overspecializationfrom a profession, one must delete the targeted Overspecialization.
- To associate an
- For
service:- To associate a
serviceto a profession, one must create a Service with theparentproperty referencing the targeted profession. Theconceptproperty for this newly created service should be a coding value coming from the value set for the targeted profession. - To disassociate a
specialityfrom a profession, one must delete the targeted Service.
- To associate a
Service
Type: serviceProperties
The parent property references the parent Speciality or Profession.
The concept property should be populated with a coding value coming from the service value set.
Relationships
| Key | Type | Description |
|---|---|---|
overspecialization | Array<Overspecialization> | Overspecialization associated with this resource. |
service | Array<Service> | Services associated with this resource. |
Relationships for a service are not managed through the service itself. Rather, they are managed by creating, updating and deleting other resources referencing the targeted service.
- For
overspecialization:- To associate an
overspecializationto a service, one must create an overspecialization with theoverspecializationproperty referencing the targeted service. Theconceptproperty for this newly created overspecialization should be a coding value coming from the value set for the targeted service. - To disassociate an
overspecializationfrom a profession, one must delete the targeted Overspecialization.
- To associate an
- For
service:- To associate a
serviceto a service, one must create a Service with theparentproperty referencing the targeted service. Theconceptproperty for this newly created service should be a coding value coming from the value set for the targeted service. - To disassociate a
servicefrom a service, one must delete the targeted Service.
- To associate a
Walk-In
Type: walk-inProperties
- healthFacility
required - newPatientBookingDetail
- openingHours
- patientBookingDetail
required
The healthFacility property references the parent Clinic or CLSC under which the walk-in exists.
Relationships
| Key | Type | Description |
|---|---|---|
speciality | Array<Speciality> | Specialities associated with this resource. |
Relationships for a walk-in are not managed through the walk-in itself. Rather, they are managed by creating, updating and deleting other resources referencing the targeted walk-in.
- For
speciality:- To associate a
specialityto a walk-in, one must create a Speciality with theparentproperty referencing the targeted walk-in. - To disassociate a
specialityfrom a walk-in, one must delete the targeted Speciality.
- To associate a
Properties
acceptNewPatients
BooleanCardinality: 0:1address
AddressCardinality: 0:1ageRange
CompositeCardinality: 0:*| Children | Type | Description |
|---|---|---|
label | Coding Binding: age-category | Categorie of the age range. |
upper | Integer | Upper bound of the age range. Value should be in months |
lower | Integer | Lower bound of the age range. Value should be in months |
Validation -> The lower and upper values must be between 0 and 1800, inclusively.
{
"ageRange": {
"label": {
"system": "age-category",
"version": 1,
"value": "children",
"displayName": [
{
"code": "en",
"value": "Children"
},
{
"code": "fr",
"value": "Enfants"
}
]
},
"upper": 120,
"lower": 72
}
}
casesToRefer
MarkdownCardinality: 0:1concept
CodingCardinality: 1:1clientele
CompositeCardinality: 0:1| Children | Type | Description |
|---|---|---|
| ageRange | Array<Composite> | Collection of age range description of the targeted clientele. |
{
"clientele": {
"ageRange": [
{
"label": {
"system": "age-category",
"version": 1,
"value": "children",
"displayName": [
{
"code": "en",
"value": "Children"
},
{
"code": "fr",
"value": "Enfants"
}
]
},
"upper": 120,
"lower": 72
}
]
}
}
communication
CompositeCardinality: 0:*| Children | Type | Description |
|---|---|---|
language | Coding Binding: spoken-language | Language. |
preferred | Boolean | If the language is preferred by the resource over others. |
{
"communication": [
{
"language": {
"system": "spoken-language",
"version": 1,
"value": "en",
"displayName": [
{
"code": "en",
"value": "English"
},
{
"code": "fr",
"value": "Anglais"
}
]
},
"preferred": true
},
{
"language": {
"system": "spoken-language",
"version": 1,
"value": "fr",
"displayName": [
{
"code": "en",
"value": "French"
},
{
"code": "fr",
"value": "Français"
}
]
},
"preferred": false
}
]
}
createdAt
email
EmailContactPointCardinality: 0:*Validation -> Value must match regex expression ^.+@.+\..+$
fax
FaxContactPointCardinality: 0:*gender
healthFacility
ReferenceCardinality: 1:1Validation -> Only the following reference types are accepted:
- clinic
- clsc
- pharmacy
- community
- long-term-care
- rehabilitation-center
- hospital
humanName
HumanNameCardinality: 0:1identifier
IdentifierCardinality: 0:*internalNote
MarkdownCardinality: 0:1isPayingMember
BooleanCardinality: 0:1isValidated
BooleanCardinality: 0:1language
location
GeoPointCardinality: 0:1modalities
MarkdownCardinality: 0:1name
SymbolCardinality: 1:1Validation -> Value cannot be null or an empty chain of characters.
newPatientBookingDetail
CompositeCardinality: 0:1| Children | Type | Description |
|---|---|---|
phone | PhoneContactPoint | Number where patients can call to book an appointment. |
onlineBooking | UrlContactPoint | Url patients can visit to book an appointment. |
appointmentOpeningDay | Coding Binding: booking-day | Day from which a patient can book a appointment for the current day |
appointmentOpeningTime | Time | Time from which a patient can book a appointment for the current day |
note | Markdown | Publicly visible notes and precisions. |
{
"newPatientBookingDetail": {
"phone": {
"number": "5146077277",
"type": "main",
"extension": null
},
"online-booking": {
"url": "https://clinia.com/booking"
},
"appointmentOpeningTime": "08:00:00",
"appointmentOpeningDay": {
"system": "booking-day",
"version": 1,
"value": "same-day",
"displayName": [
{
"code": "en",
"value": "The same day"
},
{
"code": "fr",
"value": "Le jour même"
}
]
},
"note": "Be persistant when calling, they are very busy."
}
}
note
MarkdownCardinality: 0:1onlineBooking
UrlCardinality: 0:1Validation -> Value must match regex expression https?:\\/\\/(www\\.)?[-a-zA-Z0-9@:%._\\+~#=]{1,256}\\.[a-zA-Z0-9()]{1,6}\\b([-a-zA-Z0-9()@:%_\\+.~#?&//=]*)
openingHours
TimeSlotCardinality: 0:*The openingHours property acts as a value object where the whole collection is the value for the property. This means that, when updating this property, the existing TimeSlot values will be overwritten by the incoming values.
Validation -> For each TimeSlot, start and end must be specified and start must be earlier than end
overspecialization
ReferenceCardinality: 0:1Validation -> Only the following reference types are accepted:
- service
- speciality
- profession
parent
ReferenceCardinality: 0:1Validation -> Only the following reference types are accepted:
- clinic
- clsc
- pharmacy
- community
- long-term-care
- rehabilitation-center
- hospital
- practitioner
- speciality
- service
- clinic
- profession
patientBookingDetail
CompositeCardinality: 0:1| Children | Type | Description |
|---|---|---|
phone | PhoneContactPoint | Number where patients can call to book an appointment. |
onlineBooking | UrlContactPoint | Url patients can visit to book an appointment. |
appointmentOpeningDay | Coding Binding: booking-day | Day from which a patient can book a appointment for the current day |
appointmentOpeningTime | Time | Time from which a patient can book a appointment for the current day |
note | Markdown | Publicly visible notes and precisions. |
{
"patientBookingDetail": {
"phone": {
"number": "5146267588",
"type": "main",
"extension": null
},
"online-booking": {
"url": "https://clinia.com/booking"
},
"appointmentOpeningTime": "08:00:00",
"appointmentOpeningDay": {
"system": "booking-day",
"version": 1,
"value": "day-before",
"displayName": [
{
"code": "en",
"value": "The day before"
},
{
"code": "fr",
"value": "La veille"
}
]
},
"note": "Be persistant when calling, they are very busy."
}
}
phone
PhoneContactPointCardinality: 0:*practitioner
ReferenceCardinality: 1:1Validation -> Only the following reference types are accepted:
- practitioner
social
UrlContactPointCardinality: 0:*title
registration
CompositeCardinality: 0:*| Children | Type | Description |
|---|---|---|
practiceNumber | Symbol | Practice number. |
regionCode | Coding Binding: ca-region | Region where this practice is active. |
{
"registration": [
{
"regionCode": {
"system": "ca-region",
"version": 1,
"value": "qc",
"displayName": [
{
"code": "en",
"value": "Quebec"
},
{
"code": "fr",
"value": "Québec"
}
]
},
"practiceNumber": "12345B"
}
]
}
tag
SymbolCardinality: 0:*