Payerbox Docs

Flat views on FHIR data

A ViewDefinition declares a flat table: which FHIRPath expressions become columns, which arrays unnest into rows, what where clause filters the input. Aidbox can run it on the fly or persist it as a Postgres relation.

The example below is the view Payerbox uses for prior-auth analytics: pdex_prior_authorization_item. The Aidbox UI has a ViewDefinition Builder for editing it visually:

ViewDefinition Builder showing pdex_prior_authorization_item with its WHERE clauses, columns, and a sample EOB instance side-by-side

The ViewDefinition

The view as JSON - fields a prior-auth analyst usually needs, flattened from ExplanationOfBenefit. Each row is one ExplanationOfBenefit.item; EOB-level fields repeat for every item row from the same EOB.

Show full ViewDefinition
{
  "resourceType": "ViewDefinition",
  "name": "pdex_prior_authorization_item",
  "title": "PDex Prior Authorization — items (flat)",
  "status": "active",
  "resource": "ExplanationOfBenefit",
  "where": [
    {"path": "meta.profile.where($this = 'http://hl7.org/fhir/us/davinci-pdex/StructureDefinition/pdex-priorauthorization').exists()"},
    {"path": "use = 'preauthorization'"}
  ],
  "select": [
    {
      "column": [
        {"path": "id",                                                                            "name": "eob_id",                      "type": "string"},
        {"path": "identifier.first().value",                                                      "name": "business_identifier",         "type": "string"},
        {"path": "identifier.first().system",                                                     "name": "business_identifier_system",  "type": "uri"},
        {"path": "status",                                                                        "name": "status",                      "type": "code"},
        {"path": "outcome",                                                                       "name": "outcome",                     "type": "code"},
        {"path": "disposition",                                                                   "name": "disposition",                 "type": "string"},
        {"path": "created",                                                                       "name": "created",                     "type": "dateTime"},
        {"path": "processNote.text",                                                              "name": "process_notes",               "type": "string", "collection": true},
        {"path": "diagnosis.where(sequence = 1).diagnosisCodeableConcept.coding.first().code",    "name": "primary_diagnosis_code",      "type": "code"},
        {"path": "diagnosis.where(sequence = 1).diagnosisCodeableConcept.coding.first().system",  "name": "primary_diagnosis_system",    "type": "uri"},
        {"path": "diagnosis.where(sequence = 1).diagnosisCodeableConcept.coding.first().display", "name": "primary_diagnosis_display",   "type": "string"},
        {"path": "diagnosis.diagnosisCodeableConcept.coding.code",                                "name": "diagnosis_codes",             "type": "code",   "collection": true},
        {"path": "diagnosis.diagnosisCodeableConcept.coding.display",                             "name": "diagnosis_displays",          "type": "string", "collection": true},
        {"path": "type.coding.first().code",                                                      "name": "type_code",                   "type": "code"},
        {"path": "subType.coding.first().code",                                                   "name": "subtype_code",                "type": "code"},
        {"path": "billablePeriod.start",                                                          "name": "billable_start",              "type": "dateTime"},
        {"path": "billablePeriod.end",                                                            "name": "billable_end",                "type": "dateTime"},
        {"path": "preAuthRefPeriod.start.first()",                                                "name": "preauth_start",               "type": "dateTime"},
        {"path": "preAuthRefPeriod.end.first()",                                                  "name": "preauth_end",                 "type": "dateTime"},
        {"path": "patient.reference",                                                             "name": "patient_ref",                 "type": "string"},
        {"path": "patient.identifier.value",                                                      "name": "patient_identifier",          "type": "string"},
        {"path": "patient.display",                                                               "name": "patient_display",             "type": "string"},
        {"path": "insurer.reference",                                                             "name": "insurer_ref",                 "type": "string"},
        {"path": "insurer.identifier.value",                                                      "name": "insurer_identifier",          "type": "string"},
        {"path": "insurer.display",                                                               "name": "insurer_display",             "type": "string"},
        {"path": "provider.identifier.value",                                                     "name": "provider",                    "type": "string"},
        {"path": "enterer.reference",                                                             "name": "enterer_ref",                 "type": "string"},
        {"path": "enterer.identifier.value",                                                      "name": "enterer_identifier",          "type": "string"},
        {"path": "facility.reference",                                                            "name": "facility_ref",                "type": "string"},
        {"path": "facility.identifier.value",                                                     "name": "facility_identifier",         "type": "string"},
        {"path": "insurance.where(focal=true).coverage.reference.first()",                        "name": "coverage_ref",                "type": "string"},
        {"path": "insurance.where(focal=true).coverage.identifier.value.first()",                 "name": "coverage_identifier",         "type": "string"},
        {"path": "extension('http://hl7.org/fhir/us/davinci-pdex/StructureDefinition/extension-levelOfServiceCode').valueCodeableConcept.coding.first().code", "name": "level_of_service_code", "type": "code"},
        {"path": "careTeam.first().provider.reference",                                           "name": "care_team_provider_ref",        "type": "string"},
        {"path": "careTeam.first().provider.identifier.value",                                    "name": "care_team_provider_identifier", "type": "string"},
        {"path": "careTeam.first().role.coding.first().code",                                     "name": "care_team_role_code",           "type": "code"},
        {"path": "total.first().category.coding.first().code",                                    "name": "total_category_code",           "type": "code"},
        {"path": "total.first().amount.value",                                                    "name": "total_amount_value",            "type": "decimal"},
        {"path": "total.first().amount.currency",                                                 "name": "total_amount_currency",         "type": "code"},
        {"path": "total.first().extension('http://hl7.org/fhir/us/davinci-pdex/StructureDefinition/PriorAuthorizationUtilization').valueQuantity.value", "name": "priorauth_utilization_value", "type": "decimal"},
        {"path": "total.first().extension('http://hl7.org/fhir/us/davinci-pdex/StructureDefinition/PriorAuthorizationUtilization').valueQuantity.unit",  "name": "priorauth_utilization_unit",  "type": "string"}
      ]
    },
    {
      "forEachOrNull": "item",
      "column": [
        {"path": "sequence",                                                                                                                        "name": "item_sequence",                "type": "integer"},
        {"path": "category.coding.first().code",                                                                                                    "name": "item_category_code",           "type": "code"},
        {"path": "productOrService.coding.first().code",                                                                                            "name": "item_product_or_service_code", "type": "code"},
        {"path": "servicedDate",                                                                                                                    "name": "item_serviced_date",           "type": "date"},
        {"path": "servicedPeriod.start",                                                                                                            "name": "item_serviced_start",          "type": "dateTime"},
        {"path": "servicedPeriod.end",                                                                                                              "name": "item_serviced_end",            "type": "dateTime"},
        {"path": "quantity.value",                                                                                                                  "name": "item_quantity",                "type": "decimal"},
        {"path": "quantity.unit",                                                                                                                   "name": "item_quantity_unit",           "type": "string"},
        {"path": "extension('http://hl7.org/fhir/us/davinci-pdex/StructureDefinition/extension-itemPreAuthIssueDate').valueDate",                   "name": "item_preauth_issue_date",      "type": "date"},
        {"path": "extension('http://hl7.org/fhir/us/davinci-pdex/StructureDefinition/extension-itemPreAuthPeriod').valuePeriod.start",              "name": "item_preauth_period_start",    "type": "dateTime"},
        {"path": "extension('http://hl7.org/fhir/us/davinci-pdex/StructureDefinition/extension-itemPreAuthPeriod').valuePeriod.end",                "name": "item_preauth_period_end",      "type": "dateTime"},
        {"path": "extension('http://hl7.org/fhir/us/davinci-pdex/StructureDefinition/extension-authorizationNumber').valueString",                  "name": "item_previous_auth_number",    "type": "string"},
        {"path": "extension('http://hl7.org/fhir/us/davinci-pdex/StructureDefinition/extension-itemTraceNumber').valueIdentifier.value",            "name": "item_trace_numbers",           "type": "string", "collection": true},
        {"path": "extension('http://hl7.org/fhir/us/davinci-pdex/StructureDefinition/extension-administrationReferenceNumber').valueString",        "name": "item_admin_ref_number",        "type": "string"},
        {"path": "extension('http://hl7.org/fhir/us/davinci-pdex/StructureDefinition/extension-itemAuthorizedProvider').valueReference.reference",  "name": "item_authorized_provider_refs","type": "string", "collection": true},
        {"path": "adjudication.extension('http://hl7.org/fhir/us/davinci-pdex/StructureDefinition/extension-reviewAction').extension('http://hl7.org/fhir/us/davinci-pdex/StructureDefinition/extension-reviewActionCode').valueCodeableConcept.coding.first().code",      "name": "item_review_action_code",    "type": "code"},
        {"path": "adjudication.extension('http://hl7.org/fhir/us/davinci-pdex/StructureDefinition/extension-reviewAction').extension('http://hl7.org/fhir/us/davinci-pdex/StructureDefinition/extension-reviewActionCode').valueCodeableConcept.coding.first().display",   "name": "item_review_action_display", "type": "string"},
        {"path": "adjudication.extension('http://hl7.org/fhir/us/davinci-pdex/StructureDefinition/extension-reviewAction').extension('http://hl7.org/fhir/us/davinci-pdex/StructureDefinition/extension-reviewReasonCode').valueCodeableConcept.coding.first().code",      "name": "item_review_reason_code",    "type": "code"},
        {"path": "adjudication.extension('http://hl7.org/fhir/us/davinci-pdex/StructureDefinition/extension-reviewAction').extension('http://hl7.org/fhir/us/davinci-pdex/StructureDefinition/extension-reviewNumber').valueString.first()",                               "name": "item_review_number",         "type": "string"},
        {"path": "adjudication.where(category.coding.where(code='allowedunits').exists()).value.first()",                                                                                                                "name": "item_allowed_units",            "type": "decimal"},
        {"path": "adjudication.where(category.coding.where(code='allowedunits').exists()).extension('http://hl7.org/fhir/us/davinci-pdex/StructureDefinition/base-ext-when-adjudicated').valueDateTime.first()",          "name": "item_allowed_units_action_date","type": "dateTime"},
        {"path": "adjudication.where(category.coding.where(code='consumedunits').exists()).value.first()",                                                                                                               "name": "item_consumed_units",           "type": "decimal"},
        {"path": "adjudication.where(category.coding.where(code='denialreason').exists()).reason.coding.code",                                                                                                           "name": "item_denial_reason_codes",      "type": "code",     "collection": true},
        {"path": "adjudication.where(category.coding.where(code='denialreason').exists()).reason.coding.display",                                                                                                        "name": "item_denial_reason_displays",   "type": "string",   "collection": true},
        {"path": "adjudication.where(category.coding.where(code='denialreason').exists()).extension('http://hl7.org/fhir/us/davinci-pdex/StructureDefinition/base-ext-when-adjudicated').valueDateTime.first()",         "name": "item_denial_action_date",       "type": "dateTime"},
        {"path": "adjudication.where(category.coding.where(code='submitted').exists()).amount.value.first()",                                                                                                            "name": "item_submitted_amount",         "type": "decimal"},
        {"path": "adjudication.where(category.coding.where(code='eligible').exists()).amount.value.first()",                                                                                                             "name": "item_eligible_amount",          "type": "decimal"},
        {"path": "adjudication.where(category.coding.where(code='benefit').exists()).amount.value.first()",                                                                                                              "name": "item_benefit_amount",           "type": "decimal"}
      ]
    }
  ]
}

