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.
#
ResourcesAll 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.
#
ClinicType: clinic
#
Properties- address
- fax
- id
- identifier
- internalNote
- language
- location
- name
required
- note
- onlineBooking
- openingHours
- phone
- social
#
RelationshipsKey | 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
speciality
to a clinic, one must create a Speciality with theparent
property referencing the targeted clinic. - To disassociate a
speciality
from a clinic, one must delete the targeted Speciality.
- To associate a
- For
walkIn
:
#
CLSCType: clsc
#
Properties- address
- fax
- id
- identifier
- internalNote
- language
- location
- name
required
- note
- onlineBooking
- openingHours
- phone
- social
#
RelationshipsKey | 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
speciality
to a CLSC, one must create a Speciality with theparent
property referencing the targeted CLSC. - To disassociate a
speciality
from a CLSC, one must delete the targeted Speciality.
- To associate a
- For
walkIn
:
#
Community ResourceType: community
#
Properties- address
- fax
- id
- identifier
- internalNote
- language
- location
- name
required
- note
- onlineBooking
- openingHours
- phone
- social
- tag
#
RelationshipsKey | 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
speciality
to a community resource, one must create a Speciality with theparent
property referencing the targeted community resource. - To disassociate a
speciality
from a community resource, one must delete the targeted Speciality.
- To associate a
#
HospitalType: hospital
#
Properties#
RelationshipsKey | 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
speciality
to a hospital, one must create a Speciality with theparent
property referencing the targeted hospital. - To disassociate a
speciality
from a hospital, one must delete the targeted Speciality.
- To associate a
#
Long term careType: long-term-care
#
Properties- address
- fax
- id
- identifier
- internalNote
- language
- location
- name
required
- note
- onlineBooking
- openingHours
- phone
- social
- tag
#
RelationshipsKey | 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
speciality
to a long term case resource, one must create a Speciality with theparent
property referencing the targeted long term case resource. - To disassociate a
speciality
from a long term case resource, one must delete the targeted Speciality.
- To associate a
#
PharmacyType: phamarcy
#
Properties- address
- fax
- id
- identifier
- internalNote
- language
- location
- name
required
- note
- onlineBooking
- openingHours
- phone
- social
#
RelationshipsKey | 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
speciality
to a pharmacy, one must create a Speciality with theparent
property referencing the targeted pharmacy. - To disassociate a
speciality
from a pharmacy, one must delete the targeted Speciality.
- To associate a
- For
walkIn
:
#
PractitionerType: practitioner
#
Properties- acceptNewPatients
- casesToRefer
- clientele
- communication
- fax
- gender
- humanName
required
- id
- identifier
- internalNote
- isPayingMember
- isValidated
- modalities
- note
- phone
- registration
- title
#
RelationshipsKey | 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
profession
to a practitioner, one must create a Profession with theparent
property referencing the targeted practitioner. - To disassociate a
profession
from a practitioner, one must delete the targeted Profession.
- To associate a
#
Rehabilitation CenterType: rehabilitation-center
#
Properties- address
- fax
- id
- identifier
- internalNote
- language
- location
- name
required
- note
- onlineBooking
- openingHours
- phone
- social
- tag
#
RelationshipsKey | 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
speciality
to a rehabilitation center, one must create a Speciality with theparent
property referencing the targeted rehabilitation center. - To disassociate a
speciality
from a rehabilitation center, one must delete the targeted Speciality.
- To associate a
#
Contained Resources#
OverspecializationType: overspecialization
#
PropertiesThe 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.
#
PracticeType: practice
#
Properties- 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.
#
ProfessionType: profession
#
PropertiesThe 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.
#
RelationshipsKey | 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
overspecialization
to a profession, one must create an overspecialization with theoverspecialization
property referencing the targeted profession. Theconcept
property for this newly created overspecialization should be a coding value coming from the value set for the targeted profession. - To disassociate an
overspecialization
from a profession, one must delete the targeted Overspecialization.
- To associate an
- For
service
:- To associate a
service
to a profession, one must create a Service with theparent
property referencing the targeted profession. Theconcept
property for this newly created service should be a coding value coming from the value set for the targeted profession. - To disassociate a
speciality
from a profession, one must delete the targeted Service.
- To associate a
#
ServiceType: service
#
PropertiesThe parent
property references the parent Speciality or Profession.
The concept
property should be populated with a coding value coming from the service
value set.
#
RelationshipsKey | 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
overspecialization
to a service, one must create an overspecialization with theoverspecialization
property referencing the targeted service. Theconcept
property for this newly created overspecialization should be a coding value coming from the value set for the targeted service. - To disassociate an
overspecialization
from a profession, one must delete the targeted Overspecialization.
- To associate an
- For
service
:- To associate a
service
to a service, one must create a Service with theparent
property referencing the targeted service. Theconcept
property for this newly created service should be a coding value coming from the value set for the targeted service. - To disassociate a
service
from a service, one must delete the targeted Service.
- To associate a
#
Walk-InType: walk-in
#
Properties- healthFacility
required
- newPatientBookingDetail
- openingHours
- patientBookingDetail
required
The healthFacility
property references the parent Clinic or CLSC under which the walk-in exists.
#
RelationshipsKey | 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
speciality
to a walk-in, one must create a Speciality with theparent
property referencing the targeted walk-in. - To disassociate a
speciality
from a walk-in, one must delete the targeted Speciality.
- To associate a
#
Properties#
acceptNewPatientsBoolean
Cardinality: 0:1
#
addressAddress
Cardinality: 0:1
#
ageRangeComposite
Cardinality: 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
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 }}
#
casesToReferMarkdown
Cardinality: 0:1
#
conceptCoding
Cardinality: 1:1
#
clienteleComposite
Cardinality: 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 } ] }}
#
communicationComposite
Cardinality: 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#
emailEmailContactPoint
Cardinality: 0:*
VALIDATION
Validation -> Value must match regex expression ^.+@.+\..+$
#
faxFaxContactPoint
Cardinality: 0:*
#
gender#
healthFacilityReference
Cardinality: 1:1
VALIDATION
Validation -> Only the following reference types are accepted:
- clinic
- clsc
- pharmacy
- community
- long-term-care
- rehabilitation-center
- hospital
#
humanNameHumanName
Cardinality: 0:1
#
identifierIdentifier
Cardinality: 0:*
#
internalNoteMarkdown
Cardinality: 0:1
#
isPayingMemberBoolean
Cardinality: 0:1
#
isValidatedBoolean
Cardinality: 0:1
#
language#
locationGeoPoint
Cardinality: 0:1
#
modalitiesMarkdown
Cardinality: 0:1
#
nameSymbol
Cardinality: 1:1
VALIDATION
Validation -> Value cannot be null
or an empty chain of characters.
#
newPatientBookingDetailComposite
Cardinality: 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." }}
#
noteMarkdown
Cardinality: 0:1
#
onlineBookingUrl
Cardinality: 0:1
VALIDATION
Validation -> Value must match regex expression https?:\\/\\/(www\\.)?[-a-zA-Z0-9@:%._\\+~#=]{1,256}\\.[a-zA-Z0-9()]{1,6}\\b([-a-zA-Z0-9()@:%_\\+.~#?&//=]*)
#
openingHoursTimeSlot
Cardinality: 0:*
NOTE
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.
caution
Validation -> For each TimeSlot, start
and end
must be specified and start
must be earlier than end
#
overspecializationReference
Cardinality: 0:1
VALIDATION
Validation -> Only the following reference types are accepted:
- service
- speciality
- profession
#
parentReference
Cardinality: 0:1
VALIDATION
Validation -> Only the following reference types are accepted:
- clinic
- clsc
- pharmacy
- community
- long-term-care
- rehabilitation-center
- hospital
- practitioner
- speciality
- service
- clinic
- profession
#
patientBookingDetailComposite
Cardinality: 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." }}
#
phonePhoneContactPoint
Cardinality: 0:*
#
practitionerReference
Cardinality: 1:1
VALIDATION
Validation -> Only the following reference types are accepted:
- practitioner
#
socialUrlContactPoint
Cardinality: 0:*
#
title#
registrationComposite
Cardinality: 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" } ]}
#
tagSymbol
Cardinality: 0:*