Shared Health Specification and Guide Version 5.0

 

The official URL for this profile is:

http://sharedhealth.exchange/fhir/StructureDefinition/interaction-bundle-query-organization

Provider and Location Registry - Introduction

The Provider Registry provides searchable access to practitioners (prescribers) and organizations (clinics and pharmacies). It provides a standard FHIR RESTful interface supporting both read and search capabilities.

Organization and Practitioner reads and queries are executed based upon the context; either PrescribeIT® or SharedHealth (MedDialog). As such, the endpoints for a given record will be different for each. For a given practitioner or organization record, there will be two endpoints and the vendor must select and use the appropriate endpoint depending on the type of query or message. In the messages, references will be the full URL

A summary of their function is found in the table below:

Provider and Location Registry function HTTP action HTTP Payload Profile Example
Organization
Read Organization request GET https://api.sharedhealth.exchange/rest/v1/preconf/THP/TPR_vs1/Organization/[CPRID] N/A N/A
Read Organization response HTTP 200 GET Response w/ FHIR Organization payload Organization response Organization read
Search Organization request GET https://api.sharedhealth.exchange/rest/v1/preconf/THP/TPR_vs1/Organization?[Organization search parameters] (see below) N/A N/A
Search Organization response HTTP 200 GET Response w/ FHIR Bundle searchset payload Organization response Organization Search response
Bulk Search Organization HTTP 200 POST Response w/ FHIR Bundle searchset payload Organization response Organization Search response

When performing a search, the requester must specify one or more search criteria to filter the set of organizations that can be returned. The table below summarizes the search parameters that can be used and which resources they can be used for. (Note that parameters sent in the URL must be appropriately escaped.)

There are four types of searches supported: 1) Identifier Search (GET), 2) Discrete Fields Search, 3) Elastic Search, and 4) Bulk Searches (Supporting Periodic Sync of Matched Records and Bulk Update of Unmatched Records)

On a Search response, we return a searchset bundle. If the "_revinclude=Practitioner:organization" parameter is specified then the service should return full Practitioner resources for each of the organizations.

The structure of the Organization Query Response

For the GET response, you only get one and only one resource. The resource is returned directly not wrapped in a bundle. Details on the response can be found here.

Parameter Used for Required/Optional Description Example
identifier Organization/Practitioner Required Matches on either the provider registry identifier (CPR) for practitioner or organization

identifier=2263396629%7Chttp://sharedhealth.exchange/fhir/NamingSystem/registry-id-organization

identifier=2263396629

(identifier will be CPRID for practitioner or organization concatenated or not with URI identifier of Shared Health)

Matches on license number for the practitioner

identifier=134IDY41W988%7Curn:oid:2.16.840.1.113883.2.4.6.3
(identifier will be the Licence number for practitioner concatenated with college ID number)

_revinclude Organization Optional This causes the query to return all practitioners associated with Organization that meet the search criteria

_revinclude=Practitioner:organization

