Universal API Implementation Guide
1.1.19 - ci-build

Universal API Implementation Guide - Local Development build (v1.1.19). See the Directory of published versions

Search Conventions

Required Searches

Genentech FHIR Server will return information in response to searches on the resources below:

Resource Parameters Example
CoverageEligibilityResponse SHOULD: status, outcome, request, patient GET [base]/CoverageEligibilityResponse?status=active

Coverage, Organization and Practitioner resources will be included as contained resources within CoverageEligibilityResponse. They will not be persisted in corresponding resource tables in FHIR Server.

If the requested resource is not supported then search-result will include OperationOutcome indicating that either specific Resource or Parameters are not supported.

Search conventions in the UAPI Query Message

The UAPI Query message requests specific information from Genentech FHIR Server. The desired information is specified as FHIR search statements which are sent as “query-string” parameters in the message. Genentech FHIR Server executes these searches for the Organization which is identified in MessageHeader by two attributes - the source.name and sender.identifier.value, which need to be concatenated to execute Organization search in Genentech FHIR Server. The results are returned for single Patient within above Organization, identified using “requester-patient” parameter in the message - the identifier used to execute Patient search in Genentech FHIR Server is passed in identifier.value field.

For example:

"resourceType" : "MessageHeader",
        "id" : "04ba6102-8344-4c3e-b96e-e9fc75a7840c",
        "eventCoding" : {
          "system" : "http://hl7.org/fhir/us/specialty-rx/CodeSystem/specialty-rx-event-type",
          "code" : "query"
        },
        "sender" : {
          "type" : "Organization",
          "identifier" : {
            "use" : "usual",
            "system" : "http://vendor.com/ab",
            "value" : "HOSP-12345",
            "assigner" : {
              "display" : "AB Vendor"
            }
          }
        },
        "source" : {
          "name" : "Vendor_AB",
          "endpoint" : "http://vendor.com/ab"
        },

The above MessageHeader identifies Organization for specific Vendor system - source.name = “Vendor_AB” with organization identifier - sender.identifier.value = “HOSP-12345”. This results in matching in Genentech FHIR server to Organization with “official” identifier = Vendor_AB_HOSP-12345.

