This site contains the documentation that is relevant to older WSO2 product versions and offerings.
For the latest WSO2 documentation, visit https://wso2.com/documentation/.

Working with Search for FHIR



Overview

The following operations allow you to work with search in FHIR. Click an operation name to see details on how to use it.

For a sample proxy service that illustrates how to work with search, see Sample configuration. 

OperationDescription
searchSearch from a specific Resource type.
searchPostSearch from a specific Resource type.

Operation details

This section provides further details on the operations related to search in FHIR.

FHIR solutions are built from a set of modular components called "Resources". These resources can easily be assembled into working systems that solve real world clinical and administrative problems at a fraction of the price of existing alternatives.

Search

To search from a particular resource supported by the system , use fhir.search and specify the following properties.

search
<fhir.search>
     <base>{$ctx:base}</base>
     <type>{$ctx:type}</type>
     <format>{$ctx:format}</format>
     <id>{$ctx:id}</id>
     <content>{$ctx:content}</content>
     <lastUpdated>{$ctx:lastUpdated}</lastUpdated>
     <profile>{$ctx:profile}</profile>
     <query>{$ctx:query}</query>
     <security>{$ctx:security}</security>
     <tag>{$ctx:tag}</tag>
     <text>{$ctx:text}</text>
     <filter>{$ctx:filter}</filter>
 </fhir.search>
Properties
  • base: The Service Root URL.
  • type: The name of a resource type (e.g. "Patient").
  • format: The Mime Type.
  • id, content, lastUpdated, profile, query, security, tag, text, filter: These are the optional parameters and are common search parameters for all resources
Sample request

Following is a sample REST request that can be handled by the search operation.

Sample Request for search operation
{
  "base": "https://open-api.fhir.me",
  "type": "Patient",
  "format": "json",
  "id":"%s(id)",
  "content":"%s(content)",
  "lastUpdated":"%s(lastUpdated)",
  "profile":"%s(profile)",
  "query":"%s(query)",
  "security":"%s(security)",
  "tag":"%s(tag)",
  "text":"%s(text)",
  "filter":"%s(filter)"
}
Related Salesforce REST Documentation

http://www.hl7.org/implement/standards/fhir/http.html#search

http://www.hl7.org/implement/standards/fhir/search.html#filter

SearchPost

To search from a particular resource supported by the system , use fhir.searchPost and specify the following properties.

searchPost
<fhir.historyAll>
     <base>{$ctx:base}</base>
     <format>{$ctx:format}</format>
     <id>{$ctx:id}</id>
     <content>{$ctx:content}</content>
     <lastUpdated>{$ctx:lastUpdated}</lastUpdated>
     <profile>{$ctx:profile}</profile>
     <query>{$ctx:query}</query>
     <security>{$ctx:security}</security>
     <tag>{$ctx:tag}</tag>
     <text>{$ctx:text}</text>
     <filter>{$ctx:filter}</filter>
 </fhir.historyAll>
Properties
  • base: The Service Root URL.
  • type: The name of a resource type (e.g. "Patient").
  • format: The Mime Type.
  • id, content, lastUpdated, profile, query, security, tag, text, filter: These are the optional parameters and are common search parameters for all resources
Sample request

Following is a sample REST request that can be handled by the searchPost operation.

Sample Request for searchPost operation
{
  "base": "https://open-api.fhir.me",
  "type": "Patient",
  "format": "json",
  "id":"%s(id)",
  "content":"%s(content)",
  "lastUpdated":"%s(lastUpdated)",
  "profile":"%s(profile)",
  "query":"%s(query)",
  "security":"%s(security)",
  "tag":"%s(tag)",
  "text":"%s(text)",
  "filter":"%s(filter)"
}
Related Salesforce REST Documentation

http://www.hl7.org/implement/standards/fhir/http.html#search

Sample configuration

Following is a sample proxy service that illustrates how to connect to fhir with init operation and use the search operation. The sample request for this proxy can be found in the create sample request.

Sample Proxy
<?xml version="1.0" encoding="UTF-8"?>
<proxy xmlns="http://ws.apache.org/ns/synapse" name="search"
       statistics="disable" trace="disable" transports="https http">
    <target>
        <inSequence>
            <property name="base" expression="json-eval($.base)"/>
            <property name="type" expression="json-eval($.type)"/>
            <property name="format" expression="json-eval($.format)"/>
            <property name="id" expression="json-eval($.id)"/>
            <property name="content" expression="json-eval($.content)"/>
            <property name="lastUpdated" expression="json-eval($.lastUpdated)"/>
            <property name="profile" expression="json-eval($.profile)"/>
            <property name="query" expression="json-eval($.query)"/>
            <property name="security" expression="json-eval($.security)"/>
            <property name="tag" expression="json-eval($.tag)"/>
            <property name="text" expression="json-eval($.text)"/>
            <property name="filter" expression="json-eval($.filter)"/>			
			<fhir.init>
				<base>{$ctx:base}</base>
			</fhir.init>
            <fhir.search>
                <type>{$ctx:type}</type>
                <format>{$ctx:format}</format>
                <id>{$ctx:id}</id>
                <content>{$ctx:content}</content>
                <lastUpdated>{$ctx:lastUpdated}</lastUpdated>
                <profile>{$ctx:profile}</profile>
                <que>{$ctx:query}</que>
                <security>{$ctx:security}</security>
                <tag>{$ctx:tag}</tag>
                <text>{$ctx:text}</text>
                <filter>{$ctx:filter}</filter>
            </fhir.search>
            <log category="INFO" level="full" separator=","/>
            <send/>
        </inSequence>
    </target>
    <description/>
</proxy>

 

Â