(Value must equal Practitioner:organization otherwise related practitioners won't return)

_include Practitioner Optional This causes the query to return all organizations pointed to by Practitioner that meet the search criteria.

_include=Practitioner:organization

(Value must equal Practitioner:organization)

Examples:

$URL/Organization?identifier=200020258%7Chttp://sharedhealth.exchange/fhir/NamingSystem/registry-id-organization&_revinclude=Practitioner:organization

$URL/Practitioner?identifier=200020258%7Chttp://sharedhealth.exchange/fhir/NamingSystem/registry-id-organization

$URL/Practitioner?identifier=134IDY41W988%7Curn:oid:2.16.840.1.113883.2.4.6.3&_include=Practitioner:organization

$URL/Practitioner?identifier=134IDY41W988%7Curn:oid:2.16.840.1.113883.2.4.6.3

Startwith Rules*: A "startwith" search will search across each word within the name (eg Organization or Practitioner name) rather than the start of the name as a whole. For example: If searching for a query string = "pharm", the result set would include both "Pharmacy ABC" and "Sue's Pharmacy" because the search tokenizes the names and therefore searches across the words "Pharmacy" and "ABC" in the first instance and "Sue's" and "Pharmacy" in the second instance.

For a Discrete field search, the query may return multiple resources in a searchset bundle. Details on the response can be found here.

Parameter Used for Required/ Optional Description Example
role Org Required Matches on the roles performed by the Organization (clinic or pharmacy).

role=PROFF
role=OUTPHARM

(role must equal PROFF to search for clinics, OUTPHARM to search for pharmacies)

address-state:exact Org Required This searches for an exact match on the province or territory of the service location's address

address-state:exact=ON

address-city:exact

Org

Optional

This searches for an exact match, on the municipality of the service location's address.

address-city:exact=Hamilton

address-city =Ham

(you can't use both parameters together, you only allowed to use one of them)

address-city

This searches for "startswith" on the municipality of the service location's address. Minimum 3 characters.

address-line:exact

Org

Optional

This searches for an exact match on the street address line of the service location's address.

address-line:exact=123 North 102nd Street

address-line:contains=North 102nd Street

(you can't use both parameters together, you only allowed to use one of them)

address-line:contains

Searches for contains address line

address-postalcode Org Optional This searches for a starts-with match on the postal code of the service location's address. Minimum 3 characters. All white spaces will be ignored. Format: "H3H", "H3H3", "H3H 3", "H3H 3H", "H3H 3H3", etc. address-postalcode=H3H or address-postalcode=H3H3 or address-postalcode=H3H 3H3

name:contains

Org

Optional

Partial match search on the name of the pharmacy, clinic. Minimum 3 characters.

name=Simplicity
name:contains=imp

(you can't use both parameters together, you only allowed to use one of them)

name

This searches for "startswith" on organization name. Minimum 3 characters.

telecom-fax:exact

Org

Optional

This searches for an exact match on one of the 10-digit fax numbers of the organization

telecom-fax:exact=5555551212

telecom-phone:exact

Org

Optional

This searches for an exact match on one of the 10-digit phone numbers of the organization

telecom-phone:exact=5555551212

_revinclude

Org

Optional

This causes the query to return all practitioners associated with Organization that meet the search criteria

_revinclude=Practitioner:organization

(Value must equal Practitioner:organization otherwise related practitioners won't return)

_lastUpdated

Org

Optional

This causes the query to return all Organizations that meet the search criteria

_lastUpdated=gt2020-10-01T10:00:00

"gt" is mandatory as this is the only supported date prefix. This time is always in UTC.

Examples:

$URL/Organization?role=OUTPHARM&address-state:exact=ON&address-city:exact=Hamilton&name=Test&address-line:contains=Cotu

$URL/Organization?role=PROFF&address-state:exact=ON&address-city:exact=Hamilton&name:contains=st&address-line:exact=jean Cotu&telecom-phone:exact=5343434434

Startwith Rules*: A "startwith" search will search across each word within the name (eg Organization or Practitioner name) rather than the start of the name as a whole. For example: If searching for a query string = "pharm", the result set would include both "Pharmacy ABC" and "Sue's Pharmacy" because the search tokenizes the names and therefore searches across the words "Pharmacy" and "ABC" in the first instance and "Sue's" and "Pharmacy" in the second instance.

For an elastic search, the result may include multiple resources, returned in a searchset bundle. Details on the response can be found here.

Parameter Used for Required/ Optional Description Example
role Org Required Matches on the roles performed by the Organization (clinic or pharmacy).

role=PROFF
role=OUTPHARM

(role must equal PROFF to search for clinics, OUTPHARM to search for pharmacies)

address-state:exact Org Required This searches for an exact match on the province or territory of the service location's address (exact match) address-state:exact=ON
elastic-search-string Org Required Multiple search terms separated by spaces (URL escaped). Minimum 1 character. elastic-search-string=smith+john+hamilt
elastic-search-attribute-set Org Required

The defined ‘elastic-search-string’ values will be evaluated against each of the data elements identified by the code set. (startswith).

Code set. Currently supported values: set-001 and set-002.

Set-001 defined as:

  • Org Name
  • Org City

Set-002 (includes set-001 and adds)

  • address
  • postal code
  • phone number
  • fax number

elastic-search-attribute-set=set-001

or

elastic-search-attribute-set=set-002

entity-service-code Organization Optional This may be used to scope the query results to a specifc service. If this is not specified, the query results will include all services for a given domain (e.g. a PrescribeIT® query will return both the Clinical Communications service and the core PrescribeIT® service). Use Value from SharedServiceType. Exact Match. entity-service-code=prescribeit-rx
_revinclude Organization Optional This causes the query to return all practitioners associated with Organization that meet the search criteria. Exact match.

_revinclude=Practitioner:organization

(Value must equal Practitioner:organization otherwise related practitioners won't return)

Examples:

$URL/Organization?role=OUTPHARM&address-state:exact=ON&elastic-search-string=georgian+bay&elastic-search-attribute-set=set-001

Example of search combinations.

Note: you cannot combine exact and contains parameters, you are only allowed one of them.

1.

Search by Identifier
Required: identifier
Optional: _revinclude, _include
$URL/Organization?identifier=200020258

2.

Search for Organization by City
Required: role + address-state:exact + address-city:exact
Optional: address-line:exact, address-line:contains
$URL/Organization?role=OUTPHARM&address-state:exact=ON&address-city:exact=Hamilton&name=Test&address-line:contains=Cotu $URL/Organization?role=PROFF&address-state:exact=ON&address-city:exact=Hamilton&name:contains=st&address-line:exact=jean Cotu&telecom-phone:exact=5343434434

3.

Search for Organization by Postal Code
Required: role + addres-state:exact + address-postalcode
Optional: address-line:exact, address-line:contains, name:contains, name, telecom-phone:exact
$URL/Organization?role=OUTPHARM&address-state:exact=ON&address-postalcode =H4Y&name=Test&address-line:contains=Cotu $URL/Organization?role=PROFF&address-state:exact=ON&address-postalcode =H4Y&name:contains=Test&address-line:exact=jean Cotu&telecom-phone:exact=5343434434

Periodic Sync of Matched Records

Once an EMR has matched a PrescribeIT pharmacy to a local record, the EMR does not typically search TPR for the pharmacy again as the information to communicate to the pharmacy (i.e. CPRID) is held in the local system. This means that the information can get out of sync over time, specifically, the status of the PrescribeIT related services (i.e. PrescribeIT and Clinician Communications). It is important that the clinics have the up to date information so that the system can send the prescription or a message to the pharmacy electronically when possible. In order to assist the EMR's in keeping the information up to date, a new style of TPR query has been introduced for this purpose.

Supported parameters are:

  • role=OUTPHARM (required, 1..1)
  • identifier (required, 1..*)
  • _lastUpdated (optional, 0..1) "gt" is mandatory as this is the only supported date prefix. Example (non-encoded): &_lastUpdated=gt2020-10-01T10:00:00
  • _search (required) Without it an error is returned stating that the HTTP call is not supported.

Example:

POST https://api.sharedhealth.exchange/rest/v1/preconf/THP/TPR_vs1/Organization/_search?_query=bulkSync

POST https://api.sharedhealth.exchange/rest/v1/THP/TPR_vs0/Organization/_search?_query=bulkSync

Please note that a different content type header is required for this query. For more information, refer to PR Bulk Search Organization API summary page.

Body:

role=OUTPHARM&identifier=35738945,348343000,0303030303,656565656&_lastUpdated=gt2020-10-01T10:00:00

(non-encoded) role=OUTPHARM&identifier=35738945,348343000,0303030303,656565656&_lastUpdated=gt2020-10-01T10:00:00

Bulk Update of Unmatched Records

For clinics coming onto PrescribeIT initially there is a need to do a bulk search and link of anypharmacies in the local address bookthat are PrescribeIT enabled. In addition, the EMR may implement a method for the user to initiate a Bulk Update in the event they want to do an ad hoc search for possible matches. To determine a match, the EMR will conduct a TPR search using the fax numbers stored in the local address book to see if there is a match in the Provider Registry. If an exact match is found, the CPRID for the pharmacy will be added to the clinic's address book and the EMR will indicate it is PrescribeIT enabled.

The full 10-digit fax number will be sent which will include the area code and number. This is an exact match search and can accommodate an unlimited number of fax numbers in a single request. The request must include which type of organization to search (Organization Type = OUTPHARM).

Supported parameters are:

  • role=OUTPHARM (required, 1..1)
  • telecom-fax:exact (required, 1..*)
  • _search (required) Without it an error is returned stating that the HTTP call is not supported.

Example:

POST https://api.sharedhealth.exchange/rest/v1/preconf/THP/TPR_vs1/Organization/_search?_query=bulkSync

POST https://api.sharedhealth.exchange/rest/v1/THP/TPR_vs0/Organization/_search?_query=bulkSync

Please note that a different content type header is required for this query. For more information, refer to PR Bulk Search Organization API summary page.

Download Excel representation

Description of Profiles, Differentials, Snapshots and how the different presentations work.

>

This structure is derived from Shared Health Bundle - Query Response

NameCard.TypeConstraints and Usage
.  Bundle 0..*Shared Health Bundle - Query Responsebdl-2: entry.search only when a search
bdl-1: total only when a search or history
bdl-7: FullUrl must be unique in a bundle, or else entries with the same fullUrl must have different meta.versionId
bdl-3: entry.request only for some types of bundles
bdl-4: entry.response only for some types of bundles
Definition:
A container for a collection of resources.

..  id 0..1idDefinition:
The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes.


Comments:
Usage Note: This value is assigned by the PrescribeIT® system upon receipt of a bundle and returned synchronously in the response to that bundle. This ID should not be confused with the traceID that is also returned in the response and is generally used when diagnosing message failures within the PrescribeIT® system logs. The Bundle.id is also used by receiving systems to remove the bundle from their inbox after they have successfully retrieved the bundle.

..  meta 1..1MetaDefinition:
The metadata about the resource. This is content that is maintained by the infrastructure. Changes to the content may not always be associated with version changes to the resource.

...  lastUpdated 0..1instantDefinition:
When the resource last changed - e.g. when the version changed.


Comments:
This value is always populated except when the resource is first being created. The server / resource manager sets this value; what a client provides is irrelevant.

...  profile 1..*uriSlice: Unordered, Open by value:value
Definition:
A list of profiles [[[StructureDefinition]]]s that this resource claims to conform to. The URL is a reference to [[[StructureDefinition.url]]].


Comments:
It is up to the server and/or other infrastructure of policy to determine whether/how these claims are verified and/or updated over time. The list of profile URLs is a set.

...  profile
       (profile)
1..1uriFixed Value: http://sharedhealth.exchange/fhir/StructureDefinition/interaction-bundle-query-organization
Definition:
A list of profiles [[[StructureDefinition]]]s that this resource claims to conform to. The URL is a reference to [[[StructureDefinition.url]]].


Comments:
Fixed value: http://sharedhealth.exchange/fhir/StructureDefinition/interaction-bundle-query-organization

...  tag 1..*CodingSlice: Unordered, Open by value:system
Binding: (unbound) (example): Codes that represent various types of tags, commonly workflow-related; e.g. "Needs review by Dr. Jones"


Definition:
Tags applied to this resource. Tags are intended to be used to identify and relate resources to process and workflow, and applications are not required to consider the tags when interpreting the meaning of a resource.


Comments:
The tags can be updated without changing the stated version of the resource. The list of tags is a set. Uniqueness is based the system/code, and version and display are ignored.

...  tag
       (version)
1..1CodingBinding: SharedSpecificationVersion (20210501) (required)
Definition:
Tags applied to this resource. Tags are intended to be used to identify and relate resources to process and workflow, and applications are not required to consider the tags when interpreting the meaning of a resource.


Comments:
Usage Note: This the version of the specification the Bundle claims to be conformant with.



Usage Note: Only these 2 situations are not enforced by FHIR Validator:



  1. Non-routed EMR/PMS Inbox messages and Clear Queue Request that is sent only to Central Switch; and

  2. Synchronous messages generated by Central Switch (Errors with only OperationOutcome profile and Clear Queue Response)



....  system 1..1uriFixed Value: https://fhir.infoway-inforoute.ca/CodeSystem/sharedspecificationversion
Definition:
The identification of the code system that defines the meaning of the symbol in the code.


Comments:
Fixed value: https://fhir.infoway-inforoute.ca/CodeSystem/sharedspecificationversion

....  code 1..1codeFixed Value: Shared5.0
Definition:
A symbol in syntax defined by the system. The symbol may be a predefined code or an expression in a syntax defined by the coding system (e.g. post-coordination).


Comments:
Fixed value: Shared5.0

..  type 1..1codeBinding: BundleType (required): Indicates the purpose of a bundle - how it was intended to be used.


Fixed Value: searchset
Definition:
Indicates the purpose of this bundle- how it was intended to be used.


Comments:
Fixed value: searchset

..  total 0..1unsignedIntDefinition:
If a set of search matches, this is the total number of matches for the search (as opposed to the number of results in this bundle).


Comments:
Only used if the bundle is a search result set.

..  link 1..*BackboneElementSlice: Unordered, Open by value:relation
Definition:
A series of links that provide context to this bundle.

..  link
     (self)
1..1BackboneElementDefinition:
A series of links that provide context to this bundle.


Comments:
Echoes the submitted query, including only those parameters which were processed by the server. This allows for the possibility that the server might not support all of the parameters submitted by the client.

...  relation 1..1stringFixed Value: self
Definition:
A name which details the functional use for this link - see [[http://www.iana.org/assignments/link-relations/link-relations.xhtml]].


Comments:
Fixed value: self

...  url 1..1uriDefinition:
The reference details for the link.

..  link
     (next)
0..1BackboneElementDefinition:
A series of links that provide context to this bundle.


Comments:
For Provider Registry Organization query, this element is not curently supported.

...  relation 1..1stringFixed Value: next
Definition:
A name which details the functional use for this link - see [[http://www.iana.org/assignments/link-relations/link-relations.xhtml]].


Comments:
Fixed value: next

...  url 1..1uriDefinition:
The reference details for the link.


Comments:
If present, indicates additional results are available and can be retrieved by performing a GET on this URL

..  entry 1..*BackboneElementbdl-5: must be a resource unless there's a request or response
bdl-6: The fullUrl element must be present when a resource is present, and not present otherwise
entryIsOrganization: Match entries must be Bundles declaring profile-organization-tpr
includeIsPractitioner: Include entries must be Bundles declaring profile-practitioner-tpr
outcomeIsOperationOutcome: Outcome entries must be OperationOutcomes
Definition:
An entry in a bundle resource - will either contain a resource, or information about a resource (transactions and history only).

...  fullUrl 1..1uriDefinition:
The Absolute URL for the resource. The fullUrl SHALL not disagree with the id in the resource. The fullUrl is a version independent reference to the resource. The fullUrl element SHALL have a value except that: * fullUrl can be empty on a POST (although it does not need to when specifying a temporary id for reference in the bundle) * Results from operations might involve resources that are not identified.


Comments:
fullUrl may not be unique in the context of a resource. Note that since FHIR resources do not need to be served through the FHIR API, the absolute URL may not end with the logical id of the resource (Resource.id), but if the fullUrl does look like a RESTful server URL (e.g. meets the regex, then it SHALL end with the Resource.id.

...  resource 1..1ResourceDefinition:
The Resources for the entry.

...  search 1..1BackboneElementDefinition:
Information about the search process that lead to the creation of this entry.

....  mode 1..1codeBinding: SearchEntryMode (required): Why an entry is in the result set - whether it's included as a match or because of an _include requirement.


Definition:
Why this entry is in the result set - whether it's included as a match or because of an _include requirement.


Comments:
There is only one mode. In some corner cases, a resource may be included because it is both a match and an include. In these circumstances, 'match' takes precedence.

This structure is derived from Shared Health Bundle - Query Response

Summary

Mandatory: 7 elements
Must-Support: 9 elements
Fixed Value: 2 elements

Slices

This structure defines the following Slices:

  • The element Bundle.meta.profile is sliced based on the value of value:value

This structure is derived from Shared Health Bundle - Query Response

NameFlagsCard.TypeDescription & Constraintsdoco
.. Bundle S0..*Shared Health Bundle - Query ResponseContains a collection of resources
... meta S1..1MetaMetadata about the resource
.... lastUpdated S0..1instantWhen the resource version last changed
.... profile S1..*(Slice Definition)Profiles this resource claims to conform to
Slice: Unordered, Open by value:value
..... profile:profile S1..1uriProfiles this resource claims to conform to
Fixed Value: http://sharedhealth.exchange/fhir/StructureDefinition/interaction-bundle-query-organization
..... tag:version S1..1CodingTags applied to this resource
...... code S1..1codeSymbol in syntax defined by the system
Fixed Value: Shared5.0
... entry SI1..*BackboneElementEntry in the bundle - will have a resource, or information
entryIsOrganization: Match entries must be Bundles declaring profile-organization-tpr
includeIsPractitioner: Include entries must be Bundles declaring profile-practitioner-tpr
outcomeIsOperationOutcome: Outcome entries must be OperationOutcomes
.... search S1..1BackboneElementSearch related information
..... mode S1..1codematch | include | outcome - why this is in the result set

doco Documentation for this format
NameFlagsCard.TypeDescription & Constraintsdoco
.. Bundle SΣI0..*Shared Health Bundle - Query ResponseContains a collection of resources
... id SΣ0..1idLogical id of this artifact
... meta SΣ1..1MetaMetadata about the resource
.... id 0..1idxml:id (or equivalent in JSON)
.... extension 0..*ExtensionAdditional Content defined by implementations
.... versionId Σ0..1idVersion specific identifier
.... lastUpdated SΣ0..1instantWhen the resource version last changed
.... profile SΣ1..*(Slice Definition)Profiles this resource claims to conform to
Slice: Unordered, Open by value:value
..... profile:profile SΣ1..1uriProfiles this resource claims to conform to

Fixed Value: http://sharedhealth.exchange/fhir/StructureDefinition/interaction-bundle-query-organization
.... security Σ0..*CodingSecurity Labels applied to this resource
Binding: All Security Labels (extensible): Security Labels from the Healthcare Privacy and Security Classification System.


.... tag SΣ1..*(Slice Definition)Tags applied to this resource
Slice: Unordered, Open by value:system
Binding: (unbound) (example): Codes that represent various types of tags, commonly workflow-related; e.g. "Needs review by Dr. Jones"


..... tag:version SΣ1..1CodingTags applied to this resource
Binding: SharedSpecificationVersion (20210501) (required)
...... id 0..1idxml:id (or equivalent in JSON)
...... extension 0..*ExtensionAdditional Content defined by implementations
...... system SΣ1..1uriIdentity of the terminology system
Fixed Value: https://fhir.infoway-inforoute.ca/CodeSystem/sharedspecificationversion
...... version Σ0..1stringVersion of the system - if relevant
...... code SΣ1..1codeSymbol in syntax defined by the system
Fixed Value: Shared5.0
...... display Σ0..1stringRepresentation defined by the system
...... userSelected Σ0..1booleanIf this coding was chosen directly by the user
... implicitRules ?!Σ0..1uriA set of rules under which this content was created
... language 0..1codeLanguage of the resource content
Binding: http://tools.ietf.org/html/bcp47 (required): A human language.


... type SΣ1..1codedocument | message | transaction | transaction-response | batch | batch-response | history | searchset | collection
Binding: BundleType (required): Indicates the purpose of a bundle - how it was intended to be used.


Fixed Value: searchset
... total SΣI0..1unsignedIntIf search, the total number of matches
... link SΣ1..*(Slice Definition)Links related to this Bundle
Slice: Unordered, Open by value:relation
.... link:All Slices Content/Rules for all slices
..... id 0..1idxml:id (or equivalent in JSON)
..... extension 0..*ExtensionAdditional Content defined by implementations
..... modifierExtension ?!Σ0..*ExtensionExtensions that cannot be ignored
..... relation Σ1..1stringhttp://www.iana.org/assignments/link-relations/link-relations.xhtml
..... url Σ1..1uriReference details for the link
.... link:self SΣ1..1BackboneElementLinks related to this Bundle
..... id 0..1idxml:id (or equivalent in JSON)
..... extension 0..*ExtensionAdditional Content defined by implementations
..... modifierExtension ?!Σ0..*ExtensionExtensions that cannot be ignored
..... relation SΣ1..1stringhttp://www.iana.org/assignments/link-relations/link-relations.xhtml
Fixed Value: self
..... url SΣ1..1uriReference details for the link
.... link:next SΣ0..1BackboneElementLinks related to this Bundle
..... id 0..1idxml:id (or equivalent in JSON)
..... extension 0..*ExtensionAdditional Content defined by implementations
..... modifierExtension ?!Σ0..*ExtensionExtensions that cannot be ignored
..... relation SΣ1..1stringhttp://www.iana.org/assignments/link-relations/link-relations.xhtml
Fixed Value: next
..... url SΣ1..1uriReference details for the link
... entry SΣI1..*BackboneElementEntry in the bundle - will have a resource, or information
entryIsOrganization: Match entries must be Bundles declaring profile-organization-tpr
includeIsPractitioner: Include entries must be Bundles declaring profile-practitioner-tpr
outcomeIsOperationOutcome: Outcome entries must be OperationOutcomes
.... id 0..1idxml:id (or equivalent in JSON)
.... extension 0..*ExtensionAdditional Content defined by implementations
.... modifierExtension ?!Σ0..*ExtensionExtensions that cannot be ignored
.... link 0..*See link (Bundle)Links related to this entry
.... fullUrl SΣ1..1uriAbsolute URL for resource (server address, or UUID/OID)
.... resource SΣ1..1ResourceA resource in the bundle
.... search SΣI1..1BackboneElementSearch related information
..... id 0..1idxml:id (or equivalent in JSON)
..... extension 0..*ExtensionAdditional Content defined by implementations
..... modifierExtension ?!Σ0..*ExtensionExtensions that cannot be ignored
..... mode SΣ1..1codematch | include | outcome - why this is in the result set
Binding: SearchEntryMode (required): Why an entry is in the result set - whether it's included as a match or because of an _include requirement.

..... score Σ0..1decimalSearch ranking (between 0 and 1)
... signature Σ0..1SignatureDigital Signature

doco Documentation for this format

Grid View

This structure is derived from Shared Health Bundle - Query Response

NameCard.TypeConstraints and Usage
.  Bundle 0..*Shared Health Bundle - Query Responsebdl-2: entry.search only when a search
bdl-1: total only when a search or history
bdl-7: FullUrl must be unique in a bundle, or else entries with the same fullUrl must have different meta.versionId
bdl-3: entry.request only for some types of bundles
bdl-4: entry.response only for some types of bundles
Definition:
A container for a collection of resources.

..  id 0..1idDefinition:
The logical id of the resource, as used in the URL for the resource. Once assigned, this value never changes.


Comments:
Usage Note: This value is assigned by the PrescribeIT® system upon receipt of a bundle and returned synchronously in the response to that bundle. This ID should not be confused with the traceID that is also returned in the response and is generally used when diagnosing message failures within the PrescribeIT® system logs. The Bundle.id is also used by receiving systems to remove the bundle from their inbox after they have successfully retrieved the bundle.

..  meta 1..1MetaDefinition:
The metadata about the resource. This is content that is maintained by the infrastructure. Changes to the content may not always be associated with version changes to the resource.

...  lastUpdated 0..1instantDefinition:
When the resource last changed - e.g. when the version changed.


Comments:
This value is always populated except when the resource is first being created. The server / resource manager sets this value; what a client provides is irrelevant.

...  profile 1..*uriSlice: Unordered, Open by value:value
Definition:
A list of profiles [[[StructureDefinition]]]s that this resource claims to conform to. The URL is a reference to [[[StructureDefinition.url]]].


Comments:
It is up to the server and/or other infrastructure of policy to determine whether/how these claims are verified and/or updated over time. The list of profile URLs is a set.

...  profile
       (profile)
1..1uriFixed Value: http://sharedhealth.exchange/fhir/StructureDefinition/interaction-bundle-query-organization
Definition:
A list of profiles [[[StructureDefinition]]]s that this resource claims to conform to. The URL is a reference to [[[StructureDefinition.url]]].


Comments:
Fixed value: http://sharedhealth.exchange/fhir/StructureDefinition/interaction-bundle-query-organization

...  tag 1..*CodingSlice: Unordered, Open by value:system
Binding: (unbound) (example): Codes that represent various types of tags, commonly workflow-related; e.g. "Needs review by Dr. Jones"


Definition:
Tags applied to this resource. Tags are intended to be used to identify and relate resources to process and workflow, and applications are not required to consider the tags when interpreting the meaning of a resource.


Comments:
The tags can be updated without changing the stated version of the resource. The list of tags is a set. Uniqueness is based the system/code, and version and display are ignored.

...  tag
       (version)
1..1CodingBinding: SharedSpecificationVersion (20210501) (required)
Definition:
Tags applied to this resource. Tags are intended to be used to identify and relate resources to process and workflow, and applications are not required to consider the tags when interpreting the meaning of a resource.


Comments:
Usage Note: This the version of the specification the Bundle claims to be conformant with.



Usage Note: Only these 2 situations are not enforced by FHIR Validator:



  1. Non-routed EMR/PMS Inbox messages and Clear Queue Request that is sent only to Central Switch; and

  2. Synchronous messages generated by Central Switch (Errors with only OperationOutcome profile and Clear Queue Response)



....  system 1..1uriFixed Value: https://fhir.infoway-inforoute.ca/CodeSystem/sharedspecificationversion
Definition:
The identification of the code system that defines the meaning of the symbol in the code.


Comments:
Fixed value: https://fhir.infoway-inforoute.ca/CodeSystem/sharedspecificationversion

....  code 1..1codeFixed Value: Shared5.0
Definition:
A symbol in syntax defined by the system. The symbol may be a predefined code or an expression in a syntax defined by the coding system (e.g. post-coordination).


Comments:
Fixed value: Shared5.0

..  type 1..1codeBinding: BundleType (required): Indicates the purpose of a bundle - how it was intended to be used.


Fixed Value: searchset
Definition:
Indicates the purpose of this bundle- how it was intended to be used.


Comments:
Fixed value: searchset

..  total 0..1unsignedIntDefinition:
If a set of search matches, this is the total number of matches for the search (as opposed to the number of results in this bundle).


Comments:
Only used if the bundle is a search result set.

..  link 1..*BackboneElementSlice: Unordered, Open by value:relation
Definition:
A series of links that provide context to this bundle.

..  link
     (self)
1..1BackboneElementDefinition:
A series of links that provide context to this bundle.


Comments:
Echoes the submitted query, including only those parameters which were processed by the server. This allows for the possibility that the server might not support all of the parameters submitted by the client.

...  relation 1..1stringFixed Value: self
Definition:
A name which details the functional use for this link - see [[http://www.iana.org/assignments/link-relations/link-relations.xhtml]].


Comments:
Fixed value: self

...  url 1..1uriDefinition:
The reference details for the link.

..  link
     (next)
0..1BackboneElementDefinition:
A series of links that provide context to this bundle.


Comments:
For Provider Registry Organization query, this element is not curently supported.

...  relation 1..1stringFixed Value: next
Definition:
A name which details the functional use for this link - see [[http://www.iana.org/assignments/link-relations/link-relations.xhtml]].


Comments:
Fixed value: next

...  url 1..1uriDefinition:
The reference details for the link.


Comments:
If present, indicates additional results are available and can be retrieved by performing a GET on this URL

..  entry 1..*BackboneElementbdl-5: must be a resource unless there's a request or response
bdl-6: The fullUrl element must be present when a resource is present, and not present otherwise
entryIsOrganization: Match entries must be Bundles declaring profile-organization-tpr
includeIsPractitioner: Include entries must be Bundles declaring profile-practitioner-tpr
outcomeIsOperationOutcome: Outcome entries must be OperationOutcomes
Definition:
An entry in a bundle resource - will either contain a resource, or information about a resource (transactions and history only).

...  fullUrl 1..1uriDefinition:
The Absolute URL for the resource. The fullUrl SHALL not disagree with the id in the resource. The fullUrl is a version independent reference to the resource. The fullUrl element SHALL have a value except that: * fullUrl can be empty on a POST (although it does not need to when specifying a temporary id for reference in the bundle) * Results from operations might involve resources that are not identified.


Comments:
fullUrl may not be unique in the context of a resource. Note that since FHIR resources do not need to be served through the FHIR API, the absolute URL may not end with the logical id of the resource (Resource.id), but if the fullUrl does look like a RESTful server URL (e.g. meets the regex, then it SHALL end with the Resource.id.

...  resource 1..1ResourceDefinition:
The Resources for the entry.

...  search 1..1BackboneElementDefinition:
Information about the search process that lead to the creation of this entry.

....  mode 1..1codeBinding: SearchEntryMode (required): Why an entry is in the result set - whether it's included as a match or because of an _include requirement.


Definition:
Why this entry is in the result set - whether it's included as a match or because of an _include requirement.


Comments:
There is only one mode. In some corner cases, a resource may be included because it is both a match and an include. In these circumstances, 'match' takes precedence.

This structure is derived from Shared Health Bundle - Query Response

Summary

Mandatory: 7 elements
Must-Support: 9 elements
Fixed Value: 2 elements

Slices

This structure defines the following Slices:

  • The element Bundle.meta.profile is sliced based on the value of value:value

Differential View

This structure is derived from Shared Health Bundle - Query Response

NameFlagsCard.TypeDescription & Constraintsdoco
.. Bundle S0..*Shared Health Bundle - Query ResponseContains a collection of resources
... meta S1..1MetaMetadata about the resource
.... lastUpdated S0..1instantWhen the resource version last changed
.... profile S1..*(Slice Definition)Profiles this resource claims to conform to
Slice: Unordered, Open by value:value
..... profile:profile S1..1uriProfiles this resource claims to conform to
Fixed Value: http://sharedhealth.exchange/fhir/StructureDefinition/interaction-bundle-query-organization
..... tag:version S1..1CodingTags applied to this resource
...... code S1..1codeSymbol in syntax defined by the system
Fixed Value: Shared5.0
... entry SI1..*BackboneElementEntry in the bundle - will have a resource, or information
entryIsOrganization: Match entries must be Bundles declaring profile-organization-tpr
includeIsPractitioner: Include entries must be Bundles declaring profile-practitioner-tpr
outcomeIsOperationOutcome: Outcome entries must be OperationOutcomes
.... search S1..1BackboneElementSearch related information
..... mode S1..1codematch | include | outcome - why this is in the result set

doco Documentation for this format

Snapshot View

NameFlagsCard.TypeDescription & Constraintsdoco
.. Bundle SΣI0..*Shared Health Bundle - Query ResponseContains a collection of resources
... id SΣ0..1idLogical id of this artifact
... meta SΣ1..1MetaMetadata about the resource
.... id 0..1idxml:id (or equivalent in JSON)
.... extension 0..*ExtensionAdditional Content defined by implementations
.... versionId Σ0..1idVersion specific identifier
.... lastUpdated SΣ0..1instantWhen the resource version last changed
.... profile SΣ1..*(Slice Definition)Profiles this resource claims to conform to
Slice: Unordered, Open by value:value
..... profile:profile SΣ1..1uriProfiles this resource claims to conform to

Fixed Value: http://sharedhealth.exchange/fhir/StructureDefinition/interaction-bundle-query-organization
.... security Σ0..*CodingSecurity Labels applied to this resource
Binding: All Security Labels (extensible): Security Labels from the Healthcare Privacy and Security Classification System.


.... tag SΣ1..*(Slice Definition)Tags applied to this resource
Slice: Unordered, Open by value:system
Binding: (unbound) (example): Codes that represent various types of tags, commonly workflow-related; e.g. "Needs review by Dr. Jones"


..... tag:version SΣ1..1CodingTags applied to this resource
Binding: SharedSpecificationVersion (20210501) (required)
...... id 0..1idxml:id (or equivalent in JSON)
...... extension 0..*ExtensionAdditional Content defined by implementations
...... system SΣ1..1uriIdentity of the terminology system
Fixed Value: https://fhir.infoway-inforoute.ca/CodeSystem/sharedspecificationversion
...... version Σ0..1stringVersion of the system - if relevant
...... code SΣ1..1codeSymbol in syntax defined by the system
Fixed Value: Shared5.0
...... display Σ0..1stringRepresentation defined by the system
...... userSelected Σ0..1booleanIf this coding was chosen directly by the user
... implicitRules ?!Σ0..1uriA set of rules under which this content was created
... language 0..1codeLanguage of the resource content
Binding: http://tools.ietf.org/html/bcp47 (required): A human language.


... type SΣ1..1codedocument | message | transaction | transaction-response | batch | batch-response | history | searchset | collection
Binding: BundleType (required): Indicates the purpose of a bundle - how it was intended to be used.


Fixed Value: searchset
... total SΣI0..1unsignedIntIf search, the total number of matches
... link SΣ1..*(Slice Definition)Links related to this Bundle
Slice: Unordered, Open by value:relation
.... link:All Slices Content/Rules for all slices
..... id 0..1idxml:id (or equivalent in JSON)
..... extension 0..*ExtensionAdditional Content defined by implementations
..... modifierExtension ?!Σ0..*ExtensionExtensions that cannot be ignored
..... relation Σ1..1stringhttp://www.iana.org/assignments/link-relations/link-relations.xhtml
..... url Σ1..1uriReference details for the link
.... link:self SΣ1..1BackboneElementLinks related to this Bundle
..... id 0..1idxml:id (or equivalent in JSON)
..... extension 0..*ExtensionAdditional Content defined by implementations
..... modifierExtension ?!Σ0..*ExtensionExtensions that cannot be ignored
..... relation SΣ1..1stringhttp://www.iana.org/assignments/link-relations/link-relations.xhtml
Fixed Value: self
..... url SΣ1..1uriReference details for the link
.... link:next SΣ0..1BackboneElementLinks related to this Bundle
..... id 0..1idxml:id (or equivalent in JSON)
..... extension 0..*ExtensionAdditional Content defined by implementations
..... modifierExtension ?!Σ0..*ExtensionExtensions that cannot be ignored
..... relation SΣ1..1stringhttp://www.iana.org/assignments/link-relations/link-relations.xhtml
Fixed Value: next
..... url SΣ1..1uriReference details for the link
... entry SΣI1..*BackboneElementEntry in the bundle - will have a resource, or information
entryIsOrganization: Match entries must be Bundles declaring profile-organization-tpr
includeIsPractitioner: Include entries must be Bundles declaring profile-practitioner-tpr
outcomeIsOperationOutcome: Outcome entries must be OperationOutcomes
.... id 0..1idxml:id (or equivalent in JSON)
.... extension 0..*ExtensionAdditional Content defined by implementations
.... modifierExtension ?!Σ0..*ExtensionExtensions that cannot be ignored
.... link 0..*See link (Bundle)Links related to this entry
.... fullUrl SΣ1..1uriAbsolute URL for resource (server address, or UUID/OID)
.... resource SΣ1..1ResourceA resource in the bundle
.... search SΣI1..1BackboneElementSearch related information
..... id 0..1idxml:id (or equivalent in JSON)
..... extension 0..*ExtensionAdditional Content defined by implementations
..... modifierExtension ?!Σ0..*ExtensionExtensions that cannot be ignored
..... mode SΣ1..1codematch | include | outcome - why this is in the result set
Binding: SearchEntryMode (required): Why an entry is in the result set - whether it's included as a match or because of an _include requirement.

..... score Σ0..1decimalSearch ranking (between 0 and 1)
... signature Σ0..1SignatureDigital Signature

doco Documentation for this format

 

Other representations of profile: Schematron

Terminology Bindings

Constraints

PathConformanceValueSet / Code
Bundle.meta.securityextensibleAll Security Labels
Bundle.meta.tagexample
Bundle.meta.tag:versionrequiredFixed Value: Shared5.0
Bundle.languagerequiredhttp://tools.ietf.org/html/bcp47
Bundle.typerequiredFixed Value: searchset
Bundle.entry.search.moderequiredSearchEntryMode
Bundle.entry.request.methodrequiredHTTPVerb
IdPathDetailsRequirements
bdl-2Bundleentry.search only when a search
: entry.search.empty() or (type = 'searchset')
bdl-1Bundletotal only when a search or history
: total.empty() or (type = 'searchset') or (type = 'history')
bdl-7BundleFullUrl must be unique in a bundle, or else entries with the same fullUrl must have different meta.versionId
: entry.where(fullUrl.exists()).select(fullUrl&resource.meta.versionId).isDistinct()
bdl-3Bundleentry.request only for some types of bundles
: entry.request.empty() or type = 'batch' or type = 'transaction' or type = 'history'
bdl-4Bundleentry.response only for some types of bundles
: entry.response.empty() or type = 'batch-response' or type = 'transaction-response'
bdl-5Bundle.entrymust be a resource unless there's a request or response
: resource.exists() or request.exists() or response.exists()
bdl-6Bundle.entryThe fullUrl element must be present when a resource is present, and not present otherwise
: fullUrl.empty() xor resource.exists()
entryIsOrganizationBundle.entryMatch entries must be Bundles declaring profile-organization-tpr
: search.mode='match' implies resource.meta.where(profile='http://sharedhealth.exchange/fhir/StructureDefinition/profile-organization-tpr').exists()
includeIsPractitionerBundle.entryInclude entries must be Bundles declaring profile-practitioner-tpr
: search.mode='include' implies resource.meta.where(profile='http://sharedhealth.exchange/fhir/StructureDefinition/profile-practitioner-tpr').exists()
outcomeIsOperationOutcomeBundle.entryOutcome entries must be OperationOutcomes
: search.mode='outcome' implies resource.is(OperationOutcome)
© 2017+ . Based on FHIR version (1.4.0-8139). IG generated on Fri, Feb 4, 2022 12:22-0500. | IG Change History