"resourceType" : "Parameters",
        "id" : "61ebe359-bfdc-4613-8bf2-c5e300945f0b",
        "parameter" : [
          {
            "name" : "requester-patient",
            "valueReference" : {
              "type" : "Patient",
              "identifier" : {
                "use" : "official",
                "type" : {
                  "coding" : [
                    {
                      "system" : "http://terminology.hl7.org/CodeSystem/v2-0203",
                      "code" : "PI",
                      "display" : "Patient internal identifier"
                    }
                  ]
                },
                "system" : "http://vendor.com/ab",
                "value" : "6bcd8467-0473-4836-9128-2e7972f23177",
                "assigner" : {
                  "display" : "AB Vendor"
                }
              }
            }
          },

The above “requester-patient” parameter identifies Patient within Organization by “official” identifier - identifier.value = “6bcd8467-0473-4836-9128-2e7972f23177”

Searching for matching CoverageEligibilityResponse resources

GET all CoverageEligibilityResponse for Patient

The “query-string” parameters can request CoverageEligibilityResponse resources for given Patient within Organization.

Example:

"resourceType" : "Parameters",
        "id" : "61ebe359-bfdc-4613-8bf2-c5e300945f0b",
        "parameter" : [
          {
            "name" : "requester-patient",
            "valueReference" : {
              "type" : "Patient",
              "identifier" : {
                "use" : "official",
                "type" : {
                  "coding" : [
                    {
                      "system" : "http://terminology.hl7.org/CodeSystem/v2-0203",
                      "code" : "PI",
                      "display" : "Patient internal identifier"
                    }
                  ]
                },
                "system" : "http://vendor.com/ab",
                "value" : "6bcd8467-0473-4836-9128-2e7972f23177",
                "assigner" : {
                  "display" : "AB Vendor"
                }
              }
            }
          },
          {
            "name" : "query-string",
            "valueString" : "CoverageEligibilityResponse?status=active"
          }

This will result in internal query in FHIR server:

GET [base]/CoverageEligibilityResponse?status=active&patient=<internal fhirid>

The above will return ALL CoverageEligibilityResponse resources which were received for given Patient in the Organization.

If Patient was submitted in multiple enrollments then those results might need to be filtered out further.

GET CoverageEligibilityResponse for Patient where enrollment_transactionID = ‘ABC’

In order to narrow down search results to only specific enrollment transaction “requester-bundle-enrollment-id” parameter SHOULD be used.

Example:

"resourceType" : "Parameters",
        "id" : "61ebe359-bfdc-4613-8bf2-c5e300945f0b",
        "parameter" : [
          {
            "name" : "requester-patient",
            "valueReference" : {
              "type" : "Patient",
              "identifier" : {
                "use" : "official",
                "type" : {
                  "coding" : [
                    {
                      "system" : "http://terminology.hl7.org/CodeSystem/v2-0203",
                      "code" : "PI",
                      "display" : "Patient internal identifier"
                    }
                  ]
                },
                "system" : "http://vendor.com/ab",
                "value" : "6bcd8467-0473-4836-9128-2e7972f23177",
                "assigner" : {
                  "display" : "AB Vendor"
                }
              }
            }
          },
          {
            "name" : "requester-bundle-enrollment-id",
            "valueReference" : {
              "type" : "Bundle",
              "identifier" : {
                "type" : {
                  "coding" : [
                    {
                      "system" : "http://terminology.hl7.org/CodeSystem/v2-0203",
                      "code" : "RI",
                      "display" : "Resource identifier"
                    }
                  ]
                },
                "system" : "http://dev.gene.com/fhir/uapi/enrollment/transactionid",
                "value" : "b73f7586-0be9-4cdf-8c98-4fe120e09bb9"
              }
            }
          },
          {
            "name" : "query-string",
            "valueString" : "CoverageEligibilityResponse?status=active"
          }

This will result in series of internal queries in FHIR server:

  1. Find CoverageEligibilityRequest for given patient and identifier of transactionid combination
    GET [base]/CoverageEligibilityRequest?identifier=http://dev.gene.com/fhir/uapi/enrollment/transactionid|b73f7586-0be9-4cdf-8c98-4fe120e09bb9&patient=<internal fhirid>
    
  2. Find CoverageEligibilityResponse for CoverageEligibilityRequest from #1
    GET [base]/CoverageEligibilityResponse?status=active&patient=<internal fhirid>&request=<request id from #1>
    

    The above will return specific CoverageEligibilityResponse resources associated with enrollment transaction id which were requested for given Patient in the Organization.

GET CoverageEligibilityResponse for Patient where requested service = GPF

In order to narrow down search results to only specific service requests types “requester-servicerequest” parameter SHOULD be used.

Example:

"resourceType" : "Parameters",
        "id" : "61ebe359-bfdc-4613-8bf2-c5e300945f0b",
        "parameter" : [
          {
            "name" : "requester-patient",
            "valueReference" : {
              "type" : "Patient",
              "identifier" : {
                "use" : "official",
                "type" : {
                  "coding" : [
                    {
                      "system" : "http://terminology.hl7.org/CodeSystem/v2-0203",
                      "code" : "PI",
                      "display" : "Patient internal identifier"
                    }
                  ]
                },
                "system" : "http://vendor.com/ab",
                "value" : "6bcd8467-0473-4836-9128-2e7972f23177",
                "assigner" : {
                  "display" : "AB Vendor"
                }
              }
            }
          },
          {
            "name" : "requester-servicerequest",
            "valueReference" : {
              "reference" : "urn:uuid:aecbb129-9a73-4b59-9d66-ff5cdb3f3164"
            }
          },
          {
            "name" : "requester-servicerequest",
            "valueReference" : {
              "reference" : "urn:uuid:47aaa05f-33fe-4672-b0bf-0168bdd81630"
            }
          },
          {
            "name" : "query-string",
            "valueString" : "CoverageEligibilityResponse?status=active"
          }

The “requester-servicerequest” parametere is a reference to ServiceRequest resources which are included in the message query bundle. Currently only code.coding.code value is used for filtering.

Example:

{
      "fullUrl" : "urn:uuid:aecbb129-9a73-4b59-9d66-ff5cdb3f3164",
      "resource" : {
        "resourceType" : "ServiceRequest",
        "id" : "sr4gpf",
        "meta" : {
          "profile" : [
            "http://dev.gene.com/fhir/uapi/StructureDefinition/uapi-servicerequest"
          ]
        },
        "status" : "active",
        "intent" : "order",
        "code" : {
          "coding" : [
            {
              "system" : "http://terminology.gene.com/fhir/usix/uapi/CodeSystem/uapi-sr-type",
              "code" : "gpf"
            }
          ]
        },
        "subject" : {
          "reference" : "urn:uuid:fc2e5a72-c363-4616-ae00-4ad25cbcb45c",
          "type" : "Patient"
        }
      }
    }

In the above example code.coding.code = “gpf” is the value which will be used by FHIR Server to narrow down search results.

This will result in series of internal queries in FHIR server:

  1. Find CoverageEligibilityRequest for given patient and ServiceRequest combination - searching by extension uapi-sr-type http://dev.gene.com/fhir/uapi/StructureDefinition/SRType must be enabled on CoverageEligibilityRequest resource
    GET [base]/CoverageEligibilityRequest?patient=<internal fhirid>&uapi-sr-type=gpf
    
  2. Find CoverageEligibilityResponse for CoverageEligibilityRequest from #1
    GET [base]/CoverageEligibilityResponse?status=active&patient=<internal fhirid>&request=<request id from #1>
    

    The above will return specific CoverageEligibilityResponse resources associated with service request type(s) which were requested for given Patient in the Organization.