ViewDefinition is a regular FHIR resource - the Builder is just one UI on top of it, and its Edit tab exposes the raw JSON for in-place editing. The same view can also be authored, versioned, and patched via POST /fhir/ViewDefinition or PUT /fhir/ViewDefinition/<id>. Every column, where clause, or forEach change is a normal FHIR write.

The where clause restricts to EOBs tagged with the PDex Prior Authorization profile and with use = 'preauthorization'.

forEachOrNull: "item" unnests the item array into one row per item, keeping EOBs that have no items (they produce a single row with NULL item fields). collection: true makes a column a Postgres array - used here for the multi-valued fields like item_denial_reason_codes, diagnosis_codes, process_notes. See query 7 in Common queries for the typical LATERAL unnest pattern.

The PDex extensions (reviewAction, itemPreAuthPeriod, PriorAuthorizationUtilization, etc.) are pulled out as their own columns so analysts don't have to navigate FHIR extensions in SQL.

Materialize it

$materialize turns the ViewDefinition into a Postgres relation.

POST /fhir/ViewDefinition/pdex_prior_authorization_item/$materialize
Content-Type: application/json

{
  "resourceType": "Parameters",
  "parameter": [
    {"name": "type", "valueCode": "materialized-view"}
  ]
}
HTTP/1.1 200 OK

{
  "resourceType": "Parameters",
  "parameter": [
    {"name": "schema",   "valueString": "sof"},
    {"name": "relation", "valueString": "pdex_prior_authorization_item"},
    {"name": "type",     "valueCode":   "materialized-view"}
  ]
}

The result is sof.pdex_prior_authorization_item - a regular Postgres relation any client can SELECT from. type accepts view, materialized-view, or table; full parameter list in $materialize operation in the Aidbox docs.

Run it ad-hoc - no materialization

$run returns rows without persisting anything:

POST /fhir/ViewDefinition/pdex_prior_authorization_item/$run
Content-Type: application/json

{
  "resourceType": "Parameters",
  "parameter": [
    {"name": "_format", "valueCode": "csv"}
  ]
}

Output formats (csv, json, ndjson, fhir) and the rest of the parameters live in $run operation in the Aidbox docs.

De-identifying columns

Any column can carry a de-identification extension that transforms its value at SQL generation time - useful for BI dashboards exposed to vendors, HIPAA Safe Harbor reporting, or analytics roles that shouldn't see raw identifiers.

{
  "name": "business_identifier",
  "path": "identifier.first().value",
  "type": "string",
  "extension": [{
    "url": "http://health-samurai.io/fhir/core/StructureDefinition/de-identification",
    "extension": [
      {"url": "method", "valueCode": "cryptoHash"},
      {"url": "cryptoHashKey", "valueString": "..."}
    ]
  }]
}

Full method list and parameters in De-identification in the Aidbox docs.

Last updated: