search

package
v0.0.0-...-83cc17e Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jan 31, 2024 License: Apache-2.0 Imports: 12 Imported by: 0

Documentation

Index

Constants

View Source
const (
	IDParam            = "_id"
	LastUpdatedParam   = "_lastUpdated"
	TagParam           = "_tag"
	ProfileParam       = "_profile"
	SecurityParam      = "_security"
	TextParam          = "_text"
	ContentParam       = "_content"
	ListParam          = "_list"
	QueryParam         = "_query"
	SortParam          = "_sort"
	CountParam         = "_count"
	IncludeParam       = "_include"
	RevIncludeParam    = "_revinclude"
	SummaryParam       = "_summary"
	ElementsParam      = "_elements"
	ContainedParam     = "_contained"
	ContainedTypeParam = "_containedType"
	OffsetParam        = "_offset" // Custom param, not in FHIR spec
	FormatParam        = "_format"
)

Constant values for search paramaters and search result parameters

Variables

View Source
var SearchParameterDictionary = map[string]map[string]SearchParamInfo{
	"Account": map[string]SearchParamInfo{
		"_id": SearchParamInfo{
			Resource: "Account",
			Name:     "_id",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "_id", Type: "id"},
			},
		},
		"_lastUpdated": SearchParamInfo{
			Resource: "Account",
			Name:     "_lastUpdated",
			Type:     "date",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.lastUpdated", Type: "instant"},
			},
		},
		"_profile": SearchParamInfo{
			Resource: "Account",
			Name:     "_profile",
			Type:     "uri",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]profile", Type: "uri"},
			},
		},
		"_security": SearchParamInfo{
			Resource: "Account",
			Name:     "_security",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]security", Type: "Coding"},
			},
		},
		"_tag": SearchParamInfo{
			Resource: "Account",
			Name:     "_tag",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]tag", Type: "Coding"},
			},
		},
		"balance": SearchParamInfo{
			Resource: "Account",
			Name:     "balance",
			Type:     "quantity",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "balance", Type: "Money"},
			},
		},
		"identifier": SearchParamInfo{
			Resource: "Account",
			Name:     "identifier",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]identifier", Type: "Identifier"},
			},
		},
		"name": SearchParamInfo{
			Resource: "Account",
			Name:     "name",
			Type:     "string",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "name", Type: "string"},
			},
		},
		"owner": SearchParamInfo{
			Resource: "Account",
			Name:     "owner",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "owner", Type: "Reference"},
			},
			Targets: []string{
				"Organization",
			},
		},
		"patient": SearchParamInfo{
			Resource: "Account",
			Name:     "patient",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "subject", Type: "Reference"},
			},
			Targets: []string{
				"Patient",
			},
		},
		"period": SearchParamInfo{
			Resource: "Account",
			Name:     "period",
			Type:     "date",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "coveragePeriod", Type: "Period"},
			},
		},
		"status": SearchParamInfo{
			Resource: "Account",
			Name:     "status",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "status", Type: "code"},
			},
		},
		"subject": SearchParamInfo{
			Resource: "Account",
			Name:     "subject",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "subject", Type: "Reference"},
			},
			Targets: []string{
				"Device",
				"HealthcareService",
				"Location",
				"Organization",
				"Patient",
				"Practitioner",
			},
		},
		"type": SearchParamInfo{
			Resource: "Account",
			Name:     "type",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "type", Type: "CodeableConcept"},
			},
		},
	},
	"AllergyIntolerance": map[string]SearchParamInfo{
		"_id": SearchParamInfo{
			Resource: "AllergyIntolerance",
			Name:     "_id",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "_id", Type: "id"},
			},
		},
		"_lastUpdated": SearchParamInfo{
			Resource: "AllergyIntolerance",
			Name:     "_lastUpdated",
			Type:     "date",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.lastUpdated", Type: "instant"},
			},
		},
		"_profile": SearchParamInfo{
			Resource: "AllergyIntolerance",
			Name:     "_profile",
			Type:     "uri",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]profile", Type: "uri"},
			},
		},
		"_security": SearchParamInfo{
			Resource: "AllergyIntolerance",
			Name:     "_security",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]security", Type: "Coding"},
			},
		},
		"_tag": SearchParamInfo{
			Resource: "AllergyIntolerance",
			Name:     "_tag",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]tag", Type: "Coding"},
			},
		},
		"category": SearchParamInfo{
			Resource: "AllergyIntolerance",
			Name:     "category",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "category", Type: "code"},
			},
		},
		"criticality": SearchParamInfo{
			Resource: "AllergyIntolerance",
			Name:     "criticality",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "criticality", Type: "code"},
			},
		},
		"date": SearchParamInfo{
			Resource: "AllergyIntolerance",
			Name:     "date",
			Type:     "date",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "recordedDate", Type: "dateTime"},
			},
		},
		"identifier": SearchParamInfo{
			Resource: "AllergyIntolerance",
			Name:     "identifier",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]identifier", Type: "Identifier"},
			},
		},
		"last-date": SearchParamInfo{
			Resource: "AllergyIntolerance",
			Name:     "last-date",
			Type:     "date",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "lastOccurence", Type: "dateTime"},
			},
		},
		"manifestation": SearchParamInfo{
			Resource: "AllergyIntolerance",
			Name:     "manifestation",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]reaction.[]manifestation", Type: "CodeableConcept"},
			},
		},
		"onset": SearchParamInfo{
			Resource: "AllergyIntolerance",
			Name:     "onset",
			Type:     "date",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]reaction.onset", Type: "dateTime"},
			},
		},
		"patient": SearchParamInfo{
			Resource: "AllergyIntolerance",
			Name:     "patient",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "patient", Type: "Reference"},
			},
			Targets: []string{
				"Patient",
			},
		},
		"recorder": SearchParamInfo{
			Resource: "AllergyIntolerance",
			Name:     "recorder",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "recorder", Type: "Reference"},
			},
			Targets: []string{
				"Patient",
				"Practitioner",
			},
		},
		"reporter": SearchParamInfo{
			Resource: "AllergyIntolerance",
			Name:     "reporter",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "reporter", Type: "Reference"},
			},
			Targets: []string{
				"Patient",
				"Practitioner",
				"RelatedPerson",
			},
		},
		"route": SearchParamInfo{
			Resource: "AllergyIntolerance",
			Name:     "route",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]reaction.exposureRoute", Type: "CodeableConcept"},
			},
		},
		"severity": SearchParamInfo{
			Resource: "AllergyIntolerance",
			Name:     "severity",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]reaction.severity", Type: "code"},
			},
		},
		"status": SearchParamInfo{
			Resource: "AllergyIntolerance",
			Name:     "status",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "status", Type: "code"},
			},
		},
		"substance": SearchParamInfo{
			Resource: "AllergyIntolerance",
			Name:     "substance",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]reaction.substance", Type: "CodeableConcept"},
				SearchParamPath{Path: "substance", Type: "CodeableConcept"},
			},
		},
		"type": SearchParamInfo{
			Resource: "AllergyIntolerance",
			Name:     "type",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "type", Type: "code"},
			},
		},
	},
	"Appointment": map[string]SearchParamInfo{
		"_id": SearchParamInfo{
			Resource: "Appointment",
			Name:     "_id",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "_id", Type: "id"},
			},
		},
		"_lastUpdated": SearchParamInfo{
			Resource: "Appointment",
			Name:     "_lastUpdated",
			Type:     "date",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.lastUpdated", Type: "instant"},
			},
		},
		"_profile": SearchParamInfo{
			Resource: "Appointment",
			Name:     "_profile",
			Type:     "uri",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]profile", Type: "uri"},
			},
		},
		"_security": SearchParamInfo{
			Resource: "Appointment",
			Name:     "_security",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]security", Type: "Coding"},
			},
		},
		"_tag": SearchParamInfo{
			Resource: "Appointment",
			Name:     "_tag",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]tag", Type: "Coding"},
			},
		},
		"actor": SearchParamInfo{
			Resource: "Appointment",
			Name:     "actor",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]participant.actor", Type: "Reference"},
			},
			Targets: []string{
				"Device",
				"HealthcareService",
				"Location",
				"Patient",
				"Practitioner",
				"RelatedPerson",
			},
		},
		"date": SearchParamInfo{
			Resource: "Appointment",
			Name:     "date",
			Type:     "date",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "start", Type: "instant"},
			},
		},
		"identifier": SearchParamInfo{
			Resource: "Appointment",
			Name:     "identifier",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]identifier", Type: "Identifier"},
			},
		},
		"location": SearchParamInfo{
			Resource: "Appointment",
			Name:     "location",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]participant.actor", Type: "Reference"},
			},
			Targets: []string{
				"Location",
			},
		},
		"part-status": SearchParamInfo{
			Resource: "Appointment",
			Name:     "part-status",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]participant.status", Type: "code"},
			},
		},
		"patient": SearchParamInfo{
			Resource: "Appointment",
			Name:     "patient",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]participant.actor", Type: "Reference"},
			},
			Targets: []string{
				"Patient",
			},
		},
		"practitioner": SearchParamInfo{
			Resource: "Appointment",
			Name:     "practitioner",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]participant.actor", Type: "Reference"},
			},
			Targets: []string{
				"Practitioner",
			},
		},
		"status": SearchParamInfo{
			Resource: "Appointment",
			Name:     "status",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "status", Type: "code"},
			},
		},
	},
	"AppointmentResponse": map[string]SearchParamInfo{
		"_id": SearchParamInfo{
			Resource: "AppointmentResponse",
			Name:     "_id",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "_id", Type: "id"},
			},
		},
		"_lastUpdated": SearchParamInfo{
			Resource: "AppointmentResponse",
			Name:     "_lastUpdated",
			Type:     "date",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.lastUpdated", Type: "instant"},
			},
		},
		"_profile": SearchParamInfo{
			Resource: "AppointmentResponse",
			Name:     "_profile",
			Type:     "uri",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]profile", Type: "uri"},
			},
		},
		"_security": SearchParamInfo{
			Resource: "AppointmentResponse",
			Name:     "_security",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]security", Type: "Coding"},
			},
		},
		"_tag": SearchParamInfo{
			Resource: "AppointmentResponse",
			Name:     "_tag",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]tag", Type: "Coding"},
			},
		},
		"actor": SearchParamInfo{
			Resource: "AppointmentResponse",
			Name:     "actor",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "actor", Type: "Reference"},
			},
			Targets: []string{
				"Device",
				"HealthcareService",
				"Location",
				"Patient",
				"Practitioner",
				"RelatedPerson",
			},
		},
		"appointment": SearchParamInfo{
			Resource: "AppointmentResponse",
			Name:     "appointment",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "appointment", Type: "Reference"},
			},
			Targets: []string{
				"Appointment",
			},
		},
		"identifier": SearchParamInfo{
			Resource: "AppointmentResponse",
			Name:     "identifier",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]identifier", Type: "Identifier"},
			},
		},
		"location": SearchParamInfo{
			Resource: "AppointmentResponse",
			Name:     "location",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "actor", Type: "Reference"},
			},
			Targets: []string{
				"Location",
			},
		},
		"part-status": SearchParamInfo{
			Resource: "AppointmentResponse",
			Name:     "part-status",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "participantStatus", Type: "code"},
			},
		},
		"patient": SearchParamInfo{
			Resource: "AppointmentResponse",
			Name:     "patient",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "actor", Type: "Reference"},
			},
			Targets: []string{
				"Patient",
			},
		},
		"practitioner": SearchParamInfo{
			Resource: "AppointmentResponse",
			Name:     "practitioner",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "actor", Type: "Reference"},
			},
			Targets: []string{
				"Practitioner",
			},
		},
	},
	"AuditEvent": map[string]SearchParamInfo{
		"_id": SearchParamInfo{
			Resource: "AuditEvent",
			Name:     "_id",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "_id", Type: "id"},
			},
		},
		"_lastUpdated": SearchParamInfo{
			Resource: "AuditEvent",
			Name:     "_lastUpdated",
			Type:     "date",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.lastUpdated", Type: "instant"},
			},
		},
		"_profile": SearchParamInfo{
			Resource: "AuditEvent",
			Name:     "_profile",
			Type:     "uri",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]profile", Type: "uri"},
			},
		},
		"_security": SearchParamInfo{
			Resource: "AuditEvent",
			Name:     "_security",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]security", Type: "Coding"},
			},
		},
		"_tag": SearchParamInfo{
			Resource: "AuditEvent",
			Name:     "_tag",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]tag", Type: "Coding"},
			},
		},
		"action": SearchParamInfo{
			Resource: "AuditEvent",
			Name:     "action",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "event.action", Type: "code"},
			},
		},
		"address": SearchParamInfo{
			Resource: "AuditEvent",
			Name:     "address",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]participant.network.address", Type: "string"},
			},
		},
		"altid": SearchParamInfo{
			Resource: "AuditEvent",
			Name:     "altid",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]participant.altId", Type: "string"},
			},
		},
		"date": SearchParamInfo{
			Resource: "AuditEvent",
			Name:     "date",
			Type:     "date",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "event.dateTime", Type: "instant"},
			},
		},
		"desc": SearchParamInfo{
			Resource: "AuditEvent",
			Name:     "desc",
			Type:     "string",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]object.name", Type: "string"},
			},
		},
		"identity": SearchParamInfo{
			Resource: "AuditEvent",
			Name:     "identity",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]object.identifier", Type: "Identifier"},
			},
		},
		"name": SearchParamInfo{
			Resource: "AuditEvent",
			Name:     "name",
			Type:     "string",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]participant.name", Type: "string"},
			},
		},
		"object-type": SearchParamInfo{
			Resource: "AuditEvent",
			Name:     "object-type",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]object.type", Type: "Coding"},
			},
		},
		"participant": SearchParamInfo{
			Resource: "AuditEvent",
			Name:     "participant",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]participant.reference", Type: "Reference"},
			},
			Targets: []string{
				"Device",
				"Organization",
				"Patient",
				"Practitioner",
				"RelatedPerson",
			},
		},
		"patient": SearchParamInfo{
			Resource: "AuditEvent",
			Name:     "patient",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]object.reference", Type: "Reference"},
				SearchParamPath{Path: "[]participant.reference", Type: "Reference"},
			},
			Targets: []string{
				"Patient",
			},
		},
		"policy": SearchParamInfo{
			Resource: "AuditEvent",
			Name:     "policy",
			Type:     "uri",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]participant.[]policy", Type: "uri"},
			},
		},
		"reference": SearchParamInfo{
			Resource: "AuditEvent",
			Name:     "reference",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]object.reference", Type: "Reference"},
			},
			Targets: []string{
				"Any",
			},
		},
		"site": SearchParamInfo{
			Resource: "AuditEvent",
			Name:     "site",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "source.site", Type: "string"},
			},
		},
		"source": SearchParamInfo{
			Resource: "AuditEvent",
			Name:     "source",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "source.identifier", Type: "Identifier"},
			},
		},
		"subtype": SearchParamInfo{
			Resource: "AuditEvent",
			Name:     "subtype",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "event.[]subtype", Type: "Coding"},
			},
		},
		"type": SearchParamInfo{
			Resource: "AuditEvent",
			Name:     "type",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "event.type", Type: "Coding"},
			},
		},
		"user": SearchParamInfo{
			Resource: "AuditEvent",
			Name:     "user",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]participant.userId", Type: "Identifier"},
			},
		},
	},
	"Basic": map[string]SearchParamInfo{
		"_id": SearchParamInfo{
			Resource: "Basic",
			Name:     "_id",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "_id", Type: "id"},
			},
		},
		"_lastUpdated": SearchParamInfo{
			Resource: "Basic",
			Name:     "_lastUpdated",
			Type:     "date",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.lastUpdated", Type: "instant"},
			},
		},
		"_profile": SearchParamInfo{
			Resource: "Basic",
			Name:     "_profile",
			Type:     "uri",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]profile", Type: "uri"},
			},
		},
		"_security": SearchParamInfo{
			Resource: "Basic",
			Name:     "_security",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]security", Type: "Coding"},
			},
		},
		"_tag": SearchParamInfo{
			Resource: "Basic",
			Name:     "_tag",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]tag", Type: "Coding"},
			},
		},
		"author": SearchParamInfo{
			Resource: "Basic",
			Name:     "author",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "author", Type: "Reference"},
			},
			Targets: []string{
				"Patient",
				"Practitioner",
				"RelatedPerson",
			},
		},
		"code": SearchParamInfo{
			Resource: "Basic",
			Name:     "code",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "code", Type: "CodeableConcept"},
			},
		},
		"created": SearchParamInfo{
			Resource: "Basic",
			Name:     "created",
			Type:     "date",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "created", Type: "date"},
			},
		},
		"identifier": SearchParamInfo{
			Resource: "Basic",
			Name:     "identifier",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]identifier", Type: "Identifier"},
			},
		},
		"patient": SearchParamInfo{
			Resource: "Basic",
			Name:     "patient",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "subject", Type: "Reference"},
			},
			Targets: []string{
				"Patient",
			},
		},
		"subject": SearchParamInfo{
			Resource: "Basic",
			Name:     "subject",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "subject", Type: "Reference"},
			},
			Targets: []string{
				"Any",
			},
		},
	},
	"Binary": map[string]SearchParamInfo{
		"_id": SearchParamInfo{
			Resource: "Binary",
			Name:     "_id",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "_id", Type: "id"},
			},
		},
		"_lastUpdated": SearchParamInfo{
			Resource: "Binary",
			Name:     "_lastUpdated",
			Type:     "date",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.lastUpdated", Type: "instant"},
			},
		},
		"_profile": SearchParamInfo{
			Resource: "Binary",
			Name:     "_profile",
			Type:     "uri",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]profile", Type: "uri"},
			},
		},
		"_security": SearchParamInfo{
			Resource: "Binary",
			Name:     "_security",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]security", Type: "Coding"},
			},
		},
		"_tag": SearchParamInfo{
			Resource: "Binary",
			Name:     "_tag",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]tag", Type: "Coding"},
			},
		},
		"contenttype": SearchParamInfo{
			Resource: "Binary",
			Name:     "contenttype",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "contentType", Type: "code"},
			},
		},
	},
	"BodySite": map[string]SearchParamInfo{
		"_id": SearchParamInfo{
			Resource: "BodySite",
			Name:     "_id",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "_id", Type: "id"},
			},
		},
		"_lastUpdated": SearchParamInfo{
			Resource: "BodySite",
			Name:     "_lastUpdated",
			Type:     "date",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.lastUpdated", Type: "instant"},
			},
		},
		"_profile": SearchParamInfo{
			Resource: "BodySite",
			Name:     "_profile",
			Type:     "uri",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]profile", Type: "uri"},
			},
		},
		"_security": SearchParamInfo{
			Resource: "BodySite",
			Name:     "_security",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]security", Type: "Coding"},
			},
		},
		"_tag": SearchParamInfo{
			Resource: "BodySite",
			Name:     "_tag",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]tag", Type: "Coding"},
			},
		},
		"code": SearchParamInfo{
			Resource: "BodySite",
			Name:     "code",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "code", Type: "CodeableConcept"},
			},
		},
		"identifier": SearchParamInfo{
			Resource: "BodySite",
			Name:     "identifier",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]identifier", Type: "Identifier"},
			},
		},
		"patient": SearchParamInfo{
			Resource: "BodySite",
			Name:     "patient",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "patient", Type: "Reference"},
			},
			Targets: []string{
				"Patient",
			},
		},
	},
	"Bundle": map[string]SearchParamInfo{
		"_id": SearchParamInfo{
			Resource: "Bundle",
			Name:     "_id",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "_id", Type: "id"},
			},
		},
		"_lastUpdated": SearchParamInfo{
			Resource: "Bundle",
			Name:     "_lastUpdated",
			Type:     "date",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.lastUpdated", Type: "instant"},
			},
		},
		"_profile": SearchParamInfo{
			Resource: "Bundle",
			Name:     "_profile",
			Type:     "uri",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]profile", Type: "uri"},
			},
		},
		"_security": SearchParamInfo{
			Resource: "Bundle",
			Name:     "_security",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]security", Type: "Coding"},
			},
		},
		"_tag": SearchParamInfo{
			Resource: "Bundle",
			Name:     "_tag",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]tag", Type: "Coding"},
			},
		},
		"composition": SearchParamInfo{
			Resource: "Bundle",
			Name:     "composition",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[0]entry.resource", Type: "Resource"},
			},
			Targets: []string{
				"Composition",
			},
		},
		"message": SearchParamInfo{
			Resource: "Bundle",
			Name:     "message",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[0]entry.resource", Type: "Resource"},
			},
			Targets: []string{
				"MessageHeader",
			},
		},
		"type": SearchParamInfo{
			Resource: "Bundle",
			Name:     "type",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "type", Type: "code"},
			},
		},
	},
	"CarePlan": map[string]SearchParamInfo{
		"_id": SearchParamInfo{
			Resource: "CarePlan",
			Name:     "_id",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "_id", Type: "id"},
			},
		},
		"_lastUpdated": SearchParamInfo{
			Resource: "CarePlan",
			Name:     "_lastUpdated",
			Type:     "date",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.lastUpdated", Type: "instant"},
			},
		},
		"_profile": SearchParamInfo{
			Resource: "CarePlan",
			Name:     "_profile",
			Type:     "uri",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]profile", Type: "uri"},
			},
		},
		"_security": SearchParamInfo{
			Resource: "CarePlan",
			Name:     "_security",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]security", Type: "Coding"},
			},
		},
		"_tag": SearchParamInfo{
			Resource: "CarePlan",
			Name:     "_tag",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]tag", Type: "Coding"},
			},
		},
		"activitycode": SearchParamInfo{
			Resource: "CarePlan",
			Name:     "activitycode",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]activity.detail.code", Type: "CodeableConcept"},
			},
		},
		"activitydate": SearchParamInfo{
			Resource: "CarePlan",
			Name:     "activitydate",
			Type:     "date",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]activity.detail.scheduledPeriod", Type: "Period"},
				SearchParamPath{Path: "[]activity.detail.scheduledTiming", Type: "Timing"},
			},
		},
		"activityreference": SearchParamInfo{
			Resource: "CarePlan",
			Name:     "activityreference",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]activity.reference", Type: "Reference"},
			},
			Targets: []string{
				"Appointment",
				"CommunicationRequest",
				"DeviceUseRequest",
				"DiagnosticOrder",
				"MedicationOrder",
				"NutritionOrder",
				"Order",
				"ProcedureRequest",
				"ProcessRequest",
				"ReferralRequest",
				"SupplyRequest",
				"VisionPrescription",
			},
		},
		"condition": SearchParamInfo{
			Resource: "CarePlan",
			Name:     "condition",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]addresses", Type: "Reference"},
			},
			Targets: []string{
				"Condition",
			},
		},
		"date": SearchParamInfo{
			Resource: "CarePlan",
			Name:     "date",
			Type:     "date",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "period", Type: "Period"},
			},
		},
		"goal": SearchParamInfo{
			Resource: "CarePlan",
			Name:     "goal",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]goal", Type: "Reference"},
			},
			Targets: []string{
				"Goal",
			},
		},
		"participant": SearchParamInfo{
			Resource: "CarePlan",
			Name:     "participant",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]participant.member", Type: "Reference"},
			},
			Targets: []string{
				"Organization",
				"Patient",
				"Practitioner",
				"RelatedPerson",
			},
		},
		"patient": SearchParamInfo{
			Resource: "CarePlan",
			Name:     "patient",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "subject", Type: "Reference"},
			},
			Targets: []string{
				"Patient",
			},
		},
		"performer": SearchParamInfo{
			Resource: "CarePlan",
			Name:     "performer",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]activity.detail.[]performer", Type: "Reference"},
			},
			Targets: []string{
				"Organization",
				"Patient",
				"Practitioner",
				"RelatedPerson",
			},
		},
		"relatedcode": SearchParamInfo{
			Resource: "CarePlan",
			Name:     "relatedcode",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]relatedPlan.code", Type: "code"},
			},
		},
		"relatedplan": SearchParamInfo{
			Resource: "CarePlan",
			Name:     "relatedplan",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]relatedPlan.plan", Type: "Reference"},
			},
			Targets: []string{
				"CarePlan",
			},
		},
		"subject": SearchParamInfo{
			Resource: "CarePlan",
			Name:     "subject",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "subject", Type: "Reference"},
			},
			Targets: []string{
				"Group",
				"Patient",
			},
		},
	},
	"Claim": map[string]SearchParamInfo{
		"_id": SearchParamInfo{
			Resource: "Claim",
			Name:     "_id",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "_id", Type: "id"},
			},
		},
		"_lastUpdated": SearchParamInfo{
			Resource: "Claim",
			Name:     "_lastUpdated",
			Type:     "date",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.lastUpdated", Type: "instant"},
			},
		},
		"_profile": SearchParamInfo{
			Resource: "Claim",
			Name:     "_profile",
			Type:     "uri",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]profile", Type: "uri"},
			},
		},
		"_security": SearchParamInfo{
			Resource: "Claim",
			Name:     "_security",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]security", Type: "Coding"},
			},
		},
		"_tag": SearchParamInfo{
			Resource: "Claim",
			Name:     "_tag",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]tag", Type: "Coding"},
			},
		},
		"identifier": SearchParamInfo{
			Resource: "Claim",
			Name:     "identifier",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]identifier", Type: "Identifier"},
			},
		},
		"patient": SearchParamInfo{
			Resource: "Claim",
			Name:     "patient",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "patient", Type: "Reference"},
			},
			Targets: []string{
				"Patient",
			},
		},
		"priority": SearchParamInfo{
			Resource: "Claim",
			Name:     "priority",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "priority", Type: "Coding"},
			},
		},
		"provider": SearchParamInfo{
			Resource: "Claim",
			Name:     "provider",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "provider", Type: "Reference"},
			},
			Targets: []string{
				"Practitioner",
			},
		},
		"use": SearchParamInfo{
			Resource: "Claim",
			Name:     "use",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "use", Type: "code"},
			},
		},
	},
	"ClaimResponse": map[string]SearchParamInfo{
		"_id": SearchParamInfo{
			Resource: "ClaimResponse",
			Name:     "_id",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "_id", Type: "id"},
			},
		},
		"_lastUpdated": SearchParamInfo{
			Resource: "ClaimResponse",
			Name:     "_lastUpdated",
			Type:     "date",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.lastUpdated", Type: "instant"},
			},
		},
		"_profile": SearchParamInfo{
			Resource: "ClaimResponse",
			Name:     "_profile",
			Type:     "uri",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]profile", Type: "uri"},
			},
		},
		"_security": SearchParamInfo{
			Resource: "ClaimResponse",
			Name:     "_security",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]security", Type: "Coding"},
			},
		},
		"_tag": SearchParamInfo{
			Resource: "ClaimResponse",
			Name:     "_tag",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]tag", Type: "Coding"},
			},
		},
		"identifier": SearchParamInfo{
			Resource: "ClaimResponse",
			Name:     "identifier",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]identifier", Type: "Identifier"},
			},
		},
	},
	"ClinicalImpression": map[string]SearchParamInfo{
		"_id": SearchParamInfo{
			Resource: "ClinicalImpression",
			Name:     "_id",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "_id", Type: "id"},
			},
		},
		"_lastUpdated": SearchParamInfo{
			Resource: "ClinicalImpression",
			Name:     "_lastUpdated",
			Type:     "date",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.lastUpdated", Type: "instant"},
			},
		},
		"_profile": SearchParamInfo{
			Resource: "ClinicalImpression",
			Name:     "_profile",
			Type:     "uri",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]profile", Type: "uri"},
			},
		},
		"_security": SearchParamInfo{
			Resource: "ClinicalImpression",
			Name:     "_security",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]security", Type: "Coding"},
			},
		},
		"_tag": SearchParamInfo{
			Resource: "ClinicalImpression",
			Name:     "_tag",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]tag", Type: "Coding"},
			},
		},
		"action": SearchParamInfo{
			Resource: "ClinicalImpression",
			Name:     "action",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]action", Type: "Reference"},
			},
			Targets: []string{
				"Appointment",
				"DiagnosticOrder",
				"MedicationOrder",
				"NutritionOrder",
				"Procedure",
				"ProcedureRequest",
				"ReferralRequest",
				"SupplyRequest",
			},
		},
		"assessor": SearchParamInfo{
			Resource: "ClinicalImpression",
			Name:     "assessor",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "assessor", Type: "Reference"},
			},
			Targets: []string{
				"Practitioner",
			},
		},
		"date": SearchParamInfo{
			Resource: "ClinicalImpression",
			Name:     "date",
			Type:     "date",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "date", Type: "dateTime"},
			},
		},
		"finding": SearchParamInfo{
			Resource: "ClinicalImpression",
			Name:     "finding",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]finding.item", Type: "CodeableConcept"},
			},
		},
		"investigation": SearchParamInfo{
			Resource: "ClinicalImpression",
			Name:     "investigation",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]investigations.[]item", Type: "Reference"},
			},
			Targets: []string{
				"DiagnosticReport",
				"FamilyMemberHistory",
				"Observation",
				"QuestionnaireResponse",
			},
		},
		"patient": SearchParamInfo{
			Resource: "ClinicalImpression",
			Name:     "patient",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "patient", Type: "Reference"},
			},
			Targets: []string{
				"Patient",
			},
		},
		"plan": SearchParamInfo{
			Resource: "ClinicalImpression",
			Name:     "plan",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]plan", Type: "Reference"},
			},
			Targets: []string{
				"Appointment",
				"CarePlan",
				"CommunicationRequest",
				"DeviceUseRequest",
				"DiagnosticOrder",
				"MedicationOrder",
				"NutritionOrder",
				"Order",
				"ProcedureRequest",
				"ProcessRequest",
				"ReferralRequest",
				"SupplyRequest",
				"VisionPrescription",
			},
		},
		"previous": SearchParamInfo{
			Resource: "ClinicalImpression",
			Name:     "previous",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "previous", Type: "Reference"},
			},
			Targets: []string{
				"ClinicalImpression",
			},
		},
		"problem": SearchParamInfo{
			Resource: "ClinicalImpression",
			Name:     "problem",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]problem", Type: "Reference"},
			},
			Targets: []string{
				"AllergyIntolerance",
				"Condition",
			},
		},
		"resolved": SearchParamInfo{
			Resource: "ClinicalImpression",
			Name:     "resolved",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]resolved", Type: "CodeableConcept"},
			},
		},
		"ruledout": SearchParamInfo{
			Resource: "ClinicalImpression",
			Name:     "ruledout",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]ruledOut.item", Type: "CodeableConcept"},
			},
		},
		"status": SearchParamInfo{
			Resource: "ClinicalImpression",
			Name:     "status",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "status", Type: "code"},
			},
		},
		"trigger": SearchParamInfo{
			Resource: "ClinicalImpression",
			Name:     "trigger",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "triggerReference", Type: "Reference"},
			},
			Targets: []string{
				"Any",
			},
		},
		"trigger-code": SearchParamInfo{
			Resource: "ClinicalImpression",
			Name:     "trigger-code",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "triggerCodeableConcept", Type: "CodeableConcept"},
			},
		},
	},
	"Communication": map[string]SearchParamInfo{
		"_id": SearchParamInfo{
			Resource: "Communication",
			Name:     "_id",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "_id", Type: "id"},
			},
		},
		"_lastUpdated": SearchParamInfo{
			Resource: "Communication",
			Name:     "_lastUpdated",
			Type:     "date",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.lastUpdated", Type: "instant"},
			},
		},
		"_profile": SearchParamInfo{
			Resource: "Communication",
			Name:     "_profile",
			Type:     "uri",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]profile", Type: "uri"},
			},
		},
		"_security": SearchParamInfo{
			Resource: "Communication",
			Name:     "_security",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]security", Type: "Coding"},
			},
		},
		"_tag": SearchParamInfo{
			Resource: "Communication",
			Name:     "_tag",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]tag", Type: "Coding"},
			},
		},
		"category": SearchParamInfo{
			Resource: "Communication",
			Name:     "category",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "category", Type: "CodeableConcept"},
			},
		},
		"encounter": SearchParamInfo{
			Resource: "Communication",
			Name:     "encounter",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "encounter", Type: "Reference"},
			},
			Targets: []string{
				"Encounter",
			},
		},
		"identifier": SearchParamInfo{
			Resource: "Communication",
			Name:     "identifier",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]identifier", Type: "Identifier"},
			},
		},
		"medium": SearchParamInfo{
			Resource: "Communication",
			Name:     "medium",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]medium", Type: "CodeableConcept"},
			},
		},
		"patient": SearchParamInfo{
			Resource: "Communication",
			Name:     "patient",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "subject", Type: "Reference"},
			},
			Targets: []string{
				"Patient",
			},
		},
		"received": SearchParamInfo{
			Resource: "Communication",
			Name:     "received",
			Type:     "date",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "received", Type: "dateTime"},
			},
		},
		"recipient": SearchParamInfo{
			Resource: "Communication",
			Name:     "recipient",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]recipient", Type: "Reference"},
			},
			Targets: []string{
				"Device",
				"Group",
				"Organization",
				"Patient",
				"Practitioner",
				"RelatedPerson",
			},
		},
		"request": SearchParamInfo{
			Resource: "Communication",
			Name:     "request",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "requestDetail", Type: "Reference"},
			},
			Targets: []string{
				"CommunicationRequest",
			},
		},
		"sender": SearchParamInfo{
			Resource: "Communication",
			Name:     "sender",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "sender", Type: "Reference"},
			},
			Targets: []string{
				"Device",
				"Organization",
				"Patient",
				"Practitioner",
				"RelatedPerson",
			},
		},
		"sent": SearchParamInfo{
			Resource: "Communication",
			Name:     "sent",
			Type:     "date",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "sent", Type: "dateTime"},
			},
		},
		"status": SearchParamInfo{
			Resource: "Communication",
			Name:     "status",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "status", Type: "code"},
			},
		},
		"subject": SearchParamInfo{
			Resource: "Communication",
			Name:     "subject",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "subject", Type: "Reference"},
			},
			Targets: []string{
				"Patient",
			},
		},
	},
	"CommunicationRequest": map[string]SearchParamInfo{
		"_id": SearchParamInfo{
			Resource: "CommunicationRequest",
			Name:     "_id",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "_id", Type: "id"},
			},
		},
		"_lastUpdated": SearchParamInfo{
			Resource: "CommunicationRequest",
			Name:     "_lastUpdated",
			Type:     "date",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.lastUpdated", Type: "instant"},
			},
		},
		"_profile": SearchParamInfo{
			Resource: "CommunicationRequest",
			Name:     "_profile",
			Type:     "uri",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]profile", Type: "uri"},
			},
		},
		"_security": SearchParamInfo{
			Resource: "CommunicationRequest",
			Name:     "_security",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]security", Type: "Coding"},
			},
		},
		"_tag": SearchParamInfo{
			Resource: "CommunicationRequest",
			Name:     "_tag",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]tag", Type: "Coding"},
			},
		},
		"category": SearchParamInfo{
			Resource: "CommunicationRequest",
			Name:     "category",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "category", Type: "CodeableConcept"},
			},
		},
		"encounter": SearchParamInfo{
			Resource: "CommunicationRequest",
			Name:     "encounter",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "encounter", Type: "Reference"},
			},
			Targets: []string{
				"Encounter",
			},
		},
		"identifier": SearchParamInfo{
			Resource: "CommunicationRequest",
			Name:     "identifier",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]identifier", Type: "Identifier"},
			},
		},
		"medium": SearchParamInfo{
			Resource: "CommunicationRequest",
			Name:     "medium",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]medium", Type: "CodeableConcept"},
			},
		},
		"patient": SearchParamInfo{
			Resource: "CommunicationRequest",
			Name:     "patient",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "subject", Type: "Reference"},
			},
			Targets: []string{
				"Patient",
			},
		},
		"priority": SearchParamInfo{
			Resource: "CommunicationRequest",
			Name:     "priority",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "priority", Type: "CodeableConcept"},
			},
		},
		"recipient": SearchParamInfo{
			Resource: "CommunicationRequest",
			Name:     "recipient",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]recipient", Type: "Reference"},
			},
			Targets: []string{
				"Device",
				"Organization",
				"Patient",
				"Practitioner",
				"RelatedPerson",
			},
		},
		"requested": SearchParamInfo{
			Resource: "CommunicationRequest",
			Name:     "requested",
			Type:     "date",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "requestedOn", Type: "dateTime"},
			},
		},
		"requester": SearchParamInfo{
			Resource: "CommunicationRequest",
			Name:     "requester",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "requester", Type: "Reference"},
			},
			Targets: []string{
				"Patient",
				"Practitioner",
				"RelatedPerson",
			},
		},
		"sender": SearchParamInfo{
			Resource: "CommunicationRequest",
			Name:     "sender",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "sender", Type: "Reference"},
			},
			Targets: []string{
				"Device",
				"Organization",
				"Patient",
				"Practitioner",
				"RelatedPerson",
			},
		},
		"status": SearchParamInfo{
			Resource: "CommunicationRequest",
			Name:     "status",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "status", Type: "code"},
			},
		},
		"subject": SearchParamInfo{
			Resource: "CommunicationRequest",
			Name:     "subject",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "subject", Type: "Reference"},
			},
			Targets: []string{
				"Patient",
			},
		},
		"time": SearchParamInfo{
			Resource: "CommunicationRequest",
			Name:     "time",
			Type:     "date",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "scheduledDateTime", Type: "dateTime"},
			},
		},
	},
	"Composition": map[string]SearchParamInfo{
		"_id": SearchParamInfo{
			Resource: "Composition",
			Name:     "_id",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "_id", Type: "id"},
			},
		},
		"_lastUpdated": SearchParamInfo{
			Resource: "Composition",
			Name:     "_lastUpdated",
			Type:     "date",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.lastUpdated", Type: "instant"},
			},
		},
		"_profile": SearchParamInfo{
			Resource: "Composition",
			Name:     "_profile",
			Type:     "uri",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]profile", Type: "uri"},
			},
		},
		"_security": SearchParamInfo{
			Resource: "Composition",
			Name:     "_security",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]security", Type: "Coding"},
			},
		},
		"_tag": SearchParamInfo{
			Resource: "Composition",
			Name:     "_tag",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]tag", Type: "Coding"},
			},
		},
		"attester": SearchParamInfo{
			Resource: "Composition",
			Name:     "attester",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]attester.party", Type: "Reference"},
			},
			Targets: []string{
				"Organization",
				"Patient",
				"Practitioner",
			},
		},
		"author": SearchParamInfo{
			Resource: "Composition",
			Name:     "author",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]author", Type: "Reference"},
			},
			Targets: []string{
				"Device",
				"Patient",
				"Practitioner",
				"RelatedPerson",
			},
		},
		"class": SearchParamInfo{
			Resource: "Composition",
			Name:     "class",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "class", Type: "CodeableConcept"},
			},
		},
		"confidentiality": SearchParamInfo{
			Resource: "Composition",
			Name:     "confidentiality",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "confidentiality", Type: "code"},
			},
		},
		"context": SearchParamInfo{
			Resource: "Composition",
			Name:     "context",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]event.[]code", Type: "CodeableConcept"},
			},
		},
		"date": SearchParamInfo{
			Resource: "Composition",
			Name:     "date",
			Type:     "date",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "date", Type: "dateTime"},
			},
		},
		"encounter": SearchParamInfo{
			Resource: "Composition",
			Name:     "encounter",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "encounter", Type: "Reference"},
			},
			Targets: []string{
				"Encounter",
			},
		},
		"entry": SearchParamInfo{
			Resource: "Composition",
			Name:     "entry",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]section.[]entry", Type: "Reference"},
			},
			Targets: []string{
				"Any",
			},
		},
		"identifier": SearchParamInfo{
			Resource: "Composition",
			Name:     "identifier",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "identifier", Type: "Identifier"},
			},
		},
		"patient": SearchParamInfo{
			Resource: "Composition",
			Name:     "patient",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "subject", Type: "Reference"},
			},
			Targets: []string{
				"Patient",
			},
		},
		"period": SearchParamInfo{
			Resource: "Composition",
			Name:     "period",
			Type:     "date",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]event.period", Type: "Period"},
			},
		},
		"section": SearchParamInfo{
			Resource: "Composition",
			Name:     "section",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]section.code", Type: "CodeableConcept"},
			},
		},
		"status": SearchParamInfo{
			Resource: "Composition",
			Name:     "status",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "status", Type: "code"},
			},
		},
		"subject": SearchParamInfo{
			Resource: "Composition",
			Name:     "subject",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "subject", Type: "Reference"},
			},
			Targets: []string{
				"Any",
			},
		},
		"title": SearchParamInfo{
			Resource: "Composition",
			Name:     "title",
			Type:     "string",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "title", Type: "string"},
			},
		},
		"type": SearchParamInfo{
			Resource: "Composition",
			Name:     "type",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "type", Type: "CodeableConcept"},
			},
		},
	},
	"ConceptMap": map[string]SearchParamInfo{
		"_id": SearchParamInfo{
			Resource: "ConceptMap",
			Name:     "_id",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "_id", Type: "id"},
			},
		},
		"_lastUpdated": SearchParamInfo{
			Resource: "ConceptMap",
			Name:     "_lastUpdated",
			Type:     "date",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.lastUpdated", Type: "instant"},
			},
		},
		"_profile": SearchParamInfo{
			Resource: "ConceptMap",
			Name:     "_profile",
			Type:     "uri",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]profile", Type: "uri"},
			},
		},
		"_security": SearchParamInfo{
			Resource: "ConceptMap",
			Name:     "_security",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]security", Type: "Coding"},
			},
		},
		"_tag": SearchParamInfo{
			Resource: "ConceptMap",
			Name:     "_tag",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]tag", Type: "Coding"},
			},
		},
		"context": SearchParamInfo{
			Resource: "ConceptMap",
			Name:     "context",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]useContext", Type: "CodeableConcept"},
			},
		},
		"date": SearchParamInfo{
			Resource: "ConceptMap",
			Name:     "date",
			Type:     "date",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "date", Type: "dateTime"},
			},
		},
		"dependson": SearchParamInfo{
			Resource: "ConceptMap",
			Name:     "dependson",
			Type:     "uri",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]element.[]target.[]dependsOn.element", Type: "uri"},
			},
		},
		"description": SearchParamInfo{
			Resource: "ConceptMap",
			Name:     "description",
			Type:     "string",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "description", Type: "string"},
			},
		},
		"identifier": SearchParamInfo{
			Resource: "ConceptMap",
			Name:     "identifier",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "identifier", Type: "Identifier"},
			},
		},
		"name": SearchParamInfo{
			Resource: "ConceptMap",
			Name:     "name",
			Type:     "string",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "name", Type: "string"},
			},
		},
		"product": SearchParamInfo{
			Resource: "ConceptMap",
			Name:     "product",
			Type:     "uri",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]element.[]target.[]product.element", Type: "uri"},
			},
		},
		"publisher": SearchParamInfo{
			Resource: "ConceptMap",
			Name:     "publisher",
			Type:     "string",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "publisher", Type: "string"},
			},
		},
		"source": SearchParamInfo{
			Resource: "ConceptMap",
			Name:     "source",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "sourceReference", Type: "Reference"},
			},
			Targets: []string{
				"StructureDefinition",
				"ValueSet",
			},
		},
		"sourcecode": SearchParamInfo{
			Resource: "ConceptMap",
			Name:     "sourcecode",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]element.code", Type: "code"},
			},
		},
		"sourcesystem": SearchParamInfo{
			Resource: "ConceptMap",
			Name:     "sourcesystem",
			Type:     "uri",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]element.codeSystem", Type: "uri"},
			},
		},
		"sourceuri": SearchParamInfo{
			Resource: "ConceptMap",
			Name:     "sourceuri",
			Type:     "reference",
			Targets: []string{
				"StructureDefinition",
				"ValueSet",
			},
		},
		"status": SearchParamInfo{
			Resource: "ConceptMap",
			Name:     "status",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "status", Type: "code"},
			},
		},
		"target": SearchParamInfo{
			Resource: "ConceptMap",
			Name:     "target",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "targetReference", Type: "Reference"},
			},
			Targets: []string{
				"StructureDefinition",
				"ValueSet",
			},
		},
		"targetcode": SearchParamInfo{
			Resource: "ConceptMap",
			Name:     "targetcode",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]element.[]target.code", Type: "code"},
			},
		},
		"targetsystem": SearchParamInfo{
			Resource: "ConceptMap",
			Name:     "targetsystem",
			Type:     "uri",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]element.[]target.codeSystem", Type: "uri"},
			},
		},
		"url": SearchParamInfo{
			Resource: "ConceptMap",
			Name:     "url",
			Type:     "uri",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "url", Type: "uri"},
			},
		},
		"version": SearchParamInfo{
			Resource: "ConceptMap",
			Name:     "version",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "version", Type: "string"},
			},
		},
	},
	"Condition": map[string]SearchParamInfo{
		"_id": SearchParamInfo{
			Resource: "Condition",
			Name:     "_id",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "_id", Type: "id"},
			},
		},
		"_lastUpdated": SearchParamInfo{
			Resource: "Condition",
			Name:     "_lastUpdated",
			Type:     "date",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.lastUpdated", Type: "instant"},
			},
		},
		"_profile": SearchParamInfo{
			Resource: "Condition",
			Name:     "_profile",
			Type:     "uri",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]profile", Type: "uri"},
			},
		},
		"_security": SearchParamInfo{
			Resource: "Condition",
			Name:     "_security",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]security", Type: "Coding"},
			},
		},
		"_tag": SearchParamInfo{
			Resource: "Condition",
			Name:     "_tag",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]tag", Type: "Coding"},
			},
		},
		"asserter": SearchParamInfo{
			Resource: "Condition",
			Name:     "asserter",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "asserter", Type: "Reference"},
			},
			Targets: []string{
				"Patient",
				"Practitioner",
			},
		},
		"body-site": SearchParamInfo{
			Resource: "Condition",
			Name:     "body-site",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]bodySite", Type: "CodeableConcept"},
			},
		},
		"category": SearchParamInfo{
			Resource: "Condition",
			Name:     "category",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "category", Type: "CodeableConcept"},
			},
		},
		"clinicalstatus": SearchParamInfo{
			Resource: "Condition",
			Name:     "clinicalstatus",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "clinicalStatus", Type: "code"},
			},
		},
		"code": SearchParamInfo{
			Resource: "Condition",
			Name:     "code",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "code", Type: "CodeableConcept"},
			},
		},
		"date-recorded": SearchParamInfo{
			Resource: "Condition",
			Name:     "date-recorded",
			Type:     "date",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "dateRecorded", Type: "date"},
			},
		},
		"encounter": SearchParamInfo{
			Resource: "Condition",
			Name:     "encounter",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "encounter", Type: "Reference"},
			},
			Targets: []string{
				"Encounter",
			},
		},
		"evidence": SearchParamInfo{
			Resource: "Condition",
			Name:     "evidence",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]evidence.code", Type: "CodeableConcept"},
			},
		},
		"identifier": SearchParamInfo{
			Resource: "Condition",
			Name:     "identifier",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]identifier", Type: "Identifier"},
			},
		},
		"onset": SearchParamInfo{
			Resource: "Condition",
			Name:     "onset",
			Type:     "date",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "onsetDateTime", Type: "dateTime"},
				SearchParamPath{Path: "onsetPeriod", Type: "Period"},
			},
		},
		"onset-info": SearchParamInfo{
			Resource: "Condition",
			Name:     "onset-info",
			Type:     "string",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "onsetString", Type: "string"},
			},
		},
		"patient": SearchParamInfo{
			Resource: "Condition",
			Name:     "patient",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "patient", Type: "Reference"},
			},
			Targets: []string{
				"Patient",
			},
		},
		"severity": SearchParamInfo{
			Resource: "Condition",
			Name:     "severity",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "severity", Type: "CodeableConcept"},
			},
		},
		"stage": SearchParamInfo{
			Resource: "Condition",
			Name:     "stage",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "stage.summary", Type: "CodeableConcept"},
			},
		},
	},
	"Conformance": map[string]SearchParamInfo{
		"_id": SearchParamInfo{
			Resource: "Conformance",
			Name:     "_id",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "_id", Type: "id"},
			},
		},
		"_lastUpdated": SearchParamInfo{
			Resource: "Conformance",
			Name:     "_lastUpdated",
			Type:     "date",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.lastUpdated", Type: "instant"},
			},
		},
		"_profile": SearchParamInfo{
			Resource: "Conformance",
			Name:     "_profile",
			Type:     "uri",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]profile", Type: "uri"},
			},
		},
		"_security": SearchParamInfo{
			Resource: "Conformance",
			Name:     "_security",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]security", Type: "Coding"},
			},
		},
		"_tag": SearchParamInfo{
			Resource: "Conformance",
			Name:     "_tag",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]tag", Type: "Coding"},
			},
		},
		"date": SearchParamInfo{
			Resource: "Conformance",
			Name:     "date",
			Type:     "date",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "date", Type: "dateTime"},
			},
		},
		"description": SearchParamInfo{
			Resource: "Conformance",
			Name:     "description",
			Type:     "string",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "description", Type: "string"},
			},
		},
		"event": SearchParamInfo{
			Resource: "Conformance",
			Name:     "event",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]messaging.[]event.code", Type: "Coding"},
			},
		},
		"fhirversion": SearchParamInfo{
			Resource: "Conformance",
			Name:     "fhirversion",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "version", Type: "string"},
			},
		},
		"format": SearchParamInfo{
			Resource: "Conformance",
			Name:     "format",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]format", Type: "code"},
			},
		},
		"mode": SearchParamInfo{
			Resource: "Conformance",
			Name:     "mode",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]rest.mode", Type: "code"},
			},
		},
		"name": SearchParamInfo{
			Resource: "Conformance",
			Name:     "name",
			Type:     "string",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "name", Type: "string"},
			},
		},
		"profile": SearchParamInfo{
			Resource: "Conformance",
			Name:     "profile",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]rest.[]resource.profile", Type: "Reference"},
			},
			Targets: []string{
				"StructureDefinition",
			},
		},
		"publisher": SearchParamInfo{
			Resource: "Conformance",
			Name:     "publisher",
			Type:     "string",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "publisher", Type: "string"},
			},
		},
		"resource": SearchParamInfo{
			Resource: "Conformance",
			Name:     "resource",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]rest.[]resource.type", Type: "code"},
			},
		},
		"security": SearchParamInfo{
			Resource: "Conformance",
			Name:     "security",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]rest.security.[]service", Type: "CodeableConcept"},
			},
		},
		"software": SearchParamInfo{
			Resource: "Conformance",
			Name:     "software",
			Type:     "string",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "software.name", Type: "string"},
			},
		},
		"status": SearchParamInfo{
			Resource: "Conformance",
			Name:     "status",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "status", Type: "code"},
			},
		},
		"supported-profile": SearchParamInfo{
			Resource: "Conformance",
			Name:     "supported-profile",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]profile", Type: "Reference"},
			},
			Targets: []string{
				"StructureDefinition",
			},
		},
		"url": SearchParamInfo{
			Resource: "Conformance",
			Name:     "url",
			Type:     "uri",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "url", Type: "uri"},
			},
		},
		"version": SearchParamInfo{
			Resource: "Conformance",
			Name:     "version",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "version", Type: "string"},
			},
		},
	},
	"Contract": map[string]SearchParamInfo{
		"_id": SearchParamInfo{
			Resource: "Contract",
			Name:     "_id",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "_id", Type: "id"},
			},
		},
		"_lastUpdated": SearchParamInfo{
			Resource: "Contract",
			Name:     "_lastUpdated",
			Type:     "date",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.lastUpdated", Type: "instant"},
			},
		},
		"_profile": SearchParamInfo{
			Resource: "Contract",
			Name:     "_profile",
			Type:     "uri",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]profile", Type: "uri"},
			},
		},
		"_security": SearchParamInfo{
			Resource: "Contract",
			Name:     "_security",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]security", Type: "Coding"},
			},
		},
		"_tag": SearchParamInfo{
			Resource: "Contract",
			Name:     "_tag",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]tag", Type: "Coding"},
			},
		},
		"actor": SearchParamInfo{
			Resource: "Contract",
			Name:     "actor",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]actor.entity", Type: "Reference"},
			},
			Targets: []string{
				"Contract",
				"Device",
				"Group",
				"Location",
				"Organization",
				"Patient",
				"Practitioner",
				"RelatedPerson",
				"Substance",
			},
		},
		"identifier": SearchParamInfo{
			Resource: "Contract",
			Name:     "identifier",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "identifier", Type: "Identifier"},
			},
		},
		"patient": SearchParamInfo{
			Resource: "Contract",
			Name:     "patient",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]subject", Type: "Reference"},
			},
			Targets: []string{
				"Patient",
			},
		},
		"signer": SearchParamInfo{
			Resource: "Contract",
			Name:     "signer",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]signer.party", Type: "Reference"},
			},
			Targets: []string{
				"Organization",
				"Patient",
				"Practitioner",
				"RelatedPerson",
			},
		},
		"subject": SearchParamInfo{
			Resource: "Contract",
			Name:     "subject",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]subject", Type: "Reference"},
			},
			Targets: []string{
				"Patient",
			},
		},
	},
	"Coverage": map[string]SearchParamInfo{
		"_id": SearchParamInfo{
			Resource: "Coverage",
			Name:     "_id",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "_id", Type: "id"},
			},
		},
		"_lastUpdated": SearchParamInfo{
			Resource: "Coverage",
			Name:     "_lastUpdated",
			Type:     "date",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.lastUpdated", Type: "instant"},
			},
		},
		"_profile": SearchParamInfo{
			Resource: "Coverage",
			Name:     "_profile",
			Type:     "uri",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]profile", Type: "uri"},
			},
		},
		"_security": SearchParamInfo{
			Resource: "Coverage",
			Name:     "_security",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]security", Type: "Coding"},
			},
		},
		"_tag": SearchParamInfo{
			Resource: "Coverage",
			Name:     "_tag",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]tag", Type: "Coding"},
			},
		},
		"dependent": SearchParamInfo{
			Resource: "Coverage",
			Name:     "dependent",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "dependent", Type: "positiveInt"},
			},
		},
		"group": SearchParamInfo{
			Resource: "Coverage",
			Name:     "group",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "group", Type: "string"},
			},
		},
		"identifier": SearchParamInfo{
			Resource: "Coverage",
			Name:     "identifier",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]identifier", Type: "Identifier"},
			},
		},
		"issuer": SearchParamInfo{
			Resource: "Coverage",
			Name:     "issuer",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "issuer", Type: "Reference"},
			},
			Targets: []string{
				"Organization",
			},
		},
		"plan": SearchParamInfo{
			Resource: "Coverage",
			Name:     "plan",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "plan", Type: "string"},
			},
		},
		"sequence": SearchParamInfo{
			Resource: "Coverage",
			Name:     "sequence",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "sequence", Type: "positiveInt"},
			},
		},
		"subplan": SearchParamInfo{
			Resource: "Coverage",
			Name:     "subplan",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "subPlan", Type: "string"},
			},
		},
		"type": SearchParamInfo{
			Resource: "Coverage",
			Name:     "type",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "type", Type: "Coding"},
			},
		},
	},
	"DataElement": map[string]SearchParamInfo{
		"_id": SearchParamInfo{
			Resource: "DataElement",
			Name:     "_id",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "_id", Type: "id"},
			},
		},
		"_lastUpdated": SearchParamInfo{
			Resource: "DataElement",
			Name:     "_lastUpdated",
			Type:     "date",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.lastUpdated", Type: "instant"},
			},
		},
		"_profile": SearchParamInfo{
			Resource: "DataElement",
			Name:     "_profile",
			Type:     "uri",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]profile", Type: "uri"},
			},
		},
		"_security": SearchParamInfo{
			Resource: "DataElement",
			Name:     "_security",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]security", Type: "Coding"},
			},
		},
		"_tag": SearchParamInfo{
			Resource: "DataElement",
			Name:     "_tag",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]tag", Type: "Coding"},
			},
		},
		"code": SearchParamInfo{
			Resource: "DataElement",
			Name:     "code",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]element.[]code", Type: "Coding"},
			},
		},
		"context": SearchParamInfo{
			Resource: "DataElement",
			Name:     "context",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]useContext", Type: "CodeableConcept"},
			},
		},
		"date": SearchParamInfo{
			Resource: "DataElement",
			Name:     "date",
			Type:     "date",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "date", Type: "dateTime"},
			},
		},
		"description": SearchParamInfo{
			Resource: "DataElement",
			Name:     "description",
			Type:     "string",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]element.definition", Type: "markdown"},
			},
		},
		"identifier": SearchParamInfo{
			Resource: "DataElement",
			Name:     "identifier",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]identifier", Type: "Identifier"},
			},
		},
		"name": SearchParamInfo{
			Resource: "DataElement",
			Name:     "name",
			Type:     "string",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "name", Type: "string"},
			},
		},
		"publisher": SearchParamInfo{
			Resource: "DataElement",
			Name:     "publisher",
			Type:     "string",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "publisher", Type: "string"},
			},
		},
		"status": SearchParamInfo{
			Resource: "DataElement",
			Name:     "status",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "status", Type: "code"},
			},
		},
		"stringency": SearchParamInfo{
			Resource: "DataElement",
			Name:     "stringency",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "stringency", Type: "code"},
			},
		},
		"url": SearchParamInfo{
			Resource: "DataElement",
			Name:     "url",
			Type:     "uri",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "url", Type: "uri"},
			},
		},
		"version": SearchParamInfo{
			Resource: "DataElement",
			Name:     "version",
			Type:     "string",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "version", Type: "string"},
			},
		},
	},
	"DetectedIssue": map[string]SearchParamInfo{
		"_id": SearchParamInfo{
			Resource: "DetectedIssue",
			Name:     "_id",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "_id", Type: "id"},
			},
		},
		"_lastUpdated": SearchParamInfo{
			Resource: "DetectedIssue",
			Name:     "_lastUpdated",
			Type:     "date",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.lastUpdated", Type: "instant"},
			},
		},
		"_profile": SearchParamInfo{
			Resource: "DetectedIssue",
			Name:     "_profile",
			Type:     "uri",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]profile", Type: "uri"},
			},
		},
		"_security": SearchParamInfo{
			Resource: "DetectedIssue",
			Name:     "_security",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]security", Type: "Coding"},
			},
		},
		"_tag": SearchParamInfo{
			Resource: "DetectedIssue",
			Name:     "_tag",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]tag", Type: "Coding"},
			},
		},
		"author": SearchParamInfo{
			Resource: "DetectedIssue",
			Name:     "author",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "author", Type: "Reference"},
			},
			Targets: []string{
				"Device",
				"Practitioner",
			},
		},
		"category": SearchParamInfo{
			Resource: "DetectedIssue",
			Name:     "category",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "category", Type: "CodeableConcept"},
			},
		},
		"date": SearchParamInfo{
			Resource: "DetectedIssue",
			Name:     "date",
			Type:     "date",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "date", Type: "dateTime"},
			},
		},
		"identifier": SearchParamInfo{
			Resource: "DetectedIssue",
			Name:     "identifier",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "identifier", Type: "Identifier"},
			},
		},
		"implicated": SearchParamInfo{
			Resource: "DetectedIssue",
			Name:     "implicated",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]implicated", Type: "Reference"},
			},
			Targets: []string{
				"Any",
			},
		},
		"patient": SearchParamInfo{
			Resource: "DetectedIssue",
			Name:     "patient",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "patient", Type: "Reference"},
			},
			Targets: []string{
				"Patient",
			},
		},
	},
	"Device": map[string]SearchParamInfo{
		"_id": SearchParamInfo{
			Resource: "Device",
			Name:     "_id",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "_id", Type: "id"},
			},
		},
		"_lastUpdated": SearchParamInfo{
			Resource: "Device",
			Name:     "_lastUpdated",
			Type:     "date",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.lastUpdated", Type: "instant"},
			},
		},
		"_profile": SearchParamInfo{
			Resource: "Device",
			Name:     "_profile",
			Type:     "uri",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]profile", Type: "uri"},
			},
		},
		"_security": SearchParamInfo{
			Resource: "Device",
			Name:     "_security",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]security", Type: "Coding"},
			},
		},
		"_tag": SearchParamInfo{
			Resource: "Device",
			Name:     "_tag",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]tag", Type: "Coding"},
			},
		},
		"identifier": SearchParamInfo{
			Resource: "Device",
			Name:     "identifier",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]identifier", Type: "Identifier"},
			},
		},
		"location": SearchParamInfo{
			Resource: "Device",
			Name:     "location",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "location", Type: "Reference"},
			},
			Targets: []string{
				"Location",
			},
		},
		"manufacturer": SearchParamInfo{
			Resource: "Device",
			Name:     "manufacturer",
			Type:     "string",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "manufacturer", Type: "string"},
			},
		},
		"model": SearchParamInfo{
			Resource: "Device",
			Name:     "model",
			Type:     "string",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "model", Type: "string"},
			},
		},
		"organization": SearchParamInfo{
			Resource: "Device",
			Name:     "organization",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "owner", Type: "Reference"},
			},
			Targets: []string{
				"Organization",
			},
		},
		"patient": SearchParamInfo{
			Resource: "Device",
			Name:     "patient",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "patient", Type: "Reference"},
			},
			Targets: []string{
				"Patient",
			},
		},
		"type": SearchParamInfo{
			Resource: "Device",
			Name:     "type",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "type", Type: "CodeableConcept"},
			},
		},
		"udi": SearchParamInfo{
			Resource: "Device",
			Name:     "udi",
			Type:     "string",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "udi", Type: "string"},
			},
		},
		"url": SearchParamInfo{
			Resource: "Device",
			Name:     "url",
			Type:     "uri",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "url", Type: "uri"},
			},
		},
	},
	"DeviceComponent": map[string]SearchParamInfo{
		"_id": SearchParamInfo{
			Resource: "DeviceComponent",
			Name:     "_id",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "_id", Type: "id"},
			},
		},
		"_lastUpdated": SearchParamInfo{
			Resource: "DeviceComponent",
			Name:     "_lastUpdated",
			Type:     "date",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.lastUpdated", Type: "instant"},
			},
		},
		"_profile": SearchParamInfo{
			Resource: "DeviceComponent",
			Name:     "_profile",
			Type:     "uri",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]profile", Type: "uri"},
			},
		},
		"_security": SearchParamInfo{
			Resource: "DeviceComponent",
			Name:     "_security",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]security", Type: "Coding"},
			},
		},
		"_tag": SearchParamInfo{
			Resource: "DeviceComponent",
			Name:     "_tag",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]tag", Type: "Coding"},
			},
		},
		"parent": SearchParamInfo{
			Resource: "DeviceComponent",
			Name:     "parent",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "parent", Type: "Reference"},
			},
			Targets: []string{
				"DeviceComponent",
			},
		},
		"source": SearchParamInfo{
			Resource: "DeviceComponent",
			Name:     "source",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "source", Type: "Reference"},
			},
			Targets: []string{
				"Device",
			},
		},
		"type": SearchParamInfo{
			Resource: "DeviceComponent",
			Name:     "type",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "type", Type: "CodeableConcept"},
			},
		},
	},
	"DeviceMetric": map[string]SearchParamInfo{
		"_id": SearchParamInfo{
			Resource: "DeviceMetric",
			Name:     "_id",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "_id", Type: "id"},
			},
		},
		"_lastUpdated": SearchParamInfo{
			Resource: "DeviceMetric",
			Name:     "_lastUpdated",
			Type:     "date",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.lastUpdated", Type: "instant"},
			},
		},
		"_profile": SearchParamInfo{
			Resource: "DeviceMetric",
			Name:     "_profile",
			Type:     "uri",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]profile", Type: "uri"},
			},
		},
		"_security": SearchParamInfo{
			Resource: "DeviceMetric",
			Name:     "_security",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]security", Type: "Coding"},
			},
		},
		"_tag": SearchParamInfo{
			Resource: "DeviceMetric",
			Name:     "_tag",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]tag", Type: "Coding"},
			},
		},
		"category": SearchParamInfo{
			Resource: "DeviceMetric",
			Name:     "category",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "category", Type: "code"},
			},
		},
		"identifier": SearchParamInfo{
			Resource: "DeviceMetric",
			Name:     "identifier",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "identifier", Type: "Identifier"},
			},
		},
		"parent": SearchParamInfo{
			Resource: "DeviceMetric",
			Name:     "parent",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "parent", Type: "Reference"},
			},
			Targets: []string{
				"DeviceComponent",
			},
		},
		"source": SearchParamInfo{
			Resource: "DeviceMetric",
			Name:     "source",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "source", Type: "Reference"},
			},
			Targets: []string{
				"Device",
			},
		},
		"type": SearchParamInfo{
			Resource: "DeviceMetric",
			Name:     "type",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "type", Type: "CodeableConcept"},
			},
		},
	},
	"DeviceUseRequest": map[string]SearchParamInfo{
		"_id": SearchParamInfo{
			Resource: "DeviceUseRequest",
			Name:     "_id",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "_id", Type: "id"},
			},
		},
		"_lastUpdated": SearchParamInfo{
			Resource: "DeviceUseRequest",
			Name:     "_lastUpdated",
			Type:     "date",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.lastUpdated", Type: "instant"},
			},
		},
		"_profile": SearchParamInfo{
			Resource: "DeviceUseRequest",
			Name:     "_profile",
			Type:     "uri",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]profile", Type: "uri"},
			},
		},
		"_security": SearchParamInfo{
			Resource: "DeviceUseRequest",
			Name:     "_security",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]security", Type: "Coding"},
			},
		},
		"_tag": SearchParamInfo{
			Resource: "DeviceUseRequest",
			Name:     "_tag",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]tag", Type: "Coding"},
			},
		},
		"device": SearchParamInfo{
			Resource: "DeviceUseRequest",
			Name:     "device",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "device", Type: "Reference"},
			},
			Targets: []string{
				"Device",
			},
		},
		"patient": SearchParamInfo{
			Resource: "DeviceUseRequest",
			Name:     "patient",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "subject", Type: "Reference"},
			},
			Targets: []string{
				"Patient",
			},
		},
		"subject": SearchParamInfo{
			Resource: "DeviceUseRequest",
			Name:     "subject",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "subject", Type: "Reference"},
			},
			Targets: []string{
				"Patient",
			},
		},
	},
	"DeviceUseStatement": map[string]SearchParamInfo{
		"_id": SearchParamInfo{
			Resource: "DeviceUseStatement",
			Name:     "_id",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "_id", Type: "id"},
			},
		},
		"_lastUpdated": SearchParamInfo{
			Resource: "DeviceUseStatement",
			Name:     "_lastUpdated",
			Type:     "date",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.lastUpdated", Type: "instant"},
			},
		},
		"_profile": SearchParamInfo{
			Resource: "DeviceUseStatement",
			Name:     "_profile",
			Type:     "uri",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]profile", Type: "uri"},
			},
		},
		"_security": SearchParamInfo{
			Resource: "DeviceUseStatement",
			Name:     "_security",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]security", Type: "Coding"},
			},
		},
		"_tag": SearchParamInfo{
			Resource: "DeviceUseStatement",
			Name:     "_tag",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]tag", Type: "Coding"},
			},
		},
		"device": SearchParamInfo{
			Resource: "DeviceUseStatement",
			Name:     "device",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "device", Type: "Reference"},
			},
			Targets: []string{
				"Device",
			},
		},
		"patient": SearchParamInfo{
			Resource: "DeviceUseStatement",
			Name:     "patient",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "subject", Type: "Reference"},
			},
			Targets: []string{
				"Patient",
			},
		},
		"subject": SearchParamInfo{
			Resource: "DeviceUseStatement",
			Name:     "subject",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "subject", Type: "Reference"},
			},
			Targets: []string{
				"Patient",
			},
		},
	},
	"DiagnosticOrder": map[string]SearchParamInfo{
		"_id": SearchParamInfo{
			Resource: "DiagnosticOrder",
			Name:     "_id",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "_id", Type: "id"},
			},
		},
		"_lastUpdated": SearchParamInfo{
			Resource: "DiagnosticOrder",
			Name:     "_lastUpdated",
			Type:     "date",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.lastUpdated", Type: "instant"},
			},
		},
		"_profile": SearchParamInfo{
			Resource: "DiagnosticOrder",
			Name:     "_profile",
			Type:     "uri",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]profile", Type: "uri"},
			},
		},
		"_security": SearchParamInfo{
			Resource: "DiagnosticOrder",
			Name:     "_security",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]security", Type: "Coding"},
			},
		},
		"_tag": SearchParamInfo{
			Resource: "DiagnosticOrder",
			Name:     "_tag",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]tag", Type: "Coding"},
			},
		},
		"actor": SearchParamInfo{
			Resource: "DiagnosticOrder",
			Name:     "actor",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]event.actor", Type: "Reference"},
				SearchParamPath{Path: "[]item.[]event.actor", Type: "Reference"},
			},
			Targets: []string{
				"Device",
				"Practitioner",
			},
		},
		"bodysite": SearchParamInfo{
			Resource: "DiagnosticOrder",
			Name:     "bodysite",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]item.bodySite", Type: "CodeableConcept"},
			},
		},
		"code": SearchParamInfo{
			Resource: "DiagnosticOrder",
			Name:     "code",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]item.code", Type: "CodeableConcept"},
			},
		},
		"encounter": SearchParamInfo{
			Resource: "DiagnosticOrder",
			Name:     "encounter",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "encounter", Type: "Reference"},
			},
			Targets: []string{
				"Encounter",
			},
		},
		"event-date": SearchParamInfo{
			Resource: "DiagnosticOrder",
			Name:     "event-date",
			Type:     "date",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]event.dateTime", Type: "dateTime"},
			},
		},
		"event-status": SearchParamInfo{
			Resource: "DiagnosticOrder",
			Name:     "event-status",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]event.status", Type: "code"},
			},
		},
		"identifier": SearchParamInfo{
			Resource: "DiagnosticOrder",
			Name:     "identifier",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]identifier", Type: "Identifier"},
			},
		},
		"item-date": SearchParamInfo{
			Resource: "DiagnosticOrder",
			Name:     "item-date",
			Type:     "date",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]item.[]event.dateTime", Type: "dateTime"},
			},
		},
		"item-past-status": SearchParamInfo{
			Resource: "DiagnosticOrder",
			Name:     "item-past-status",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]item.[]event.status", Type: "code"},
			},
		},
		"item-status": SearchParamInfo{
			Resource: "DiagnosticOrder",
			Name:     "item-status",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]item.status", Type: "code"},
			},
		},
		"orderer": SearchParamInfo{
			Resource: "DiagnosticOrder",
			Name:     "orderer",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "orderer", Type: "Reference"},
			},
			Targets: []string{
				"Practitioner",
			},
		},
		"patient": SearchParamInfo{
			Resource: "DiagnosticOrder",
			Name:     "patient",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "subject", Type: "Reference"},
			},
			Targets: []string{
				"Patient",
			},
		},
		"specimen": SearchParamInfo{
			Resource: "DiagnosticOrder",
			Name:     "specimen",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]item.[]specimen", Type: "Reference"},
				SearchParamPath{Path: "[]specimen", Type: "Reference"},
			},
			Targets: []string{
				"Specimen",
			},
		},
		"status": SearchParamInfo{
			Resource: "DiagnosticOrder",
			Name:     "status",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "status", Type: "code"},
			},
		},
		"subject": SearchParamInfo{
			Resource: "DiagnosticOrder",
			Name:     "subject",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "subject", Type: "Reference"},
			},
			Targets: []string{
				"Device",
				"Group",
				"Location",
				"Patient",
			},
		},
	},
	"DiagnosticReport": map[string]SearchParamInfo{
		"_id": SearchParamInfo{
			Resource: "DiagnosticReport",
			Name:     "_id",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "_id", Type: "id"},
			},
		},
		"_lastUpdated": SearchParamInfo{
			Resource: "DiagnosticReport",
			Name:     "_lastUpdated",
			Type:     "date",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.lastUpdated", Type: "instant"},
			},
		},
		"_profile": SearchParamInfo{
			Resource: "DiagnosticReport",
			Name:     "_profile",
			Type:     "uri",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]profile", Type: "uri"},
			},
		},
		"_security": SearchParamInfo{
			Resource: "DiagnosticReport",
			Name:     "_security",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]security", Type: "Coding"},
			},
		},
		"_tag": SearchParamInfo{
			Resource: "DiagnosticReport",
			Name:     "_tag",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]tag", Type: "Coding"},
			},
		},
		"category": SearchParamInfo{
			Resource: "DiagnosticReport",
			Name:     "category",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "category", Type: "CodeableConcept"},
			},
		},
		"code": SearchParamInfo{
			Resource: "DiagnosticReport",
			Name:     "code",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "code", Type: "CodeableConcept"},
			},
		},
		"date": SearchParamInfo{
			Resource: "DiagnosticReport",
			Name:     "date",
			Type:     "date",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "effectiveDateTime", Type: "dateTime"},
				SearchParamPath{Path: "effectivePeriod", Type: "Period"},
			},
		},
		"diagnosis": SearchParamInfo{
			Resource: "DiagnosticReport",
			Name:     "diagnosis",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]codedDiagnosis", Type: "CodeableConcept"},
			},
		},
		"encounter": SearchParamInfo{
			Resource: "DiagnosticReport",
			Name:     "encounter",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "encounter", Type: "Reference"},
			},
			Targets: []string{
				"Encounter",
			},
		},
		"identifier": SearchParamInfo{
			Resource: "DiagnosticReport",
			Name:     "identifier",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]identifier", Type: "Identifier"},
			},
		},
		"image": SearchParamInfo{
			Resource: "DiagnosticReport",
			Name:     "image",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]image.link", Type: "Reference"},
			},
			Targets: []string{
				"Media",
			},
		},
		"issued": SearchParamInfo{
			Resource: "DiagnosticReport",
			Name:     "issued",
			Type:     "date",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "issued", Type: "instant"},
			},
		},
		"patient": SearchParamInfo{
			Resource: "DiagnosticReport",
			Name:     "patient",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "subject", Type: "Reference"},
			},
			Targets: []string{
				"Patient",
			},
		},
		"performer": SearchParamInfo{
			Resource: "DiagnosticReport",
			Name:     "performer",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "performer", Type: "Reference"},
			},
			Targets: []string{
				"Organization",
				"Practitioner",
			},
		},
		"request": SearchParamInfo{
			Resource: "DiagnosticReport",
			Name:     "request",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]request", Type: "Reference"},
			},
			Targets: []string{
				"DiagnosticOrder",
				"ProcedureRequest",
				"ReferralRequest",
			},
		},
		"result": SearchParamInfo{
			Resource: "DiagnosticReport",
			Name:     "result",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]result", Type: "Reference"},
			},
			Targets: []string{
				"Observation",
			},
		},
		"specimen": SearchParamInfo{
			Resource: "DiagnosticReport",
			Name:     "specimen",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]specimen", Type: "Reference"},
			},
			Targets: []string{
				"Specimen",
			},
		},
		"status": SearchParamInfo{
			Resource: "DiagnosticReport",
			Name:     "status",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "status", Type: "code"},
			},
		},
		"subject": SearchParamInfo{
			Resource: "DiagnosticReport",
			Name:     "subject",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "subject", Type: "Reference"},
			},
			Targets: []string{
				"Device",
				"Group",
				"Location",
				"Patient",
			},
		},
	},
	"DocumentManifest": map[string]SearchParamInfo{
		"_id": SearchParamInfo{
			Resource: "DocumentManifest",
			Name:     "_id",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "_id", Type: "id"},
			},
		},
		"_lastUpdated": SearchParamInfo{
			Resource: "DocumentManifest",
			Name:     "_lastUpdated",
			Type:     "date",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.lastUpdated", Type: "instant"},
			},
		},
		"_profile": SearchParamInfo{
			Resource: "DocumentManifest",
			Name:     "_profile",
			Type:     "uri",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]profile", Type: "uri"},
			},
		},
		"_security": SearchParamInfo{
			Resource: "DocumentManifest",
			Name:     "_security",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]security", Type: "Coding"},
			},
		},
		"_tag": SearchParamInfo{
			Resource: "DocumentManifest",
			Name:     "_tag",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]tag", Type: "Coding"},
			},
		},
		"author": SearchParamInfo{
			Resource: "DocumentManifest",
			Name:     "author",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]author", Type: "Reference"},
			},
			Targets: []string{
				"Device",
				"Organization",
				"Patient",
				"Practitioner",
				"RelatedPerson",
			},
		},
		"content-ref": SearchParamInfo{
			Resource: "DocumentManifest",
			Name:     "content-ref",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]content.pReference", Type: "Reference"},
			},
			Targets: []string{
				"Any",
			},
		},
		"created": SearchParamInfo{
			Resource: "DocumentManifest",
			Name:     "created",
			Type:     "date",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "created", Type: "dateTime"},
			},
		},
		"description": SearchParamInfo{
			Resource: "DocumentManifest",
			Name:     "description",
			Type:     "string",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "description", Type: "string"},
			},
		},
		"identifier": SearchParamInfo{
			Resource: "DocumentManifest",
			Name:     "identifier",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]identifier", Type: "Identifier"},
				SearchParamPath{Path: "masterIdentifier", Type: "Identifier"},
			},
		},
		"patient": SearchParamInfo{
			Resource: "DocumentManifest",
			Name:     "patient",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "subject", Type: "Reference"},
			},
			Targets: []string{
				"Patient",
			},
		},
		"recipient": SearchParamInfo{
			Resource: "DocumentManifest",
			Name:     "recipient",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]recipient", Type: "Reference"},
			},
			Targets: []string{
				"Organization",
				"Patient",
				"Practitioner",
				"RelatedPerson",
			},
		},
		"related-id": SearchParamInfo{
			Resource: "DocumentManifest",
			Name:     "related-id",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]related.identifier", Type: "Identifier"},
			},
		},
		"related-ref": SearchParamInfo{
			Resource: "DocumentManifest",
			Name:     "related-ref",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]related.ref", Type: "Reference"},
			},
			Targets: []string{
				"Any",
			},
		},
		"source": SearchParamInfo{
			Resource: "DocumentManifest",
			Name:     "source",
			Type:     "uri",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "source", Type: "uri"},
			},
		},
		"status": SearchParamInfo{
			Resource: "DocumentManifest",
			Name:     "status",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "status", Type: "code"},
			},
		},
		"subject": SearchParamInfo{
			Resource: "DocumentManifest",
			Name:     "subject",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "subject", Type: "Reference"},
			},
			Targets: []string{
				"Device",
				"Group",
				"Patient",
				"Practitioner",
			},
		},
		"type": SearchParamInfo{
			Resource: "DocumentManifest",
			Name:     "type",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "type", Type: "CodeableConcept"},
			},
		},
	},
	"DocumentReference": map[string]SearchParamInfo{
		"_id": SearchParamInfo{
			Resource: "DocumentReference",
			Name:     "_id",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "_id", Type: "id"},
			},
		},
		"_lastUpdated": SearchParamInfo{
			Resource: "DocumentReference",
			Name:     "_lastUpdated",
			Type:     "date",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.lastUpdated", Type: "instant"},
			},
		},
		"_profile": SearchParamInfo{
			Resource: "DocumentReference",
			Name:     "_profile",
			Type:     "uri",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]profile", Type: "uri"},
			},
		},
		"_security": SearchParamInfo{
			Resource: "DocumentReference",
			Name:     "_security",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]security", Type: "Coding"},
			},
		},
		"_tag": SearchParamInfo{
			Resource: "DocumentReference",
			Name:     "_tag",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]tag", Type: "Coding"},
			},
		},
		"authenticator": SearchParamInfo{
			Resource: "DocumentReference",
			Name:     "authenticator",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "authenticator", Type: "Reference"},
			},
			Targets: []string{
				"Organization",
				"Practitioner",
			},
		},
		"author": SearchParamInfo{
			Resource: "DocumentReference",
			Name:     "author",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]author", Type: "Reference"},
			},
			Targets: []string{
				"Device",
				"Organization",
				"Patient",
				"Practitioner",
				"RelatedPerson",
			},
		},
		"class": SearchParamInfo{
			Resource: "DocumentReference",
			Name:     "class",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "class", Type: "CodeableConcept"},
			},
		},
		"created": SearchParamInfo{
			Resource: "DocumentReference",
			Name:     "created",
			Type:     "date",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "created", Type: "dateTime"},
			},
		},
		"custodian": SearchParamInfo{
			Resource: "DocumentReference",
			Name:     "custodian",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "custodian", Type: "Reference"},
			},
			Targets: []string{
				"Organization",
			},
		},
		"description": SearchParamInfo{
			Resource: "DocumentReference",
			Name:     "description",
			Type:     "string",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "description", Type: "string"},
			},
		},
		"encounter": SearchParamInfo{
			Resource: "DocumentReference",
			Name:     "encounter",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "context.encounter", Type: "Reference"},
			},
			Targets: []string{
				"Encounter",
			},
		},
		"event": SearchParamInfo{
			Resource: "DocumentReference",
			Name:     "event",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "context.[]event", Type: "CodeableConcept"},
			},
		},
		"facility": SearchParamInfo{
			Resource: "DocumentReference",
			Name:     "facility",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "context.facilityType", Type: "CodeableConcept"},
			},
		},
		"format": SearchParamInfo{
			Resource: "DocumentReference",
			Name:     "format",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]content.[]format", Type: "Coding"},
			},
		},
		"identifier": SearchParamInfo{
			Resource: "DocumentReference",
			Name:     "identifier",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]identifier", Type: "Identifier"},
				SearchParamPath{Path: "masterIdentifier", Type: "Identifier"},
			},
		},
		"indexed": SearchParamInfo{
			Resource: "DocumentReference",
			Name:     "indexed",
			Type:     "date",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "indexed", Type: "instant"},
			},
		},
		"language": SearchParamInfo{
			Resource: "DocumentReference",
			Name:     "language",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]content.attachment.language", Type: "code"},
			},
		},
		"location": SearchParamInfo{
			Resource: "DocumentReference",
			Name:     "location",
			Type:     "uri",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]content.attachment.url", Type: "uri"},
			},
		},
		"patient": SearchParamInfo{
			Resource: "DocumentReference",
			Name:     "patient",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "subject", Type: "Reference"},
			},
			Targets: []string{
				"Patient",
			},
		},
		"period": SearchParamInfo{
			Resource: "DocumentReference",
			Name:     "period",
			Type:     "date",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "context.period", Type: "Period"},
			},
		},
		"related-id": SearchParamInfo{
			Resource: "DocumentReference",
			Name:     "related-id",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "context.[]related.identifier", Type: "Identifier"},
			},
		},
		"related-ref": SearchParamInfo{
			Resource: "DocumentReference",
			Name:     "related-ref",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "context.[]related.ref", Type: "Reference"},
			},
			Targets: []string{
				"Any",
			},
		},
		"relatesto": SearchParamInfo{
			Resource: "DocumentReference",
			Name:     "relatesto",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]relatesTo.target", Type: "Reference"},
			},
			Targets: []string{
				"DocumentReference",
			},
		},
		"relation": SearchParamInfo{
			Resource: "DocumentReference",
			Name:     "relation",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]relatesTo.code", Type: "code"},
			},
		},
		"securitylabel": SearchParamInfo{
			Resource: "DocumentReference",
			Name:     "securitylabel",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]securityLabel", Type: "CodeableConcept"},
			},
		},
		"setting": SearchParamInfo{
			Resource: "DocumentReference",
			Name:     "setting",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "context.practiceSetting", Type: "CodeableConcept"},
			},
		},
		"status": SearchParamInfo{
			Resource: "DocumentReference",
			Name:     "status",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "status", Type: "code"},
			},
		},
		"subject": SearchParamInfo{
			Resource: "DocumentReference",
			Name:     "subject",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "subject", Type: "Reference"},
			},
			Targets: []string{
				"Device",
				"Group",
				"Patient",
				"Practitioner",
			},
		},
		"type": SearchParamInfo{
			Resource: "DocumentReference",
			Name:     "type",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "type", Type: "CodeableConcept"},
			},
		},
	},
	"EligibilityRequest": map[string]SearchParamInfo{
		"_id": SearchParamInfo{
			Resource: "EligibilityRequest",
			Name:     "_id",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "_id", Type: "id"},
			},
		},
		"_lastUpdated": SearchParamInfo{
			Resource: "EligibilityRequest",
			Name:     "_lastUpdated",
			Type:     "date",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.lastUpdated", Type: "instant"},
			},
		},
		"_profile": SearchParamInfo{
			Resource: "EligibilityRequest",
			Name:     "_profile",
			Type:     "uri",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]profile", Type: "uri"},
			},
		},
		"_security": SearchParamInfo{
			Resource: "EligibilityRequest",
			Name:     "_security",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]security", Type: "Coding"},
			},
		},
		"_tag": SearchParamInfo{
			Resource: "EligibilityRequest",
			Name:     "_tag",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]tag", Type: "Coding"},
			},
		},
		"identifier": SearchParamInfo{
			Resource: "EligibilityRequest",
			Name:     "identifier",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]identifier", Type: "Identifier"},
			},
		},
	},
	"EligibilityResponse": map[string]SearchParamInfo{
		"_id": SearchParamInfo{
			Resource: "EligibilityResponse",
			Name:     "_id",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "_id", Type: "id"},
			},
		},
		"_lastUpdated": SearchParamInfo{
			Resource: "EligibilityResponse",
			Name:     "_lastUpdated",
			Type:     "date",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.lastUpdated", Type: "instant"},
			},
		},
		"_profile": SearchParamInfo{
			Resource: "EligibilityResponse",
			Name:     "_profile",
			Type:     "uri",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]profile", Type: "uri"},
			},
		},
		"_security": SearchParamInfo{
			Resource: "EligibilityResponse",
			Name:     "_security",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]security", Type: "Coding"},
			},
		},
		"_tag": SearchParamInfo{
			Resource: "EligibilityResponse",
			Name:     "_tag",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]tag", Type: "Coding"},
			},
		},
		"identifier": SearchParamInfo{
			Resource: "EligibilityResponse",
			Name:     "identifier",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]identifier", Type: "Identifier"},
			},
		},
	},
	"Encounter": map[string]SearchParamInfo{
		"_id": SearchParamInfo{
			Resource: "Encounter",
			Name:     "_id",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "_id", Type: "id"},
			},
		},
		"_lastUpdated": SearchParamInfo{
			Resource: "Encounter",
			Name:     "_lastUpdated",
			Type:     "date",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.lastUpdated", Type: "instant"},
			},
		},
		"_profile": SearchParamInfo{
			Resource: "Encounter",
			Name:     "_profile",
			Type:     "uri",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]profile", Type: "uri"},
			},
		},
		"_security": SearchParamInfo{
			Resource: "Encounter",
			Name:     "_security",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]security", Type: "Coding"},
			},
		},
		"_tag": SearchParamInfo{
			Resource: "Encounter",
			Name:     "_tag",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]tag", Type: "Coding"},
			},
		},
		"appointment": SearchParamInfo{
			Resource: "Encounter",
			Name:     "appointment",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "appointment", Type: "Reference"},
			},
			Targets: []string{
				"Appointment",
			},
		},
		"condition": SearchParamInfo{
			Resource: "Encounter",
			Name:     "condition",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]indication", Type: "Reference"},
			},
			Targets: []string{
				"Condition",
			},
		},
		"date": SearchParamInfo{
			Resource: "Encounter",
			Name:     "date",
			Type:     "date",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "period", Type: "Period"},
			},
		},
		"episodeofcare": SearchParamInfo{
			Resource: "Encounter",
			Name:     "episodeofcare",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]episodeOfCare", Type: "Reference"},
			},
			Targets: []string{
				"EpisodeOfCare",
			},
		},
		"identifier": SearchParamInfo{
			Resource: "Encounter",
			Name:     "identifier",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]identifier", Type: "Identifier"},
			},
		},
		"incomingreferral": SearchParamInfo{
			Resource: "Encounter",
			Name:     "incomingreferral",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]incomingReferral", Type: "Reference"},
			},
			Targets: []string{
				"ReferralRequest",
			},
		},
		"indication": SearchParamInfo{
			Resource: "Encounter",
			Name:     "indication",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]indication", Type: "Reference"},
			},
			Targets: []string{
				"Condition",
				"Procedure",
			},
		},
		"length": SearchParamInfo{
			Resource: "Encounter",
			Name:     "length",
			Type:     "number",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "length", Type: "Duration"},
			},
		},
		"location": SearchParamInfo{
			Resource: "Encounter",
			Name:     "location",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]location.location", Type: "Reference"},
			},
			Targets: []string{
				"Location",
			},
		},
		"location-period": SearchParamInfo{
			Resource: "Encounter",
			Name:     "location-period",
			Type:     "date",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]location.period", Type: "Period"},
			},
		},
		"part-of": SearchParamInfo{
			Resource: "Encounter",
			Name:     "part-of",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "partOf", Type: "Reference"},
			},
			Targets: []string{
				"Encounter",
			},
		},
		"participant": SearchParamInfo{
			Resource: "Encounter",
			Name:     "participant",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]participant.individual", Type: "Reference"},
			},
			Targets: []string{
				"Practitioner",
				"RelatedPerson",
			},
		},
		"participant-type": SearchParamInfo{
			Resource: "Encounter",
			Name:     "participant-type",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]participant.[]type", Type: "CodeableConcept"},
			},
		},
		"patient": SearchParamInfo{
			Resource: "Encounter",
			Name:     "patient",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "patient", Type: "Reference"},
			},
			Targets: []string{
				"Patient",
			},
		},
		"practitioner": SearchParamInfo{
			Resource: "Encounter",
			Name:     "practitioner",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]participant.individual", Type: "Reference"},
			},
			Targets: []string{
				"Practitioner",
			},
		},
		"procedure": SearchParamInfo{
			Resource: "Encounter",
			Name:     "procedure",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]indication", Type: "Reference"},
			},
			Targets: []string{
				"Procedure",
			},
		},
		"reason": SearchParamInfo{
			Resource: "Encounter",
			Name:     "reason",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]reason", Type: "CodeableConcept"},
			},
		},
		"special-arrangement": SearchParamInfo{
			Resource: "Encounter",
			Name:     "special-arrangement",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "hospitalization.[]specialArrangement", Type: "CodeableConcept"},
			},
		},
		"status": SearchParamInfo{
			Resource: "Encounter",
			Name:     "status",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "status", Type: "code"},
			},
		},
		"type": SearchParamInfo{
			Resource: "Encounter",
			Name:     "type",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]type", Type: "CodeableConcept"},
			},
		},
	},
	"EnrollmentRequest": map[string]SearchParamInfo{
		"_id": SearchParamInfo{
			Resource: "EnrollmentRequest",
			Name:     "_id",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "_id", Type: "id"},
			},
		},
		"_lastUpdated": SearchParamInfo{
			Resource: "EnrollmentRequest",
			Name:     "_lastUpdated",
			Type:     "date",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.lastUpdated", Type: "instant"},
			},
		},
		"_profile": SearchParamInfo{
			Resource: "EnrollmentRequest",
			Name:     "_profile",
			Type:     "uri",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]profile", Type: "uri"},
			},
		},
		"_security": SearchParamInfo{
			Resource: "EnrollmentRequest",
			Name:     "_security",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]security", Type: "Coding"},
			},
		},
		"_tag": SearchParamInfo{
			Resource: "EnrollmentRequest",
			Name:     "_tag",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]tag", Type: "Coding"},
			},
		},
		"identifier": SearchParamInfo{
			Resource: "EnrollmentRequest",
			Name:     "identifier",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]identifier", Type: "Identifier"},
			},
		},
		"patient": SearchParamInfo{
			Resource: "EnrollmentRequest",
			Name:     "patient",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "subject", Type: "Reference"},
			},
			Targets: []string{
				"Patient",
			},
		},
		"subject": SearchParamInfo{
			Resource: "EnrollmentRequest",
			Name:     "subject",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "subject", Type: "Reference"},
			},
			Targets: []string{
				"Patient",
			},
		},
	},
	"EnrollmentResponse": map[string]SearchParamInfo{
		"_id": SearchParamInfo{
			Resource: "EnrollmentResponse",
			Name:     "_id",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "_id", Type: "id"},
			},
		},
		"_lastUpdated": SearchParamInfo{
			Resource: "EnrollmentResponse",
			Name:     "_lastUpdated",
			Type:     "date",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.lastUpdated", Type: "instant"},
			},
		},
		"_profile": SearchParamInfo{
			Resource: "EnrollmentResponse",
			Name:     "_profile",
			Type:     "uri",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]profile", Type: "uri"},
			},
		},
		"_security": SearchParamInfo{
			Resource: "EnrollmentResponse",
			Name:     "_security",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]security", Type: "Coding"},
			},
		},
		"_tag": SearchParamInfo{
			Resource: "EnrollmentResponse",
			Name:     "_tag",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]tag", Type: "Coding"},
			},
		},
		"identifier": SearchParamInfo{
			Resource: "EnrollmentResponse",
			Name:     "identifier",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]identifier", Type: "Identifier"},
			},
		},
	},
	"EpisodeOfCare": map[string]SearchParamInfo{
		"_id": SearchParamInfo{
			Resource: "EpisodeOfCare",
			Name:     "_id",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "_id", Type: "id"},
			},
		},
		"_lastUpdated": SearchParamInfo{
			Resource: "EpisodeOfCare",
			Name:     "_lastUpdated",
			Type:     "date",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.lastUpdated", Type: "instant"},
			},
		},
		"_profile": SearchParamInfo{
			Resource: "EpisodeOfCare",
			Name:     "_profile",
			Type:     "uri",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]profile", Type: "uri"},
			},
		},
		"_security": SearchParamInfo{
			Resource: "EpisodeOfCare",
			Name:     "_security",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]security", Type: "Coding"},
			},
		},
		"_tag": SearchParamInfo{
			Resource: "EpisodeOfCare",
			Name:     "_tag",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]tag", Type: "Coding"},
			},
		},
		"care-manager": SearchParamInfo{
			Resource: "EpisodeOfCare",
			Name:     "care-manager",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "careManager", Type: "Reference"},
			},
			Targets: []string{
				"Practitioner",
			},
		},
		"condition": SearchParamInfo{
			Resource: "EpisodeOfCare",
			Name:     "condition",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]condition", Type: "Reference"},
			},
			Targets: []string{
				"Condition",
			},
		},
		"date": SearchParamInfo{
			Resource: "EpisodeOfCare",
			Name:     "date",
			Type:     "date",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "period", Type: "Period"},
			},
		},
		"identifier": SearchParamInfo{
			Resource: "EpisodeOfCare",
			Name:     "identifier",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]identifier", Type: "Identifier"},
			},
		},
		"incomingreferral": SearchParamInfo{
			Resource: "EpisodeOfCare",
			Name:     "incomingreferral",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]referralRequest", Type: "Reference"},
			},
			Targets: []string{
				"ReferralRequest",
			},
		},
		"organization": SearchParamInfo{
			Resource: "EpisodeOfCare",
			Name:     "organization",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "managingOrganization", Type: "Reference"},
			},
			Targets: []string{
				"Organization",
			},
		},
		"patient": SearchParamInfo{
			Resource: "EpisodeOfCare",
			Name:     "patient",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "patient", Type: "Reference"},
			},
			Targets: []string{
				"Patient",
			},
		},
		"status": SearchParamInfo{
			Resource: "EpisodeOfCare",
			Name:     "status",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "status", Type: "code"},
			},
		},
		"team-member": SearchParamInfo{
			Resource: "EpisodeOfCare",
			Name:     "team-member",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]careTeam.member", Type: "Reference"},
			},
			Targets: []string{
				"Organization",
				"Practitioner",
			},
		},
		"type": SearchParamInfo{
			Resource: "EpisodeOfCare",
			Name:     "type",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]type", Type: "CodeableConcept"},
			},
		},
	},
	"ExplanationOfBenefit": map[string]SearchParamInfo{
		"_id": SearchParamInfo{
			Resource: "ExplanationOfBenefit",
			Name:     "_id",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "_id", Type: "id"},
			},
		},
		"_lastUpdated": SearchParamInfo{
			Resource: "ExplanationOfBenefit",
			Name:     "_lastUpdated",
			Type:     "date",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.lastUpdated", Type: "instant"},
			},
		},
		"_profile": SearchParamInfo{
			Resource: "ExplanationOfBenefit",
			Name:     "_profile",
			Type:     "uri",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]profile", Type: "uri"},
			},
		},
		"_security": SearchParamInfo{
			Resource: "ExplanationOfBenefit",
			Name:     "_security",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]security", Type: "Coding"},
			},
		},
		"_tag": SearchParamInfo{
			Resource: "ExplanationOfBenefit",
			Name:     "_tag",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]tag", Type: "Coding"},
			},
		},
		"identifier": SearchParamInfo{
			Resource: "ExplanationOfBenefit",
			Name:     "identifier",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]identifier", Type: "Identifier"},
			},
		},
	},
	"FamilyMemberHistory": map[string]SearchParamInfo{
		"_id": SearchParamInfo{
			Resource: "FamilyMemberHistory",
			Name:     "_id",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "_id", Type: "id"},
			},
		},
		"_lastUpdated": SearchParamInfo{
			Resource: "FamilyMemberHistory",
			Name:     "_lastUpdated",
			Type:     "date",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.lastUpdated", Type: "instant"},
			},
		},
		"_profile": SearchParamInfo{
			Resource: "FamilyMemberHistory",
			Name:     "_profile",
			Type:     "uri",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]profile", Type: "uri"},
			},
		},
		"_security": SearchParamInfo{
			Resource: "FamilyMemberHistory",
			Name:     "_security",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]security", Type: "Coding"},
			},
		},
		"_tag": SearchParamInfo{
			Resource: "FamilyMemberHistory",
			Name:     "_tag",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]tag", Type: "Coding"},
			},
		},
		"code": SearchParamInfo{
			Resource: "FamilyMemberHistory",
			Name:     "code",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]condition.code", Type: "CodeableConcept"},
			},
		},
		"date": SearchParamInfo{
			Resource: "FamilyMemberHistory",
			Name:     "date",
			Type:     "date",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "date", Type: "dateTime"},
			},
		},
		"gender": SearchParamInfo{
			Resource: "FamilyMemberHistory",
			Name:     "gender",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "gender", Type: "code"},
			},
		},
		"identifier": SearchParamInfo{
			Resource: "FamilyMemberHistory",
			Name:     "identifier",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]identifier", Type: "Identifier"},
			},
		},
		"patient": SearchParamInfo{
			Resource: "FamilyMemberHistory",
			Name:     "patient",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "patient", Type: "Reference"},
			},
			Targets: []string{
				"Patient",
			},
		},
		"relationship": SearchParamInfo{
			Resource: "FamilyMemberHistory",
			Name:     "relationship",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "relationship", Type: "CodeableConcept"},
			},
		},
	},
	"Flag": map[string]SearchParamInfo{
		"_id": SearchParamInfo{
			Resource: "Flag",
			Name:     "_id",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "_id", Type: "id"},
			},
		},
		"_lastUpdated": SearchParamInfo{
			Resource: "Flag",
			Name:     "_lastUpdated",
			Type:     "date",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.lastUpdated", Type: "instant"},
			},
		},
		"_profile": SearchParamInfo{
			Resource: "Flag",
			Name:     "_profile",
			Type:     "uri",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]profile", Type: "uri"},
			},
		},
		"_security": SearchParamInfo{
			Resource: "Flag",
			Name:     "_security",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]security", Type: "Coding"},
			},
		},
		"_tag": SearchParamInfo{
			Resource: "Flag",
			Name:     "_tag",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]tag", Type: "Coding"},
			},
		},
		"author": SearchParamInfo{
			Resource: "Flag",
			Name:     "author",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "author", Type: "Reference"},
			},
			Targets: []string{
				"Device",
				"Organization",
				"Patient",
				"Practitioner",
			},
		},
		"date": SearchParamInfo{
			Resource: "Flag",
			Name:     "date",
			Type:     "date",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "period", Type: "Period"},
			},
		},
		"encounter": SearchParamInfo{
			Resource: "Flag",
			Name:     "encounter",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "encounter", Type: "Reference"},
			},
			Targets: []string{
				"Encounter",
			},
		},
		"patient": SearchParamInfo{
			Resource: "Flag",
			Name:     "patient",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "subject", Type: "Reference"},
			},
			Targets: []string{
				"Patient",
			},
		},
		"subject": SearchParamInfo{
			Resource: "Flag",
			Name:     "subject",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "subject", Type: "Reference"},
			},
			Targets: []string{
				"Group",
				"Location",
				"Organization",
				"Patient",
				"Practitioner",
			},
		},
	},
	"Goal": map[string]SearchParamInfo{
		"_id": SearchParamInfo{
			Resource: "Goal",
			Name:     "_id",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "_id", Type: "id"},
			},
		},
		"_lastUpdated": SearchParamInfo{
			Resource: "Goal",
			Name:     "_lastUpdated",
			Type:     "date",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.lastUpdated", Type: "instant"},
			},
		},
		"_profile": SearchParamInfo{
			Resource: "Goal",
			Name:     "_profile",
			Type:     "uri",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]profile", Type: "uri"},
			},
		},
		"_security": SearchParamInfo{
			Resource: "Goal",
			Name:     "_security",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]security", Type: "Coding"},
			},
		},
		"_tag": SearchParamInfo{
			Resource: "Goal",
			Name:     "_tag",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]tag", Type: "Coding"},
			},
		},
		"category": SearchParamInfo{
			Resource: "Goal",
			Name:     "category",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]category", Type: "CodeableConcept"},
			},
		},
		"identifier": SearchParamInfo{
			Resource: "Goal",
			Name:     "identifier",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]identifier", Type: "Identifier"},
			},
		},
		"patient": SearchParamInfo{
			Resource: "Goal",
			Name:     "patient",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "subject", Type: "Reference"},
			},
			Targets: []string{
				"Patient",
			},
		},
		"status": SearchParamInfo{
			Resource: "Goal",
			Name:     "status",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "status", Type: "code"},
			},
		},
		"subject": SearchParamInfo{
			Resource: "Goal",
			Name:     "subject",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "subject", Type: "Reference"},
			},
			Targets: []string{
				"Group",
				"Organization",
				"Patient",
			},
		},
		"targetdate": SearchParamInfo{
			Resource: "Goal",
			Name:     "targetdate",
			Type:     "date",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "targetDate", Type: "date"},
			},
		},
	},
	"Group": map[string]SearchParamInfo{
		"_id": SearchParamInfo{
			Resource: "Group",
			Name:     "_id",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "_id", Type: "id"},
			},
		},
		"_lastUpdated": SearchParamInfo{
			Resource: "Group",
			Name:     "_lastUpdated",
			Type:     "date",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.lastUpdated", Type: "instant"},
			},
		},
		"_profile": SearchParamInfo{
			Resource: "Group",
			Name:     "_profile",
			Type:     "uri",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]profile", Type: "uri"},
			},
		},
		"_security": SearchParamInfo{
			Resource: "Group",
			Name:     "_security",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]security", Type: "Coding"},
			},
		},
		"_tag": SearchParamInfo{
			Resource: "Group",
			Name:     "_tag",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]tag", Type: "Coding"},
			},
		},
		"actual": SearchParamInfo{
			Resource: "Group",
			Name:     "actual",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "actual", Type: "boolean"},
			},
		},
		"characteristic": SearchParamInfo{
			Resource: "Group",
			Name:     "characteristic",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]characteristic.code", Type: "CodeableConcept"},
			},
		},
		"code": SearchParamInfo{
			Resource: "Group",
			Name:     "code",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "code", Type: "CodeableConcept"},
			},
		},
		"exclude": SearchParamInfo{
			Resource: "Group",
			Name:     "exclude",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]characteristic.exclude", Type: "boolean"},
			},
		},
		"identifier": SearchParamInfo{
			Resource: "Group",
			Name:     "identifier",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]identifier", Type: "Identifier"},
			},
		},
		"member": SearchParamInfo{
			Resource: "Group",
			Name:     "member",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]member.entity", Type: "Reference"},
			},
			Targets: []string{
				"Device",
				"Medication",
				"Patient",
				"Practitioner",
				"Substance",
			},
		},
		"type": SearchParamInfo{
			Resource: "Group",
			Name:     "type",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "type", Type: "code"},
			},
		},
		"value": SearchParamInfo{
			Resource: "Group",
			Name:     "value",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]characteristic.valueBoolean", Type: "boolean"},
				SearchParamPath{Path: "[]characteristic.valueCodeableConcept", Type: "CodeableConcept"},
			},
		},
	},
	"HealthcareService": map[string]SearchParamInfo{
		"_id": SearchParamInfo{
			Resource: "HealthcareService",
			Name:     "_id",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "_id", Type: "id"},
			},
		},
		"_lastUpdated": SearchParamInfo{
			Resource: "HealthcareService",
			Name:     "_lastUpdated",
			Type:     "date",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.lastUpdated", Type: "instant"},
			},
		},
		"_profile": SearchParamInfo{
			Resource: "HealthcareService",
			Name:     "_profile",
			Type:     "uri",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]profile", Type: "uri"},
			},
		},
		"_security": SearchParamInfo{
			Resource: "HealthcareService",
			Name:     "_security",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]security", Type: "Coding"},
			},
		},
		"_tag": SearchParamInfo{
			Resource: "HealthcareService",
			Name:     "_tag",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]tag", Type: "Coding"},
			},
		},
		"characteristic": SearchParamInfo{
			Resource: "HealthcareService",
			Name:     "characteristic",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]characteristic", Type: "CodeableConcept"},
			},
		},
		"identifier": SearchParamInfo{
			Resource: "HealthcareService",
			Name:     "identifier",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]identifier", Type: "Identifier"},
			},
		},
		"location": SearchParamInfo{
			Resource: "HealthcareService",
			Name:     "location",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "location", Type: "Reference"},
			},
			Targets: []string{
				"Location",
			},
		},
		"name": SearchParamInfo{
			Resource: "HealthcareService",
			Name:     "name",
			Type:     "string",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "serviceName", Type: "string"},
			},
		},
		"organization": SearchParamInfo{
			Resource: "HealthcareService",
			Name:     "organization",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "providedBy", Type: "Reference"},
			},
			Targets: []string{
				"Organization",
			},
		},
		"programname": SearchParamInfo{
			Resource: "HealthcareService",
			Name:     "programname",
			Type:     "string",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]programName", Type: "string"},
			},
		},
		"servicecategory": SearchParamInfo{
			Resource: "HealthcareService",
			Name:     "servicecategory",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "serviceCategory", Type: "CodeableConcept"},
			},
		},
		"servicetype": SearchParamInfo{
			Resource: "HealthcareService",
			Name:     "servicetype",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]serviceType.type", Type: "CodeableConcept"},
			},
		},
	},
	"ImagingObjectSelection": map[string]SearchParamInfo{
		"_id": SearchParamInfo{
			Resource: "ImagingObjectSelection",
			Name:     "_id",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "_id", Type: "id"},
			},
		},
		"_lastUpdated": SearchParamInfo{
			Resource: "ImagingObjectSelection",
			Name:     "_lastUpdated",
			Type:     "date",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.lastUpdated", Type: "instant"},
			},
		},
		"_profile": SearchParamInfo{
			Resource: "ImagingObjectSelection",
			Name:     "_profile",
			Type:     "uri",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]profile", Type: "uri"},
			},
		},
		"_security": SearchParamInfo{
			Resource: "ImagingObjectSelection",
			Name:     "_security",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]security", Type: "Coding"},
			},
		},
		"_tag": SearchParamInfo{
			Resource: "ImagingObjectSelection",
			Name:     "_tag",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]tag", Type: "Coding"},
			},
		},
		"author": SearchParamInfo{
			Resource: "ImagingObjectSelection",
			Name:     "author",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "author", Type: "Reference"},
			},
			Targets: []string{
				"Device",
				"Organization",
				"Patient",
				"Practitioner",
				"RelatedPerson",
			},
		},
		"authoring-time": SearchParamInfo{
			Resource: "ImagingObjectSelection",
			Name:     "authoring-time",
			Type:     "date",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "authoringTime", Type: "dateTime"},
			},
		},
		"identifier": SearchParamInfo{
			Resource: "ImagingObjectSelection",
			Name:     "identifier",
			Type:     "uri",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "uid", Type: "oid"},
			},
		},
		"patient": SearchParamInfo{
			Resource: "ImagingObjectSelection",
			Name:     "patient",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "patient", Type: "Reference"},
			},
			Targets: []string{
				"Patient",
			},
		},
		"selected-study": SearchParamInfo{
			Resource: "ImagingObjectSelection",
			Name:     "selected-study",
			Type:     "uri",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]study.uid", Type: "oid"},
			},
		},
		"title": SearchParamInfo{
			Resource: "ImagingObjectSelection",
			Name:     "title",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "title", Type: "CodeableConcept"},
			},
		},
	},
	"ImagingStudy": map[string]SearchParamInfo{
		"_id": SearchParamInfo{
			Resource: "ImagingStudy",
			Name:     "_id",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "_id", Type: "id"},
			},
		},
		"_lastUpdated": SearchParamInfo{
			Resource: "ImagingStudy",
			Name:     "_lastUpdated",
			Type:     "date",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.lastUpdated", Type: "instant"},
			},
		},
		"_profile": SearchParamInfo{
			Resource: "ImagingStudy",
			Name:     "_profile",
			Type:     "uri",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]profile", Type: "uri"},
			},
		},
		"_security": SearchParamInfo{
			Resource: "ImagingStudy",
			Name:     "_security",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]security", Type: "Coding"},
			},
		},
		"_tag": SearchParamInfo{
			Resource: "ImagingStudy",
			Name:     "_tag",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]tag", Type: "Coding"},
			},
		},
		"accession": SearchParamInfo{
			Resource: "ImagingStudy",
			Name:     "accession",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "accession", Type: "Identifier"},
			},
		},
		"bodysite": SearchParamInfo{
			Resource: "ImagingStudy",
			Name:     "bodysite",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]series.bodySite", Type: "Coding"},
			},
		},
		"dicom-class": SearchParamInfo{
			Resource: "ImagingStudy",
			Name:     "dicom-class",
			Type:     "uri",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]series.[]instance.sopClass", Type: "oid"},
			},
		},
		"modality": SearchParamInfo{
			Resource: "ImagingStudy",
			Name:     "modality",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]series.modality", Type: "Coding"},
			},
		},
		"order": SearchParamInfo{
			Resource: "ImagingStudy",
			Name:     "order",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]order", Type: "Reference"},
			},
			Targets: []string{
				"DiagnosticOrder",
			},
		},
		"patient": SearchParamInfo{
			Resource: "ImagingStudy",
			Name:     "patient",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "patient", Type: "Reference"},
			},
			Targets: []string{
				"Patient",
			},
		},
		"series": SearchParamInfo{
			Resource: "ImagingStudy",
			Name:     "series",
			Type:     "uri",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]series.uid", Type: "oid"},
			},
		},
		"started": SearchParamInfo{
			Resource: "ImagingStudy",
			Name:     "started",
			Type:     "date",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "started", Type: "dateTime"},
			},
		},
		"study": SearchParamInfo{
			Resource: "ImagingStudy",
			Name:     "study",
			Type:     "uri",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "uid", Type: "oid"},
			},
		},
		"uid": SearchParamInfo{
			Resource: "ImagingStudy",
			Name:     "uid",
			Type:     "uri",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]series.[]instance.uid", Type: "oid"},
			},
		},
	},
	"Immunization": map[string]SearchParamInfo{
		"_id": SearchParamInfo{
			Resource: "Immunization",
			Name:     "_id",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "_id", Type: "id"},
			},
		},
		"_lastUpdated": SearchParamInfo{
			Resource: "Immunization",
			Name:     "_lastUpdated",
			Type:     "date",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.lastUpdated", Type: "instant"},
			},
		},
		"_profile": SearchParamInfo{
			Resource: "Immunization",
			Name:     "_profile",
			Type:     "uri",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]profile", Type: "uri"},
			},
		},
		"_security": SearchParamInfo{
			Resource: "Immunization",
			Name:     "_security",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]security", Type: "Coding"},
			},
		},
		"_tag": SearchParamInfo{
			Resource: "Immunization",
			Name:     "_tag",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]tag", Type: "Coding"},
			},
		},
		"date": SearchParamInfo{
			Resource: "Immunization",
			Name:     "date",
			Type:     "date",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "date", Type: "dateTime"},
			},
		},
		"dose-sequence": SearchParamInfo{
			Resource: "Immunization",
			Name:     "dose-sequence",
			Type:     "number",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]vaccinationProtocol.doseSequence", Type: "positiveInt"},
			},
		},
		"identifier": SearchParamInfo{
			Resource: "Immunization",
			Name:     "identifier",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]identifier", Type: "Identifier"},
			},
		},
		"location": SearchParamInfo{
			Resource: "Immunization",
			Name:     "location",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "location", Type: "Reference"},
			},
			Targets: []string{
				"Location",
			},
		},
		"lot-number": SearchParamInfo{
			Resource: "Immunization",
			Name:     "lot-number",
			Type:     "string",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "lotNumber", Type: "string"},
			},
		},
		"manufacturer": SearchParamInfo{
			Resource: "Immunization",
			Name:     "manufacturer",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "manufacturer", Type: "Reference"},
			},
			Targets: []string{
				"Organization",
			},
		},
		"notgiven": SearchParamInfo{
			Resource: "Immunization",
			Name:     "notgiven",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "wasNotGiven", Type: "boolean"},
			},
		},
		"patient": SearchParamInfo{
			Resource: "Immunization",
			Name:     "patient",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "patient", Type: "Reference"},
			},
			Targets: []string{
				"Patient",
			},
		},
		"performer": SearchParamInfo{
			Resource: "Immunization",
			Name:     "performer",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "performer", Type: "Reference"},
			},
			Targets: []string{
				"Practitioner",
			},
		},
		"reaction": SearchParamInfo{
			Resource: "Immunization",
			Name:     "reaction",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]reaction.detail", Type: "Reference"},
			},
			Targets: []string{
				"Observation",
			},
		},
		"reaction-date": SearchParamInfo{
			Resource: "Immunization",
			Name:     "reaction-date",
			Type:     "date",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]reaction.date", Type: "dateTime"},
			},
		},
		"reason": SearchParamInfo{
			Resource: "Immunization",
			Name:     "reason",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "explanation.[]reason", Type: "CodeableConcept"},
			},
		},
		"reason-not-given": SearchParamInfo{
			Resource: "Immunization",
			Name:     "reason-not-given",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "explanation.[]reasonNotGiven", Type: "CodeableConcept"},
			},
		},
		"requester": SearchParamInfo{
			Resource: "Immunization",
			Name:     "requester",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "requester", Type: "Reference"},
			},
			Targets: []string{
				"Practitioner",
			},
		},
		"status": SearchParamInfo{
			Resource: "Immunization",
			Name:     "status",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "status", Type: "code"},
			},
		},
		"vaccine-code": SearchParamInfo{
			Resource: "Immunization",
			Name:     "vaccine-code",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "vaccineCode", Type: "CodeableConcept"},
			},
		},
	},
	"ImmunizationRecommendation": map[string]SearchParamInfo{
		"_id": SearchParamInfo{
			Resource: "ImmunizationRecommendation",
			Name:     "_id",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "_id", Type: "id"},
			},
		},
		"_lastUpdated": SearchParamInfo{
			Resource: "ImmunizationRecommendation",
			Name:     "_lastUpdated",
			Type:     "date",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.lastUpdated", Type: "instant"},
			},
		},
		"_profile": SearchParamInfo{
			Resource: "ImmunizationRecommendation",
			Name:     "_profile",
			Type:     "uri",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]profile", Type: "uri"},
			},
		},
		"_security": SearchParamInfo{
			Resource: "ImmunizationRecommendation",
			Name:     "_security",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]security", Type: "Coding"},
			},
		},
		"_tag": SearchParamInfo{
			Resource: "ImmunizationRecommendation",
			Name:     "_tag",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]tag", Type: "Coding"},
			},
		},
		"date": SearchParamInfo{
			Resource: "ImmunizationRecommendation",
			Name:     "date",
			Type:     "date",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]recommendation.date", Type: "dateTime"},
			},
		},
		"dose-number": SearchParamInfo{
			Resource: "ImmunizationRecommendation",
			Name:     "dose-number",
			Type:     "number",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]recommendation.doseNumber", Type: "positiveInt"},
			},
		},
		"dose-sequence": SearchParamInfo{
			Resource: "ImmunizationRecommendation",
			Name:     "dose-sequence",
			Type:     "number",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]recommendation.protocol.doseSequence", Type: "integer"},
			},
		},
		"identifier": SearchParamInfo{
			Resource: "ImmunizationRecommendation",
			Name:     "identifier",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]identifier", Type: "Identifier"},
			},
		},
		"information": SearchParamInfo{
			Resource: "ImmunizationRecommendation",
			Name:     "information",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]recommendation.[]supportingPatientInformation", Type: "Reference"},
			},
			Targets: []string{
				"AllergyIntolerance",
				"Observation",
			},
		},
		"patient": SearchParamInfo{
			Resource: "ImmunizationRecommendation",
			Name:     "patient",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "patient", Type: "Reference"},
			},
			Targets: []string{
				"Patient",
			},
		},
		"status": SearchParamInfo{
			Resource: "ImmunizationRecommendation",
			Name:     "status",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]recommendation.forecastStatus", Type: "CodeableConcept"},
			},
		},
		"support": SearchParamInfo{
			Resource: "ImmunizationRecommendation",
			Name:     "support",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]recommendation.[]supportingImmunization", Type: "Reference"},
			},
			Targets: []string{
				"Immunization",
			},
		},
		"vaccine-type": SearchParamInfo{
			Resource: "ImmunizationRecommendation",
			Name:     "vaccine-type",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]recommendation.vaccineCode", Type: "CodeableConcept"},
			},
		},
	},
	"ImplementationGuide": map[string]SearchParamInfo{
		"_id": SearchParamInfo{
			Resource: "ImplementationGuide",
			Name:     "_id",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "_id", Type: "id"},
			},
		},
		"_lastUpdated": SearchParamInfo{
			Resource: "ImplementationGuide",
			Name:     "_lastUpdated",
			Type:     "date",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.lastUpdated", Type: "instant"},
			},
		},
		"_profile": SearchParamInfo{
			Resource: "ImplementationGuide",
			Name:     "_profile",
			Type:     "uri",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]profile", Type: "uri"},
			},
		},
		"_security": SearchParamInfo{
			Resource: "ImplementationGuide",
			Name:     "_security",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]security", Type: "Coding"},
			},
		},
		"_tag": SearchParamInfo{
			Resource: "ImplementationGuide",
			Name:     "_tag",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]tag", Type: "Coding"},
			},
		},
		"context": SearchParamInfo{
			Resource: "ImplementationGuide",
			Name:     "context",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]useContext", Type: "CodeableConcept"},
			},
		},
		"date": SearchParamInfo{
			Resource: "ImplementationGuide",
			Name:     "date",
			Type:     "date",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "date", Type: "dateTime"},
			},
		},
		"dependency": SearchParamInfo{
			Resource: "ImplementationGuide",
			Name:     "dependency",
			Type:     "uri",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]dependency.uri", Type: "uri"},
			},
		},
		"description": SearchParamInfo{
			Resource: "ImplementationGuide",
			Name:     "description",
			Type:     "string",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "description", Type: "string"},
			},
		},
		"experimental": SearchParamInfo{
			Resource: "ImplementationGuide",
			Name:     "experimental",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "experimental", Type: "boolean"},
			},
		},
		"name": SearchParamInfo{
			Resource: "ImplementationGuide",
			Name:     "name",
			Type:     "string",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "name", Type: "string"},
			},
		},
		"publisher": SearchParamInfo{
			Resource: "ImplementationGuide",
			Name:     "publisher",
			Type:     "string",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "publisher", Type: "string"},
			},
		},
		"status": SearchParamInfo{
			Resource: "ImplementationGuide",
			Name:     "status",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "status", Type: "code"},
			},
		},
		"url": SearchParamInfo{
			Resource: "ImplementationGuide",
			Name:     "url",
			Type:     "uri",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "url", Type: "uri"},
			},
		},
		"version": SearchParamInfo{
			Resource: "ImplementationGuide",
			Name:     "version",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "version", Type: "string"},
			},
		},
	},
	"List": map[string]SearchParamInfo{
		"_id": SearchParamInfo{
			Resource: "List",
			Name:     "_id",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "_id", Type: "id"},
			},
		},
		"_lastUpdated": SearchParamInfo{
			Resource: "List",
			Name:     "_lastUpdated",
			Type:     "date",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.lastUpdated", Type: "instant"},
			},
		},
		"_profile": SearchParamInfo{
			Resource: "List",
			Name:     "_profile",
			Type:     "uri",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]profile", Type: "uri"},
			},
		},
		"_security": SearchParamInfo{
			Resource: "List",
			Name:     "_security",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]security", Type: "Coding"},
			},
		},
		"_tag": SearchParamInfo{
			Resource: "List",
			Name:     "_tag",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]tag", Type: "Coding"},
			},
		},
		"code": SearchParamInfo{
			Resource: "List",
			Name:     "code",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "code", Type: "CodeableConcept"},
			},
		},
		"date": SearchParamInfo{
			Resource: "List",
			Name:     "date",
			Type:     "date",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "date", Type: "dateTime"},
			},
		},
		"empty-reason": SearchParamInfo{
			Resource: "List",
			Name:     "empty-reason",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "emptyReason", Type: "CodeableConcept"},
			},
		},
		"encounter": SearchParamInfo{
			Resource: "List",
			Name:     "encounter",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "encounter", Type: "Reference"},
			},
			Targets: []string{
				"Encounter",
			},
		},
		"item": SearchParamInfo{
			Resource: "List",
			Name:     "item",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]entry.item", Type: "Reference"},
			},
			Targets: []string{
				"Any",
			},
		},
		"notes": SearchParamInfo{
			Resource: "List",
			Name:     "notes",
			Type:     "string",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "note", Type: "string"},
			},
		},
		"patient": SearchParamInfo{
			Resource: "List",
			Name:     "patient",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "subject", Type: "Reference"},
			},
			Targets: []string{
				"Patient",
			},
		},
		"source": SearchParamInfo{
			Resource: "List",
			Name:     "source",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "source", Type: "Reference"},
			},
			Targets: []string{
				"Device",
				"Patient",
				"Practitioner",
			},
		},
		"status": SearchParamInfo{
			Resource: "List",
			Name:     "status",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "status", Type: "code"},
			},
		},
		"subject": SearchParamInfo{
			Resource: "List",
			Name:     "subject",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "subject", Type: "Reference"},
			},
			Targets: []string{
				"Device",
				"Group",
				"Location",
				"Patient",
			},
		},
		"title": SearchParamInfo{
			Resource: "List",
			Name:     "title",
			Type:     "string",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "title", Type: "string"},
			},
		},
	},
	"Location": map[string]SearchParamInfo{
		"_id": SearchParamInfo{
			Resource: "Location",
			Name:     "_id",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "_id", Type: "id"},
			},
		},
		"_lastUpdated": SearchParamInfo{
			Resource: "Location",
			Name:     "_lastUpdated",
			Type:     "date",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.lastUpdated", Type: "instant"},
			},
		},
		"_profile": SearchParamInfo{
			Resource: "Location",
			Name:     "_profile",
			Type:     "uri",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]profile", Type: "uri"},
			},
		},
		"_security": SearchParamInfo{
			Resource: "Location",
			Name:     "_security",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]security", Type: "Coding"},
			},
		},
		"_tag": SearchParamInfo{
			Resource: "Location",
			Name:     "_tag",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]tag", Type: "Coding"},
			},
		},
		"address": SearchParamInfo{
			Resource: "Location",
			Name:     "address",
			Type:     "string",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "address", Type: "Address"},
			},
		},
		"address-city": SearchParamInfo{
			Resource: "Location",
			Name:     "address-city",
			Type:     "string",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "address.city", Type: "string"},
			},
		},
		"address-country": SearchParamInfo{
			Resource: "Location",
			Name:     "address-country",
			Type:     "string",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "address.country", Type: "string"},
			},
		},
		"address-postalcode": SearchParamInfo{
			Resource: "Location",
			Name:     "address-postalcode",
			Type:     "string",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "address.postalCode", Type: "string"},
			},
		},
		"address-state": SearchParamInfo{
			Resource: "Location",
			Name:     "address-state",
			Type:     "string",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "address.state", Type: "string"},
			},
		},
		"address-use": SearchParamInfo{
			Resource: "Location",
			Name:     "address-use",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "address.use", Type: "code"},
			},
		},
		"identifier": SearchParamInfo{
			Resource: "Location",
			Name:     "identifier",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]identifier", Type: "Identifier"},
			},
		},
		"name": SearchParamInfo{
			Resource: "Location",
			Name:     "name",
			Type:     "string",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "name", Type: "string"},
			},
		},
		"near": SearchParamInfo{
			Resource: "Location",
			Name:     "near",
			Type:     "token",
		},
		"near-distance": SearchParamInfo{
			Resource: "Location",
			Name:     "near-distance",
			Type:     "token",
		},
		"organization": SearchParamInfo{
			Resource: "Location",
			Name:     "organization",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "managingOrganization", Type: "Reference"},
			},
			Targets: []string{
				"Organization",
			},
		},
		"partof": SearchParamInfo{
			Resource: "Location",
			Name:     "partof",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "partOf", Type: "Reference"},
			},
			Targets: []string{
				"Location",
			},
		},
		"status": SearchParamInfo{
			Resource: "Location",
			Name:     "status",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "status", Type: "code"},
			},
		},
		"type": SearchParamInfo{
			Resource: "Location",
			Name:     "type",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "type", Type: "CodeableConcept"},
			},
		},
	},
	"Media": map[string]SearchParamInfo{
		"_id": SearchParamInfo{
			Resource: "Media",
			Name:     "_id",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "_id", Type: "id"},
			},
		},
		"_lastUpdated": SearchParamInfo{
			Resource: "Media",
			Name:     "_lastUpdated",
			Type:     "date",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.lastUpdated", Type: "instant"},
			},
		},
		"_profile": SearchParamInfo{
			Resource: "Media",
			Name:     "_profile",
			Type:     "uri",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]profile", Type: "uri"},
			},
		},
		"_security": SearchParamInfo{
			Resource: "Media",
			Name:     "_security",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]security", Type: "Coding"},
			},
		},
		"_tag": SearchParamInfo{
			Resource: "Media",
			Name:     "_tag",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]tag", Type: "Coding"},
			},
		},
		"created": SearchParamInfo{
			Resource: "Media",
			Name:     "created",
			Type:     "date",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "content.creation", Type: "dateTime"},
			},
		},
		"identifier": SearchParamInfo{
			Resource: "Media",
			Name:     "identifier",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]identifier", Type: "Identifier"},
			},
		},
		"operator": SearchParamInfo{
			Resource: "Media",
			Name:     "operator",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "operator", Type: "Reference"},
			},
			Targets: []string{
				"Practitioner",
			},
		},
		"patient": SearchParamInfo{
			Resource: "Media",
			Name:     "patient",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "subject", Type: "Reference"},
			},
			Targets: []string{
				"Patient",
			},
		},
		"subject": SearchParamInfo{
			Resource: "Media",
			Name:     "subject",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "subject", Type: "Reference"},
			},
			Targets: []string{
				"Device",
				"Group",
				"Patient",
				"Practitioner",
				"Specimen",
			},
		},
		"subtype": SearchParamInfo{
			Resource: "Media",
			Name:     "subtype",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "subtype", Type: "CodeableConcept"},
			},
		},
		"type": SearchParamInfo{
			Resource: "Media",
			Name:     "type",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "type", Type: "code"},
			},
		},
		"view": SearchParamInfo{
			Resource: "Media",
			Name:     "view",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "view", Type: "CodeableConcept"},
			},
		},
	},
	"Medication": map[string]SearchParamInfo{
		"_id": SearchParamInfo{
			Resource: "Medication",
			Name:     "_id",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "_id", Type: "id"},
			},
		},
		"_lastUpdated": SearchParamInfo{
			Resource: "Medication",
			Name:     "_lastUpdated",
			Type:     "date",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.lastUpdated", Type: "instant"},
			},
		},
		"_profile": SearchParamInfo{
			Resource: "Medication",
			Name:     "_profile",
			Type:     "uri",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]profile", Type: "uri"},
			},
		},
		"_security": SearchParamInfo{
			Resource: "Medication",
			Name:     "_security",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]security", Type: "Coding"},
			},
		},
		"_tag": SearchParamInfo{
			Resource: "Medication",
			Name:     "_tag",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]tag", Type: "Coding"},
			},
		},
		"code": SearchParamInfo{
			Resource: "Medication",
			Name:     "code",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "code", Type: "CodeableConcept"},
			},
		},
		"container": SearchParamInfo{
			Resource: "Medication",
			Name:     "container",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "package.container", Type: "CodeableConcept"},
			},
		},
		"content": SearchParamInfo{
			Resource: "Medication",
			Name:     "content",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "package.[]content.item", Type: "Reference"},
			},
			Targets: []string{
				"Medication",
			},
		},
		"form": SearchParamInfo{
			Resource: "Medication",
			Name:     "form",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "product.form", Type: "CodeableConcept"},
			},
		},
		"ingredient": SearchParamInfo{
			Resource: "Medication",
			Name:     "ingredient",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "product.[]ingredient.item", Type: "Reference"},
			},
			Targets: []string{
				"Medication",
				"Substance",
			},
		},
		"manufacturer": SearchParamInfo{
			Resource: "Medication",
			Name:     "manufacturer",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "manufacturer", Type: "Reference"},
			},
			Targets: []string{
				"Organization",
			},
		},
	},
	"MedicationAdministration": map[string]SearchParamInfo{
		"_id": SearchParamInfo{
			Resource: "MedicationAdministration",
			Name:     "_id",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "_id", Type: "id"},
			},
		},
		"_lastUpdated": SearchParamInfo{
			Resource: "MedicationAdministration",
			Name:     "_lastUpdated",
			Type:     "date",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.lastUpdated", Type: "instant"},
			},
		},
		"_profile": SearchParamInfo{
			Resource: "MedicationAdministration",
			Name:     "_profile",
			Type:     "uri",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]profile", Type: "uri"},
			},
		},
		"_security": SearchParamInfo{
			Resource: "MedicationAdministration",
			Name:     "_security",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]security", Type: "Coding"},
			},
		},
		"_tag": SearchParamInfo{
			Resource: "MedicationAdministration",
			Name:     "_tag",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]tag", Type: "Coding"},
			},
		},
		"code": SearchParamInfo{
			Resource: "MedicationAdministration",
			Name:     "code",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "medicationCodeableConcept", Type: "CodeableConcept"},
			},
		},
		"device": SearchParamInfo{
			Resource: "MedicationAdministration",
			Name:     "device",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]device", Type: "Reference"},
			},
			Targets: []string{
				"Device",
			},
		},
		"effectivetime": SearchParamInfo{
			Resource: "MedicationAdministration",
			Name:     "effectivetime",
			Type:     "date",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "effectiveTimeDateTime", Type: "dateTime"},
				SearchParamPath{Path: "effectiveTimePeriod", Type: "Period"},
			},
		},
		"encounter": SearchParamInfo{
			Resource: "MedicationAdministration",
			Name:     "encounter",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "encounter", Type: "Reference"},
			},
			Targets: []string{
				"Encounter",
			},
		},
		"identifier": SearchParamInfo{
			Resource: "MedicationAdministration",
			Name:     "identifier",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]identifier", Type: "Identifier"},
			},
		},
		"medication": SearchParamInfo{
			Resource: "MedicationAdministration",
			Name:     "medication",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "medicationReference", Type: "Reference"},
			},
			Targets: []string{
				"Medication",
			},
		},
		"notgiven": SearchParamInfo{
			Resource: "MedicationAdministration",
			Name:     "notgiven",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "wasNotGiven", Type: "boolean"},
			},
		},
		"patient": SearchParamInfo{
			Resource: "MedicationAdministration",
			Name:     "patient",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "patient", Type: "Reference"},
			},
			Targets: []string{
				"Patient",
			},
		},
		"practitioner": SearchParamInfo{
			Resource: "MedicationAdministration",
			Name:     "practitioner",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "practitioner", Type: "Reference"},
			},
			Targets: []string{
				"Patient",
				"Practitioner",
				"RelatedPerson",
			},
		},
		"prescription": SearchParamInfo{
			Resource: "MedicationAdministration",
			Name:     "prescription",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "prescription", Type: "Reference"},
			},
			Targets: []string{
				"MedicationOrder",
			},
		},
		"status": SearchParamInfo{
			Resource: "MedicationAdministration",
			Name:     "status",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "status", Type: "code"},
			},
		},
	},
	"MedicationDispense": map[string]SearchParamInfo{
		"_id": SearchParamInfo{
			Resource: "MedicationDispense",
			Name:     "_id",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "_id", Type: "id"},
			},
		},
		"_lastUpdated": SearchParamInfo{
			Resource: "MedicationDispense",
			Name:     "_lastUpdated",
			Type:     "date",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.lastUpdated", Type: "instant"},
			},
		},
		"_profile": SearchParamInfo{
			Resource: "MedicationDispense",
			Name:     "_profile",
			Type:     "uri",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]profile", Type: "uri"},
			},
		},
		"_security": SearchParamInfo{
			Resource: "MedicationDispense",
			Name:     "_security",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]security", Type: "Coding"},
			},
		},
		"_tag": SearchParamInfo{
			Resource: "MedicationDispense",
			Name:     "_tag",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]tag", Type: "Coding"},
			},
		},
		"code": SearchParamInfo{
			Resource: "MedicationDispense",
			Name:     "code",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "medicationCodeableConcept", Type: "CodeableConcept"},
			},
		},
		"destination": SearchParamInfo{
			Resource: "MedicationDispense",
			Name:     "destination",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "destination", Type: "Reference"},
			},
			Targets: []string{
				"Location",
			},
		},
		"dispenser": SearchParamInfo{
			Resource: "MedicationDispense",
			Name:     "dispenser",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "dispenser", Type: "Reference"},
			},
			Targets: []string{
				"Practitioner",
			},
		},
		"identifier": SearchParamInfo{
			Resource: "MedicationDispense",
			Name:     "identifier",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "identifier", Type: "Identifier"},
			},
		},
		"medication": SearchParamInfo{
			Resource: "MedicationDispense",
			Name:     "medication",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "medicationReference", Type: "Reference"},
			},
			Targets: []string{
				"Medication",
			},
		},
		"patient": SearchParamInfo{
			Resource: "MedicationDispense",
			Name:     "patient",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "patient", Type: "Reference"},
			},
			Targets: []string{
				"Patient",
			},
		},
		"prescription": SearchParamInfo{
			Resource: "MedicationDispense",
			Name:     "prescription",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]authorizingPrescription", Type: "Reference"},
			},
			Targets: []string{
				"MedicationOrder",
			},
		},
		"receiver": SearchParamInfo{
			Resource: "MedicationDispense",
			Name:     "receiver",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]receiver", Type: "Reference"},
			},
			Targets: []string{
				"Patient",
				"Practitioner",
			},
		},
		"responsibleparty": SearchParamInfo{
			Resource: "MedicationDispense",
			Name:     "responsibleparty",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "substitution.[]responsibleParty", Type: "Reference"},
			},
			Targets: []string{
				"Practitioner",
			},
		},
		"status": SearchParamInfo{
			Resource: "MedicationDispense",
			Name:     "status",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "status", Type: "code"},
			},
		},
		"type": SearchParamInfo{
			Resource: "MedicationDispense",
			Name:     "type",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "type", Type: "CodeableConcept"},
			},
		},
		"whenhandedover": SearchParamInfo{
			Resource: "MedicationDispense",
			Name:     "whenhandedover",
			Type:     "date",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "whenHandedOver", Type: "dateTime"},
			},
		},
		"whenprepared": SearchParamInfo{
			Resource: "MedicationDispense",
			Name:     "whenprepared",
			Type:     "date",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "whenPrepared", Type: "dateTime"},
			},
		},
	},
	"MedicationOrder": map[string]SearchParamInfo{
		"_id": SearchParamInfo{
			Resource: "MedicationOrder",
			Name:     "_id",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "_id", Type: "id"},
			},
		},
		"_lastUpdated": SearchParamInfo{
			Resource: "MedicationOrder",
			Name:     "_lastUpdated",
			Type:     "date",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.lastUpdated", Type: "instant"},
			},
		},
		"_profile": SearchParamInfo{
			Resource: "MedicationOrder",
			Name:     "_profile",
			Type:     "uri",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]profile", Type: "uri"},
			},
		},
		"_security": SearchParamInfo{
			Resource: "MedicationOrder",
			Name:     "_security",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]security", Type: "Coding"},
			},
		},
		"_tag": SearchParamInfo{
			Resource: "MedicationOrder",
			Name:     "_tag",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]tag", Type: "Coding"},
			},
		},
		"code": SearchParamInfo{
			Resource: "MedicationOrder",
			Name:     "code",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "medicationCodeableConcept", Type: "CodeableConcept"},
			},
		},
		"datewritten": SearchParamInfo{
			Resource: "MedicationOrder",
			Name:     "datewritten",
			Type:     "date",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "dateWritten", Type: "dateTime"},
			},
		},
		"encounter": SearchParamInfo{
			Resource: "MedicationOrder",
			Name:     "encounter",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "encounter", Type: "Reference"},
			},
			Targets: []string{
				"Encounter",
			},
		},
		"identifier": SearchParamInfo{
			Resource: "MedicationOrder",
			Name:     "identifier",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]identifier", Type: "Identifier"},
			},
		},
		"medication": SearchParamInfo{
			Resource: "MedicationOrder",
			Name:     "medication",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "medicationReference", Type: "Reference"},
			},
			Targets: []string{
				"Medication",
			},
		},
		"patient": SearchParamInfo{
			Resource: "MedicationOrder",
			Name:     "patient",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "patient", Type: "Reference"},
			},
			Targets: []string{
				"Patient",
			},
		},
		"prescriber": SearchParamInfo{
			Resource: "MedicationOrder",
			Name:     "prescriber",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "prescriber", Type: "Reference"},
			},
			Targets: []string{
				"Practitioner",
			},
		},
		"status": SearchParamInfo{
			Resource: "MedicationOrder",
			Name:     "status",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "status", Type: "code"},
			},
		},
	},
	"MedicationStatement": map[string]SearchParamInfo{
		"_id": SearchParamInfo{
			Resource: "MedicationStatement",
			Name:     "_id",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "_id", Type: "id"},
			},
		},
		"_lastUpdated": SearchParamInfo{
			Resource: "MedicationStatement",
			Name:     "_lastUpdated",
			Type:     "date",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.lastUpdated", Type: "instant"},
			},
		},
		"_profile": SearchParamInfo{
			Resource: "MedicationStatement",
			Name:     "_profile",
			Type:     "uri",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]profile", Type: "uri"},
			},
		},
		"_security": SearchParamInfo{
			Resource: "MedicationStatement",
			Name:     "_security",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]security", Type: "Coding"},
			},
		},
		"_tag": SearchParamInfo{
			Resource: "MedicationStatement",
			Name:     "_tag",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]tag", Type: "Coding"},
			},
		},
		"code": SearchParamInfo{
			Resource: "MedicationStatement",
			Name:     "code",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "medicationCodeableConcept", Type: "CodeableConcept"},
			},
		},
		"effectivedate": SearchParamInfo{
			Resource: "MedicationStatement",
			Name:     "effectivedate",
			Type:     "date",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "effectiveDateTime", Type: "dateTime"},
				SearchParamPath{Path: "effectivePeriod", Type: "Period"},
			},
		},
		"identifier": SearchParamInfo{
			Resource: "MedicationStatement",
			Name:     "identifier",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]identifier", Type: "Identifier"},
			},
		},
		"medication": SearchParamInfo{
			Resource: "MedicationStatement",
			Name:     "medication",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "medicationReference", Type: "Reference"},
			},
			Targets: []string{
				"Medication",
			},
		},
		"patient": SearchParamInfo{
			Resource: "MedicationStatement",
			Name:     "patient",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "patient", Type: "Reference"},
			},
			Targets: []string{
				"Patient",
			},
		},
		"source": SearchParamInfo{
			Resource: "MedicationStatement",
			Name:     "source",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "informationSource", Type: "Reference"},
			},
			Targets: []string{
				"Patient",
				"Practitioner",
				"RelatedPerson",
			},
		},
		"status": SearchParamInfo{
			Resource: "MedicationStatement",
			Name:     "status",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "status", Type: "code"},
			},
		},
	},
	"MessageHeader": map[string]SearchParamInfo{
		"_id": SearchParamInfo{
			Resource: "MessageHeader",
			Name:     "_id",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "_id", Type: "id"},
			},
		},
		"_lastUpdated": SearchParamInfo{
			Resource: "MessageHeader",
			Name:     "_lastUpdated",
			Type:     "date",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.lastUpdated", Type: "instant"},
			},
		},
		"_profile": SearchParamInfo{
			Resource: "MessageHeader",
			Name:     "_profile",
			Type:     "uri",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]profile", Type: "uri"},
			},
		},
		"_security": SearchParamInfo{
			Resource: "MessageHeader",
			Name:     "_security",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]security", Type: "Coding"},
			},
		},
		"_tag": SearchParamInfo{
			Resource: "MessageHeader",
			Name:     "_tag",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]tag", Type: "Coding"},
			},
		},
		"author": SearchParamInfo{
			Resource: "MessageHeader",
			Name:     "author",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "author", Type: "Reference"},
			},
			Targets: []string{
				"Practitioner",
			},
		},
		"code": SearchParamInfo{
			Resource: "MessageHeader",
			Name:     "code",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "response.code", Type: "code"},
			},
		},
		"data": SearchParamInfo{
			Resource: "MessageHeader",
			Name:     "data",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]data", Type: "Reference"},
			},
			Targets: []string{
				"Any",
			},
		},
		"destination": SearchParamInfo{
			Resource: "MessageHeader",
			Name:     "destination",
			Type:     "string",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]destination.name", Type: "string"},
			},
		},
		"destination-uri": SearchParamInfo{
			Resource: "MessageHeader",
			Name:     "destination-uri",
			Type:     "uri",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]destination.endpoint", Type: "uri"},
			},
		},
		"enterer": SearchParamInfo{
			Resource: "MessageHeader",
			Name:     "enterer",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "enterer", Type: "Reference"},
			},
			Targets: []string{
				"Practitioner",
			},
		},
		"event": SearchParamInfo{
			Resource: "MessageHeader",
			Name:     "event",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "event", Type: "Coding"},
			},
		},
		"receiver": SearchParamInfo{
			Resource: "MessageHeader",
			Name:     "receiver",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "receiver", Type: "Reference"},
			},
			Targets: []string{
				"Organization",
				"Practitioner",
			},
		},
		"response-id": SearchParamInfo{
			Resource: "MessageHeader",
			Name:     "response-id",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "response.identifier", Type: "id"},
			},
		},
		"responsible": SearchParamInfo{
			Resource: "MessageHeader",
			Name:     "responsible",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "responsible", Type: "Reference"},
			},
			Targets: []string{
				"Organization",
				"Practitioner",
			},
		},
		"source": SearchParamInfo{
			Resource: "MessageHeader",
			Name:     "source",
			Type:     "string",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "source.name", Type: "string"},
			},
		},
		"source-uri": SearchParamInfo{
			Resource: "MessageHeader",
			Name:     "source-uri",
			Type:     "uri",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "source.endpoint", Type: "uri"},
			},
		},
		"target": SearchParamInfo{
			Resource: "MessageHeader",
			Name:     "target",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]destination.target", Type: "Reference"},
			},
			Targets: []string{
				"Device",
			},
		},
		"timestamp": SearchParamInfo{
			Resource: "MessageHeader",
			Name:     "timestamp",
			Type:     "date",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "timestamp", Type: "instant"},
			},
		},
	},
	"NamingSystem": map[string]SearchParamInfo{
		"_id": SearchParamInfo{
			Resource: "NamingSystem",
			Name:     "_id",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "_id", Type: "id"},
			},
		},
		"_lastUpdated": SearchParamInfo{
			Resource: "NamingSystem",
			Name:     "_lastUpdated",
			Type:     "date",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.lastUpdated", Type: "instant"},
			},
		},
		"_profile": SearchParamInfo{
			Resource: "NamingSystem",
			Name:     "_profile",
			Type:     "uri",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]profile", Type: "uri"},
			},
		},
		"_security": SearchParamInfo{
			Resource: "NamingSystem",
			Name:     "_security",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]security", Type: "Coding"},
			},
		},
		"_tag": SearchParamInfo{
			Resource: "NamingSystem",
			Name:     "_tag",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]tag", Type: "Coding"},
			},
		},
		"contact": SearchParamInfo{
			Resource: "NamingSystem",
			Name:     "contact",
			Type:     "string",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]contact.name", Type: "string"},
			},
		},
		"context": SearchParamInfo{
			Resource: "NamingSystem",
			Name:     "context",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]useContext", Type: "CodeableConcept"},
			},
		},
		"date": SearchParamInfo{
			Resource: "NamingSystem",
			Name:     "date",
			Type:     "date",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "date", Type: "dateTime"},
			},
		},
		"id-type": SearchParamInfo{
			Resource: "NamingSystem",
			Name:     "id-type",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]uniqueId.type", Type: "code"},
			},
		},
		"kind": SearchParamInfo{
			Resource: "NamingSystem",
			Name:     "kind",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "kind", Type: "code"},
			},
		},
		"name": SearchParamInfo{
			Resource: "NamingSystem",
			Name:     "name",
			Type:     "string",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "name", Type: "string"},
			},
		},
		"period": SearchParamInfo{
			Resource: "NamingSystem",
			Name:     "period",
			Type:     "date",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]uniqueId.period", Type: "Period"},
			},
		},
		"publisher": SearchParamInfo{
			Resource: "NamingSystem",
			Name:     "publisher",
			Type:     "string",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "publisher", Type: "string"},
			},
		},
		"replaced-by": SearchParamInfo{
			Resource: "NamingSystem",
			Name:     "replaced-by",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "replacedBy", Type: "Reference"},
			},
			Targets: []string{
				"NamingSystem",
			},
		},
		"responsible": SearchParamInfo{
			Resource: "NamingSystem",
			Name:     "responsible",
			Type:     "string",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "responsible", Type: "string"},
			},
		},
		"status": SearchParamInfo{
			Resource: "NamingSystem",
			Name:     "status",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "status", Type: "code"},
			},
		},
		"telecom": SearchParamInfo{
			Resource: "NamingSystem",
			Name:     "telecom",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]contact.[]telecom", Type: "ContactPoint"},
			},
		},
		"type": SearchParamInfo{
			Resource: "NamingSystem",
			Name:     "type",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "type", Type: "CodeableConcept"},
			},
		},
		"value": SearchParamInfo{
			Resource: "NamingSystem",
			Name:     "value",
			Type:     "string",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]uniqueId.value", Type: "string"},
			},
		},
	},
	"NutritionOrder": map[string]SearchParamInfo{
		"_id": SearchParamInfo{
			Resource: "NutritionOrder",
			Name:     "_id",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "_id", Type: "id"},
			},
		},
		"_lastUpdated": SearchParamInfo{
			Resource: "NutritionOrder",
			Name:     "_lastUpdated",
			Type:     "date",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.lastUpdated", Type: "instant"},
			},
		},
		"_profile": SearchParamInfo{
			Resource: "NutritionOrder",
			Name:     "_profile",
			Type:     "uri",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]profile", Type: "uri"},
			},
		},
		"_security": SearchParamInfo{
			Resource: "NutritionOrder",
			Name:     "_security",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]security", Type: "Coding"},
			},
		},
		"_tag": SearchParamInfo{
			Resource: "NutritionOrder",
			Name:     "_tag",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]tag", Type: "Coding"},
			},
		},
		"additive": SearchParamInfo{
			Resource: "NutritionOrder",
			Name:     "additive",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "enteralFormula.additiveType", Type: "CodeableConcept"},
			},
		},
		"datetime": SearchParamInfo{
			Resource: "NutritionOrder",
			Name:     "datetime",
			Type:     "date",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "dateTime", Type: "dateTime"},
			},
		},
		"encounter": SearchParamInfo{
			Resource: "NutritionOrder",
			Name:     "encounter",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "encounter", Type: "Reference"},
			},
			Targets: []string{
				"Encounter",
			},
		},
		"formula": SearchParamInfo{
			Resource: "NutritionOrder",
			Name:     "formula",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "enteralFormula.baseFormulaType", Type: "CodeableConcept"},
			},
		},
		"identifier": SearchParamInfo{
			Resource: "NutritionOrder",
			Name:     "identifier",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]identifier", Type: "Identifier"},
			},
		},
		"oraldiet": SearchParamInfo{
			Resource: "NutritionOrder",
			Name:     "oraldiet",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "oralDiet.[]type", Type: "CodeableConcept"},
			},
		},
		"patient": SearchParamInfo{
			Resource: "NutritionOrder",
			Name:     "patient",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "patient", Type: "Reference"},
			},
			Targets: []string{
				"Patient",
			},
		},
		"provider": SearchParamInfo{
			Resource: "NutritionOrder",
			Name:     "provider",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "orderer", Type: "Reference"},
			},
			Targets: []string{
				"Practitioner",
			},
		},
		"status": SearchParamInfo{
			Resource: "NutritionOrder",
			Name:     "status",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "status", Type: "code"},
			},
		},
		"supplement": SearchParamInfo{
			Resource: "NutritionOrder",
			Name:     "supplement",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]supplement.type", Type: "CodeableConcept"},
			},
		},
	},
	"Observation": map[string]SearchParamInfo{
		"_id": SearchParamInfo{
			Resource: "Observation",
			Name:     "_id",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "_id", Type: "id"},
			},
		},
		"_lastUpdated": SearchParamInfo{
			Resource: "Observation",
			Name:     "_lastUpdated",
			Type:     "date",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.lastUpdated", Type: "instant"},
			},
		},
		"_profile": SearchParamInfo{
			Resource: "Observation",
			Name:     "_profile",
			Type:     "uri",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]profile", Type: "uri"},
			},
		},
		"_security": SearchParamInfo{
			Resource: "Observation",
			Name:     "_security",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]security", Type: "Coding"},
			},
		},
		"_tag": SearchParamInfo{
			Resource: "Observation",
			Name:     "_tag",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]tag", Type: "Coding"},
			},
		},
		"category": SearchParamInfo{
			Resource: "Observation",
			Name:     "category",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "category", Type: "CodeableConcept"},
			},
		},
		"code": SearchParamInfo{
			Resource: "Observation",
			Name:     "code",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "code", Type: "CodeableConcept"},
			},
		},
		"component-code": SearchParamInfo{
			Resource: "Observation",
			Name:     "component-code",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]component.code", Type: "CodeableConcept"},
			},
		},
		"component-data-absent-reason": SearchParamInfo{
			Resource: "Observation",
			Name:     "component-data-absent-reason",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]component.dataAbsentReason", Type: "CodeableConcept"},
			},
		},
		"component-value-concept": SearchParamInfo{
			Resource: "Observation",
			Name:     "component-value-concept",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]component.valueCodeableConcept", Type: "CodeableConcept"},
			},
		},
		"component-value-quantity": SearchParamInfo{
			Resource: "Observation",
			Name:     "component-value-quantity",
			Type:     "quantity",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]component.valueQuantity", Type: "Quantity"},
			},
		},
		"component-value-string": SearchParamInfo{
			Resource: "Observation",
			Name:     "component-value-string",
			Type:     "string",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]component.valueString", Type: "string"},
			},
		},
		"data-absent-reason": SearchParamInfo{
			Resource: "Observation",
			Name:     "data-absent-reason",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "dataAbsentReason", Type: "CodeableConcept"},
			},
		},
		"date": SearchParamInfo{
			Resource: "Observation",
			Name:     "date",
			Type:     "date",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "effectiveDateTime", Type: "dateTime"},
				SearchParamPath{Path: "effectivePeriod", Type: "Period"},
			},
		},
		"device": SearchParamInfo{
			Resource: "Observation",
			Name:     "device",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "device", Type: "Reference"},
			},
			Targets: []string{
				"Device",
				"DeviceMetric",
			},
		},
		"encounter": SearchParamInfo{
			Resource: "Observation",
			Name:     "encounter",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "encounter", Type: "Reference"},
			},
			Targets: []string{
				"Encounter",
			},
		},
		"identifier": SearchParamInfo{
			Resource: "Observation",
			Name:     "identifier",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]identifier", Type: "Identifier"},
			},
		},
		"patient": SearchParamInfo{
			Resource: "Observation",
			Name:     "patient",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "subject", Type: "Reference"},
			},
			Targets: []string{
				"Patient",
			},
		},
		"performer": SearchParamInfo{
			Resource: "Observation",
			Name:     "performer",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]performer", Type: "Reference"},
			},
			Targets: []string{
				"Organization",
				"Patient",
				"Practitioner",
				"RelatedPerson",
			},
		},
		"related-target": SearchParamInfo{
			Resource: "Observation",
			Name:     "related-target",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]related.target", Type: "Reference"},
			},
			Targets: []string{
				"Observation",
				"QuestionnaireResponse",
			},
		},
		"related-type": SearchParamInfo{
			Resource: "Observation",
			Name:     "related-type",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]related.type", Type: "code"},
			},
		},
		"specimen": SearchParamInfo{
			Resource: "Observation",
			Name:     "specimen",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "specimen", Type: "Reference"},
			},
			Targets: []string{
				"Specimen",
			},
		},
		"status": SearchParamInfo{
			Resource: "Observation",
			Name:     "status",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "status", Type: "code"},
			},
		},
		"subject": SearchParamInfo{
			Resource: "Observation",
			Name:     "subject",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "subject", Type: "Reference"},
			},
			Targets: []string{
				"Device",
				"Group",
				"Location",
				"Patient",
			},
		},
		"value-concept": SearchParamInfo{
			Resource: "Observation",
			Name:     "value-concept",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "valueCodeableConcept", Type: "CodeableConcept"},
			},
		},
		"value-date": SearchParamInfo{
			Resource: "Observation",
			Name:     "value-date",
			Type:     "date",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "valueDateTime", Type: "dateTime"},
				SearchParamPath{Path: "valuePeriod", Type: "Period"},
			},
		},
		"value-quantity": SearchParamInfo{
			Resource: "Observation",
			Name:     "value-quantity",
			Type:     "quantity",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "valueQuantity", Type: "Quantity"},
			},
		},
		"value-string": SearchParamInfo{
			Resource: "Observation",
			Name:     "value-string",
			Type:     "string",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "valueString", Type: "string"},
			},
		},
	},
	"OperationDefinition": map[string]SearchParamInfo{
		"_id": SearchParamInfo{
			Resource: "OperationDefinition",
			Name:     "_id",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "_id", Type: "id"},
			},
		},
		"_lastUpdated": SearchParamInfo{
			Resource: "OperationDefinition",
			Name:     "_lastUpdated",
			Type:     "date",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.lastUpdated", Type: "instant"},
			},
		},
		"_profile": SearchParamInfo{
			Resource: "OperationDefinition",
			Name:     "_profile",
			Type:     "uri",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]profile", Type: "uri"},
			},
		},
		"_security": SearchParamInfo{
			Resource: "OperationDefinition",
			Name:     "_security",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]security", Type: "Coding"},
			},
		},
		"_tag": SearchParamInfo{
			Resource: "OperationDefinition",
			Name:     "_tag",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]tag", Type: "Coding"},
			},
		},
		"base": SearchParamInfo{
			Resource: "OperationDefinition",
			Name:     "base",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "base", Type: "Reference"},
			},
			Targets: []string{
				"OperationDefinition",
			},
		},
		"code": SearchParamInfo{
			Resource: "OperationDefinition",
			Name:     "code",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "code", Type: "code"},
			},
		},
		"date": SearchParamInfo{
			Resource: "OperationDefinition",
			Name:     "date",
			Type:     "date",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "date", Type: "dateTime"},
			},
		},
		"instance": SearchParamInfo{
			Resource: "OperationDefinition",
			Name:     "instance",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "instance", Type: "boolean"},
			},
		},
		"kind": SearchParamInfo{
			Resource: "OperationDefinition",
			Name:     "kind",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "kind", Type: "code"},
			},
		},
		"name": SearchParamInfo{
			Resource: "OperationDefinition",
			Name:     "name",
			Type:     "string",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "name", Type: "string"},
			},
		},
		"profile": SearchParamInfo{
			Resource: "OperationDefinition",
			Name:     "profile",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]parameter.profile", Type: "Reference"},
			},
			Targets: []string{
				"StructureDefinition",
			},
		},
		"publisher": SearchParamInfo{
			Resource: "OperationDefinition",
			Name:     "publisher",
			Type:     "string",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "publisher", Type: "string"},
			},
		},
		"status": SearchParamInfo{
			Resource: "OperationDefinition",
			Name:     "status",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "status", Type: "code"},
			},
		},
		"system": SearchParamInfo{
			Resource: "OperationDefinition",
			Name:     "system",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "system", Type: "boolean"},
			},
		},
		"type": SearchParamInfo{
			Resource: "OperationDefinition",
			Name:     "type",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]type", Type: "code"},
			},
		},
		"url": SearchParamInfo{
			Resource: "OperationDefinition",
			Name:     "url",
			Type:     "uri",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "url", Type: "uri"},
			},
		},
		"version": SearchParamInfo{
			Resource: "OperationDefinition",
			Name:     "version",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "version", Type: "string"},
			},
		},
	},
	"OperationOutcome": map[string]SearchParamInfo{
		"_id": SearchParamInfo{
			Resource: "OperationOutcome",
			Name:     "_id",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "_id", Type: "id"},
			},
		},
		"_lastUpdated": SearchParamInfo{
			Resource: "OperationOutcome",
			Name:     "_lastUpdated",
			Type:     "date",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.lastUpdated", Type: "instant"},
			},
		},
		"_profile": SearchParamInfo{
			Resource: "OperationOutcome",
			Name:     "_profile",
			Type:     "uri",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]profile", Type: "uri"},
			},
		},
		"_security": SearchParamInfo{
			Resource: "OperationOutcome",
			Name:     "_security",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]security", Type: "Coding"},
			},
		},
		"_tag": SearchParamInfo{
			Resource: "OperationOutcome",
			Name:     "_tag",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]tag", Type: "Coding"},
			},
		},
	},
	"Order": map[string]SearchParamInfo{
		"_id": SearchParamInfo{
			Resource: "Order",
			Name:     "_id",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "_id", Type: "id"},
			},
		},
		"_lastUpdated": SearchParamInfo{
			Resource: "Order",
			Name:     "_lastUpdated",
			Type:     "date",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.lastUpdated", Type: "instant"},
			},
		},
		"_profile": SearchParamInfo{
			Resource: "Order",
			Name:     "_profile",
			Type:     "uri",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]profile", Type: "uri"},
			},
		},
		"_security": SearchParamInfo{
			Resource: "Order",
			Name:     "_security",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]security", Type: "Coding"},
			},
		},
		"_tag": SearchParamInfo{
			Resource: "Order",
			Name:     "_tag",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]tag", Type: "Coding"},
			},
		},
		"date": SearchParamInfo{
			Resource: "Order",
			Name:     "date",
			Type:     "date",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "date", Type: "dateTime"},
			},
		},
		"detail": SearchParamInfo{
			Resource: "Order",
			Name:     "detail",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]detail", Type: "Reference"},
			},
			Targets: []string{
				"Any",
			},
		},
		"identifier": SearchParamInfo{
			Resource: "Order",
			Name:     "identifier",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]identifier", Type: "Identifier"},
			},
		},
		"patient": SearchParamInfo{
			Resource: "Order",
			Name:     "patient",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "subject", Type: "Reference"},
			},
			Targets: []string{
				"Patient",
			},
		},
		"source": SearchParamInfo{
			Resource: "Order",
			Name:     "source",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "source", Type: "Reference"},
			},
			Targets: []string{
				"Organization",
				"Practitioner",
			},
		},
		"subject": SearchParamInfo{
			Resource: "Order",
			Name:     "subject",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "subject", Type: "Reference"},
			},
			Targets: []string{
				"Device",
				"Group",
				"Patient",
				"Substance",
			},
		},
		"target": SearchParamInfo{
			Resource: "Order",
			Name:     "target",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "target", Type: "Reference"},
			},
			Targets: []string{
				"Device",
				"Organization",
				"Practitioner",
			},
		},
		"when": SearchParamInfo{
			Resource: "Order",
			Name:     "when",
			Type:     "date",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "when.schedule", Type: "Timing"},
			},
		},
		"when_code": SearchParamInfo{
			Resource: "Order",
			Name:     "when_code",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "when.code", Type: "CodeableConcept"},
			},
		},
	},
	"OrderResponse": map[string]SearchParamInfo{
		"_id": SearchParamInfo{
			Resource: "OrderResponse",
			Name:     "_id",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "_id", Type: "id"},
			},
		},
		"_lastUpdated": SearchParamInfo{
			Resource: "OrderResponse",
			Name:     "_lastUpdated",
			Type:     "date",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.lastUpdated", Type: "instant"},
			},
		},
		"_profile": SearchParamInfo{
			Resource: "OrderResponse",
			Name:     "_profile",
			Type:     "uri",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]profile", Type: "uri"},
			},
		},
		"_security": SearchParamInfo{
			Resource: "OrderResponse",
			Name:     "_security",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]security", Type: "Coding"},
			},
		},
		"_tag": SearchParamInfo{
			Resource: "OrderResponse",
			Name:     "_tag",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]tag", Type: "Coding"},
			},
		},
		"code": SearchParamInfo{
			Resource: "OrderResponse",
			Name:     "code",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "orderStatus", Type: "code"},
			},
		},
		"date": SearchParamInfo{
			Resource: "OrderResponse",
			Name:     "date",
			Type:     "date",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "date", Type: "dateTime"},
			},
		},
		"fulfillment": SearchParamInfo{
			Resource: "OrderResponse",
			Name:     "fulfillment",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]fulfillment", Type: "Reference"},
			},
			Targets: []string{
				"Any",
			},
		},
		"identifier": SearchParamInfo{
			Resource: "OrderResponse",
			Name:     "identifier",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]identifier", Type: "Identifier"},
			},
		},
		"request": SearchParamInfo{
			Resource: "OrderResponse",
			Name:     "request",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "request", Type: "Reference"},
			},
			Targets: []string{
				"Order",
			},
		},
		"who": SearchParamInfo{
			Resource: "OrderResponse",
			Name:     "who",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "who", Type: "Reference"},
			},
			Targets: []string{
				"Device",
				"Organization",
				"Practitioner",
			},
		},
	},
	"Organization": map[string]SearchParamInfo{
		"_id": SearchParamInfo{
			Resource: "Organization",
			Name:     "_id",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "_id", Type: "id"},
			},
		},
		"_lastUpdated": SearchParamInfo{
			Resource: "Organization",
			Name:     "_lastUpdated",
			Type:     "date",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.lastUpdated", Type: "instant"},
			},
		},
		"_profile": SearchParamInfo{
			Resource: "Organization",
			Name:     "_profile",
			Type:     "uri",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]profile", Type: "uri"},
			},
		},
		"_security": SearchParamInfo{
			Resource: "Organization",
			Name:     "_security",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]security", Type: "Coding"},
			},
		},
		"_tag": SearchParamInfo{
			Resource: "Organization",
			Name:     "_tag",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]tag", Type: "Coding"},
			},
		},
		"active": SearchParamInfo{
			Resource: "Organization",
			Name:     "active",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "active", Type: "boolean"},
			},
		},
		"address": SearchParamInfo{
			Resource: "Organization",
			Name:     "address",
			Type:     "string",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]address", Type: "Address"},
			},
		},
		"address-city": SearchParamInfo{
			Resource: "Organization",
			Name:     "address-city",
			Type:     "string",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]address.city", Type: "string"},
			},
		},
		"address-country": SearchParamInfo{
			Resource: "Organization",
			Name:     "address-country",
			Type:     "string",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]address.country", Type: "string"},
			},
		},
		"address-postalcode": SearchParamInfo{
			Resource: "Organization",
			Name:     "address-postalcode",
			Type:     "string",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]address.postalCode", Type: "string"},
			},
		},
		"address-state": SearchParamInfo{
			Resource: "Organization",
			Name:     "address-state",
			Type:     "string",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]address.state", Type: "string"},
			},
		},
		"address-use": SearchParamInfo{
			Resource: "Organization",
			Name:     "address-use",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]address.use", Type: "code"},
			},
		},
		"identifier": SearchParamInfo{
			Resource: "Organization",
			Name:     "identifier",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]identifier", Type: "Identifier"},
			},
		},
		"name": SearchParamInfo{
			Resource: "Organization",
			Name:     "name",
			Type:     "string",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "name", Type: "string"},
			},
		},
		"partof": SearchParamInfo{
			Resource: "Organization",
			Name:     "partof",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "partOf", Type: "Reference"},
			},
			Targets: []string{
				"Organization",
			},
		},
		"phonetic": SearchParamInfo{
			Resource: "Organization",
			Name:     "phonetic",
			Type:     "string",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "name", Type: "string"},
			},
		},
		"type": SearchParamInfo{
			Resource: "Organization",
			Name:     "type",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "type", Type: "CodeableConcept"},
			},
		},
	},
	"Patient": map[string]SearchParamInfo{
		"_id": SearchParamInfo{
			Resource: "Patient",
			Name:     "_id",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "_id", Type: "id"},
			},
		},
		"_lastUpdated": SearchParamInfo{
			Resource: "Patient",
			Name:     "_lastUpdated",
			Type:     "date",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.lastUpdated", Type: "instant"},
			},
		},
		"_profile": SearchParamInfo{
			Resource: "Patient",
			Name:     "_profile",
			Type:     "uri",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]profile", Type: "uri"},
			},
		},
		"_security": SearchParamInfo{
			Resource: "Patient",
			Name:     "_security",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]security", Type: "Coding"},
			},
		},
		"_tag": SearchParamInfo{
			Resource: "Patient",
			Name:     "_tag",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]tag", Type: "Coding"},
			},
		},
		"active": SearchParamInfo{
			Resource: "Patient",
			Name:     "active",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "active", Type: "boolean"},
			},
		},
		"address": SearchParamInfo{
			Resource: "Patient",
			Name:     "address",
			Type:     "string",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]address", Type: "Address"},
			},
		},
		"address-city": SearchParamInfo{
			Resource: "Patient",
			Name:     "address-city",
			Type:     "string",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]address.city", Type: "string"},
			},
		},
		"address-country": SearchParamInfo{
			Resource: "Patient",
			Name:     "address-country",
			Type:     "string",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]address.country", Type: "string"},
			},
		},
		"address-postalcode": SearchParamInfo{
			Resource: "Patient",
			Name:     "address-postalcode",
			Type:     "string",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]address.postalCode", Type: "string"},
			},
		},
		"address-state": SearchParamInfo{
			Resource: "Patient",
			Name:     "address-state",
			Type:     "string",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]address.state", Type: "string"},
			},
		},
		"address-use": SearchParamInfo{
			Resource: "Patient",
			Name:     "address-use",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]address.use", Type: "code"},
			},
		},
		"animal-breed": SearchParamInfo{
			Resource: "Patient",
			Name:     "animal-breed",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "animal.breed", Type: "CodeableConcept"},
			},
		},
		"animal-species": SearchParamInfo{
			Resource: "Patient",
			Name:     "animal-species",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "animal.species", Type: "CodeableConcept"},
			},
		},
		"birthdate": SearchParamInfo{
			Resource: "Patient",
			Name:     "birthdate",
			Type:     "date",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "birthDate", Type: "date"},
			},
		},
		"careprovider": SearchParamInfo{
			Resource: "Patient",
			Name:     "careprovider",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]careProvider", Type: "Reference"},
			},
			Targets: []string{
				"Organization",
				"Practitioner",
			},
		},
		"deathdate": SearchParamInfo{
			Resource: "Patient",
			Name:     "deathdate",
			Type:     "date",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "deceasedDateTime", Type: "dateTime"},
			},
		},
		"deceased": SearchParamInfo{
			Resource: "Patient",
			Name:     "deceased",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "deceasedBoolean", Type: "boolean"},
			},
		},
		"family": SearchParamInfo{
			Resource: "Patient",
			Name:     "family",
			Type:     "string",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]name.[]family", Type: "string"},
			},
		},
		"gender": SearchParamInfo{
			Resource: "Patient",
			Name:     "gender",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "gender", Type: "code"},
			},
		},
		"given": SearchParamInfo{
			Resource: "Patient",
			Name:     "given",
			Type:     "string",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]name.[]given", Type: "string"},
			},
		},
		"identifier": SearchParamInfo{
			Resource: "Patient",
			Name:     "identifier",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]identifier", Type: "Identifier"},
			},
		},
		"language": SearchParamInfo{
			Resource: "Patient",
			Name:     "language",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]communication.language", Type: "CodeableConcept"},
			},
		},
		"link": SearchParamInfo{
			Resource: "Patient",
			Name:     "link",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]link.other", Type: "Reference"},
			},
			Targets: []string{
				"Patient",
			},
		},
		"name": SearchParamInfo{
			Resource: "Patient",
			Name:     "name",
			Type:     "string",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]name", Type: "HumanName"},
			},
		},
		"organization": SearchParamInfo{
			Resource: "Patient",
			Name:     "organization",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "managingOrganization", Type: "Reference"},
			},
			Targets: []string{
				"Organization",
			},
		},
		"phonetic": SearchParamInfo{
			Resource: "Patient",
			Name:     "phonetic",
			Type:     "string",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]name", Type: "HumanName"},
			},
		},
		"telecom": SearchParamInfo{
			Resource: "Patient",
			Name:     "telecom",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]telecom", Type: "ContactPoint"},
			},
		},
	},
	"PaymentNotice": map[string]SearchParamInfo{
		"_id": SearchParamInfo{
			Resource: "PaymentNotice",
			Name:     "_id",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "_id", Type: "id"},
			},
		},
		"_lastUpdated": SearchParamInfo{
			Resource: "PaymentNotice",
			Name:     "_lastUpdated",
			Type:     "date",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.lastUpdated", Type: "instant"},
			},
		},
		"_profile": SearchParamInfo{
			Resource: "PaymentNotice",
			Name:     "_profile",
			Type:     "uri",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]profile", Type: "uri"},
			},
		},
		"_security": SearchParamInfo{
			Resource: "PaymentNotice",
			Name:     "_security",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]security", Type: "Coding"},
			},
		},
		"_tag": SearchParamInfo{
			Resource: "PaymentNotice",
			Name:     "_tag",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]tag", Type: "Coding"},
			},
		},
		"identifier": SearchParamInfo{
			Resource: "PaymentNotice",
			Name:     "identifier",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]identifier", Type: "Identifier"},
			},
		},
	},
	"PaymentReconciliation": map[string]SearchParamInfo{
		"_id": SearchParamInfo{
			Resource: "PaymentReconciliation",
			Name:     "_id",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "_id", Type: "id"},
			},
		},
		"_lastUpdated": SearchParamInfo{
			Resource: "PaymentReconciliation",
			Name:     "_lastUpdated",
			Type:     "date",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.lastUpdated", Type: "instant"},
			},
		},
		"_profile": SearchParamInfo{
			Resource: "PaymentReconciliation",
			Name:     "_profile",
			Type:     "uri",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]profile", Type: "uri"},
			},
		},
		"_security": SearchParamInfo{
			Resource: "PaymentReconciliation",
			Name:     "_security",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]security", Type: "Coding"},
			},
		},
		"_tag": SearchParamInfo{
			Resource: "PaymentReconciliation",
			Name:     "_tag",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]tag", Type: "Coding"},
			},
		},
		"identifier": SearchParamInfo{
			Resource: "PaymentReconciliation",
			Name:     "identifier",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]identifier", Type: "Identifier"},
			},
		},
	},
	"Person": map[string]SearchParamInfo{
		"_id": SearchParamInfo{
			Resource: "Person",
			Name:     "_id",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "_id", Type: "id"},
			},
		},
		"_lastUpdated": SearchParamInfo{
			Resource: "Person",
			Name:     "_lastUpdated",
			Type:     "date",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.lastUpdated", Type: "instant"},
			},
		},
		"_profile": SearchParamInfo{
			Resource: "Person",
			Name:     "_profile",
			Type:     "uri",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]profile", Type: "uri"},
			},
		},
		"_security": SearchParamInfo{
			Resource: "Person",
			Name:     "_security",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]security", Type: "Coding"},
			},
		},
		"_tag": SearchParamInfo{
			Resource: "Person",
			Name:     "_tag",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]tag", Type: "Coding"},
			},
		},
		"address": SearchParamInfo{
			Resource: "Person",
			Name:     "address",
			Type:     "string",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]address", Type: "Address"},
			},
		},
		"address-city": SearchParamInfo{
			Resource: "Person",
			Name:     "address-city",
			Type:     "string",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]address.city", Type: "string"},
			},
		},
		"address-country": SearchParamInfo{
			Resource: "Person",
			Name:     "address-country",
			Type:     "string",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]address.country", Type: "string"},
			},
		},
		"address-postalcode": SearchParamInfo{
			Resource: "Person",
			Name:     "address-postalcode",
			Type:     "string",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]address.postalCode", Type: "string"},
			},
		},
		"address-state": SearchParamInfo{
			Resource: "Person",
			Name:     "address-state",
			Type:     "string",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]address.state", Type: "string"},
			},
		},
		"address-use": SearchParamInfo{
			Resource: "Person",
			Name:     "address-use",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]address.use", Type: "code"},
			},
		},
		"birthdate": SearchParamInfo{
			Resource: "Person",
			Name:     "birthdate",
			Type:     "date",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "birthDate", Type: "date"},
			},
		},
		"gender": SearchParamInfo{
			Resource: "Person",
			Name:     "gender",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "gender", Type: "code"},
			},
		},
		"identifier": SearchParamInfo{
			Resource: "Person",
			Name:     "identifier",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]identifier", Type: "Identifier"},
			},
		},
		"link": SearchParamInfo{
			Resource: "Person",
			Name:     "link",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]link.target", Type: "Reference"},
			},
			Targets: []string{
				"Patient",
				"Person",
				"Practitioner",
				"RelatedPerson",
			},
		},
		"name": SearchParamInfo{
			Resource: "Person",
			Name:     "name",
			Type:     "string",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]name", Type: "HumanName"},
			},
		},
		"organization": SearchParamInfo{
			Resource: "Person",
			Name:     "organization",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "managingOrganization", Type: "Reference"},
			},
			Targets: []string{
				"Organization",
			},
		},
		"patient": SearchParamInfo{
			Resource: "Person",
			Name:     "patient",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]link.target", Type: "Reference"},
			},
			Targets: []string{
				"Patient",
			},
		},
		"phonetic": SearchParamInfo{
			Resource: "Person",
			Name:     "phonetic",
			Type:     "string",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]name", Type: "HumanName"},
			},
		},
		"practitioner": SearchParamInfo{
			Resource: "Person",
			Name:     "practitioner",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]link.target", Type: "Reference"},
			},
			Targets: []string{
				"Practitioner",
			},
		},
		"relatedperson": SearchParamInfo{
			Resource: "Person",
			Name:     "relatedperson",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]link.target", Type: "Reference"},
			},
			Targets: []string{
				"RelatedPerson",
			},
		},
		"telecom": SearchParamInfo{
			Resource: "Person",
			Name:     "telecom",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]telecom", Type: "ContactPoint"},
			},
		},
	},
	"Practitioner": map[string]SearchParamInfo{
		"_id": SearchParamInfo{
			Resource: "Practitioner",
			Name:     "_id",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "_id", Type: "id"},
			},
		},
		"_lastUpdated": SearchParamInfo{
			Resource: "Practitioner",
			Name:     "_lastUpdated",
			Type:     "date",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.lastUpdated", Type: "instant"},
			},
		},
		"_profile": SearchParamInfo{
			Resource: "Practitioner",
			Name:     "_profile",
			Type:     "uri",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]profile", Type: "uri"},
			},
		},
		"_security": SearchParamInfo{
			Resource: "Practitioner",
			Name:     "_security",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]security", Type: "Coding"},
			},
		},
		"_tag": SearchParamInfo{
			Resource: "Practitioner",
			Name:     "_tag",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]tag", Type: "Coding"},
			},
		},
		"address": SearchParamInfo{
			Resource: "Practitioner",
			Name:     "address",
			Type:     "string",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]address", Type: "Address"},
			},
		},
		"address-city": SearchParamInfo{
			Resource: "Practitioner",
			Name:     "address-city",
			Type:     "string",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]address.city", Type: "string"},
			},
		},
		"address-country": SearchParamInfo{
			Resource: "Practitioner",
			Name:     "address-country",
			Type:     "string",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]address.country", Type: "string"},
			},
		},
		"address-postalcode": SearchParamInfo{
			Resource: "Practitioner",
			Name:     "address-postalcode",
			Type:     "string",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]address.postalCode", Type: "string"},
			},
		},
		"address-state": SearchParamInfo{
			Resource: "Practitioner",
			Name:     "address-state",
			Type:     "string",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]address.state", Type: "string"},
			},
		},
		"address-use": SearchParamInfo{
			Resource: "Practitioner",
			Name:     "address-use",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]address.use", Type: "code"},
			},
		},
		"communication": SearchParamInfo{
			Resource: "Practitioner",
			Name:     "communication",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]communication", Type: "CodeableConcept"},
			},
		},
		"family": SearchParamInfo{
			Resource: "Practitioner",
			Name:     "family",
			Type:     "string",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "name.[]family", Type: "string"},
			},
		},
		"gender": SearchParamInfo{
			Resource: "Practitioner",
			Name:     "gender",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "gender", Type: "code"},
			},
		},
		"given": SearchParamInfo{
			Resource: "Practitioner",
			Name:     "given",
			Type:     "string",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "name.[]given", Type: "string"},
			},
		},
		"identifier": SearchParamInfo{
			Resource: "Practitioner",
			Name:     "identifier",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]identifier", Type: "Identifier"},
			},
		},
		"location": SearchParamInfo{
			Resource: "Practitioner",
			Name:     "location",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]practitionerRole.[]location", Type: "Reference"},
			},
			Targets: []string{
				"Location",
			},
		},
		"name": SearchParamInfo{
			Resource: "Practitioner",
			Name:     "name",
			Type:     "string",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "name", Type: "HumanName"},
			},
		},
		"organization": SearchParamInfo{
			Resource: "Practitioner",
			Name:     "organization",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]practitionerRole.managingOrganization", Type: "Reference"},
			},
			Targets: []string{
				"Organization",
			},
		},
		"phonetic": SearchParamInfo{
			Resource: "Practitioner",
			Name:     "phonetic",
			Type:     "string",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "name", Type: "HumanName"},
			},
		},
		"role": SearchParamInfo{
			Resource: "Practitioner",
			Name:     "role",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]practitionerRole.role", Type: "CodeableConcept"},
			},
		},
		"specialty": SearchParamInfo{
			Resource: "Practitioner",
			Name:     "specialty",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]practitionerRole.[]specialty", Type: "CodeableConcept"},
			},
		},
		"telecom": SearchParamInfo{
			Resource: "Practitioner",
			Name:     "telecom",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]telecom", Type: "ContactPoint"},
			},
		},
	},
	"Procedure": map[string]SearchParamInfo{
		"_id": SearchParamInfo{
			Resource: "Procedure",
			Name:     "_id",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "_id", Type: "id"},
			},
		},
		"_lastUpdated": SearchParamInfo{
			Resource: "Procedure",
			Name:     "_lastUpdated",
			Type:     "date",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.lastUpdated", Type: "instant"},
			},
		},
		"_profile": SearchParamInfo{
			Resource: "Procedure",
			Name:     "_profile",
			Type:     "uri",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]profile", Type: "uri"},
			},
		},
		"_security": SearchParamInfo{
			Resource: "Procedure",
			Name:     "_security",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]security", Type: "Coding"},
			},
		},
		"_tag": SearchParamInfo{
			Resource: "Procedure",
			Name:     "_tag",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]tag", Type: "Coding"},
			},
		},
		"code": SearchParamInfo{
			Resource: "Procedure",
			Name:     "code",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "code", Type: "CodeableConcept"},
			},
		},
		"date": SearchParamInfo{
			Resource: "Procedure",
			Name:     "date",
			Type:     "date",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "performedDateTime", Type: "dateTime"},
				SearchParamPath{Path: "performedPeriod", Type: "Period"},
			},
		},
		"encounter": SearchParamInfo{
			Resource: "Procedure",
			Name:     "encounter",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "encounter", Type: "Reference"},
			},
			Targets: []string{
				"Encounter",
			},
		},
		"identifier": SearchParamInfo{
			Resource: "Procedure",
			Name:     "identifier",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]identifier", Type: "Identifier"},
			},
		},
		"location": SearchParamInfo{
			Resource: "Procedure",
			Name:     "location",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "location", Type: "Reference"},
			},
			Targets: []string{
				"Location",
			},
		},
		"patient": SearchParamInfo{
			Resource: "Procedure",
			Name:     "patient",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "subject", Type: "Reference"},
			},
			Targets: []string{
				"Patient",
			},
		},
		"performer": SearchParamInfo{
			Resource: "Procedure",
			Name:     "performer",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]performer.actor", Type: "Reference"},
			},
			Targets: []string{
				"Organization",
				"Patient",
				"Practitioner",
				"RelatedPerson",
			},
		},
		"subject": SearchParamInfo{
			Resource: "Procedure",
			Name:     "subject",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "subject", Type: "Reference"},
			},
			Targets: []string{
				"Group",
				"Patient",
			},
		},
	},
	"ProcedureRequest": map[string]SearchParamInfo{
		"_id": SearchParamInfo{
			Resource: "ProcedureRequest",
			Name:     "_id",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "_id", Type: "id"},
			},
		},
		"_lastUpdated": SearchParamInfo{
			Resource: "ProcedureRequest",
			Name:     "_lastUpdated",
			Type:     "date",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.lastUpdated", Type: "instant"},
			},
		},
		"_profile": SearchParamInfo{
			Resource: "ProcedureRequest",
			Name:     "_profile",
			Type:     "uri",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]profile", Type: "uri"},
			},
		},
		"_security": SearchParamInfo{
			Resource: "ProcedureRequest",
			Name:     "_security",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]security", Type: "Coding"},
			},
		},
		"_tag": SearchParamInfo{
			Resource: "ProcedureRequest",
			Name:     "_tag",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]tag", Type: "Coding"},
			},
		},
		"encounter": SearchParamInfo{
			Resource: "ProcedureRequest",
			Name:     "encounter",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "encounter", Type: "Reference"},
			},
			Targets: []string{
				"Encounter",
			},
		},
		"identifier": SearchParamInfo{
			Resource: "ProcedureRequest",
			Name:     "identifier",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]identifier", Type: "Identifier"},
			},
		},
		"orderer": SearchParamInfo{
			Resource: "ProcedureRequest",
			Name:     "orderer",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "orderer", Type: "Reference"},
			},
			Targets: []string{
				"Device",
				"Patient",
				"Practitioner",
				"RelatedPerson",
			},
		},
		"patient": SearchParamInfo{
			Resource: "ProcedureRequest",
			Name:     "patient",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "subject", Type: "Reference"},
			},
			Targets: []string{
				"Patient",
			},
		},
		"performer": SearchParamInfo{
			Resource: "ProcedureRequest",
			Name:     "performer",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "performer", Type: "Reference"},
			},
			Targets: []string{
				"Organization",
				"Patient",
				"Practitioner",
				"RelatedPerson",
			},
		},
		"subject": SearchParamInfo{
			Resource: "ProcedureRequest",
			Name:     "subject",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "subject", Type: "Reference"},
			},
			Targets: []string{
				"Group",
				"Patient",
			},
		},
	},
	"ProcessRequest": map[string]SearchParamInfo{
		"_id": SearchParamInfo{
			Resource: "ProcessRequest",
			Name:     "_id",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "_id", Type: "id"},
			},
		},
		"_lastUpdated": SearchParamInfo{
			Resource: "ProcessRequest",
			Name:     "_lastUpdated",
			Type:     "date",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.lastUpdated", Type: "instant"},
			},
		},
		"_profile": SearchParamInfo{
			Resource: "ProcessRequest",
			Name:     "_profile",
			Type:     "uri",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]profile", Type: "uri"},
			},
		},
		"_security": SearchParamInfo{
			Resource: "ProcessRequest",
			Name:     "_security",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]security", Type: "Coding"},
			},
		},
		"_tag": SearchParamInfo{
			Resource: "ProcessRequest",
			Name:     "_tag",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]tag", Type: "Coding"},
			},
		},
		"action": SearchParamInfo{
			Resource: "ProcessRequest",
			Name:     "action",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "action", Type: "code"},
			},
		},
		"identifier": SearchParamInfo{
			Resource: "ProcessRequest",
			Name:     "identifier",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]identifier", Type: "Identifier"},
			},
		},
		"organization": SearchParamInfo{
			Resource: "ProcessRequest",
			Name:     "organization",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "organization", Type: "Reference"},
			},
			Targets: []string{
				"Organization",
			},
		},
		"provider": SearchParamInfo{
			Resource: "ProcessRequest",
			Name:     "provider",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "provider", Type: "Reference"},
			},
			Targets: []string{
				"Practitioner",
			},
		},
	},
	"ProcessResponse": map[string]SearchParamInfo{
		"_id": SearchParamInfo{
			Resource: "ProcessResponse",
			Name:     "_id",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "_id", Type: "id"},
			},
		},
		"_lastUpdated": SearchParamInfo{
			Resource: "ProcessResponse",
			Name:     "_lastUpdated",
			Type:     "date",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.lastUpdated", Type: "instant"},
			},
		},
		"_profile": SearchParamInfo{
			Resource: "ProcessResponse",
			Name:     "_profile",
			Type:     "uri",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]profile", Type: "uri"},
			},
		},
		"_security": SearchParamInfo{
			Resource: "ProcessResponse",
			Name:     "_security",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]security", Type: "Coding"},
			},
		},
		"_tag": SearchParamInfo{
			Resource: "ProcessResponse",
			Name:     "_tag",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]tag", Type: "Coding"},
			},
		},
		"identifier": SearchParamInfo{
			Resource: "ProcessResponse",
			Name:     "identifier",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]identifier", Type: "Identifier"},
			},
		},
		"organization": SearchParamInfo{
			Resource: "ProcessResponse",
			Name:     "organization",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "organization", Type: "Reference"},
			},
			Targets: []string{
				"Organization",
			},
		},
		"request": SearchParamInfo{
			Resource: "ProcessResponse",
			Name:     "request",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "request", Type: "Reference"},
			},
			Targets: []string{
				"Any",
			},
		},
		"requestorganization": SearchParamInfo{
			Resource: "ProcessResponse",
			Name:     "requestorganization",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "requestOrganization", Type: "Reference"},
			},
			Targets: []string{
				"Organization",
			},
		},
		"requestprovider": SearchParamInfo{
			Resource: "ProcessResponse",
			Name:     "requestprovider",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "requestProvider", Type: "Reference"},
			},
			Targets: []string{
				"Practitioner",
			},
		},
	},
	"Provenance": map[string]SearchParamInfo{
		"_id": SearchParamInfo{
			Resource: "Provenance",
			Name:     "_id",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "_id", Type: "id"},
			},
		},
		"_lastUpdated": SearchParamInfo{
			Resource: "Provenance",
			Name:     "_lastUpdated",
			Type:     "date",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.lastUpdated", Type: "instant"},
			},
		},
		"_profile": SearchParamInfo{
			Resource: "Provenance",
			Name:     "_profile",
			Type:     "uri",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]profile", Type: "uri"},
			},
		},
		"_security": SearchParamInfo{
			Resource: "Provenance",
			Name:     "_security",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]security", Type: "Coding"},
			},
		},
		"_tag": SearchParamInfo{
			Resource: "Provenance",
			Name:     "_tag",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]tag", Type: "Coding"},
			},
		},
		"agent": SearchParamInfo{
			Resource: "Provenance",
			Name:     "agent",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]agent.actor", Type: "Reference"},
			},
			Targets: []string{
				"Device",
				"Organization",
				"Patient",
				"Practitioner",
				"RelatedPerson",
			},
		},
		"end": SearchParamInfo{
			Resource: "Provenance",
			Name:     "end",
			Type:     "date",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "period.end", Type: "dateTime"},
			},
		},
		"entity": SearchParamInfo{
			Resource: "Provenance",
			Name:     "entity",
			Type:     "uri",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]entity.reference", Type: "uri"},
			},
		},
		"entitytype": SearchParamInfo{
			Resource: "Provenance",
			Name:     "entitytype",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]entity.type", Type: "Coding"},
			},
		},
		"location": SearchParamInfo{
			Resource: "Provenance",
			Name:     "location",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "location", Type: "Reference"},
			},
			Targets: []string{
				"Location",
			},
		},
		"patient": SearchParamInfo{
			Resource: "Provenance",
			Name:     "patient",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]target", Type: "Reference"},
			},
			Targets: []string{
				"Patient",
			},
		},
		"sigtype": SearchParamInfo{
			Resource: "Provenance",
			Name:     "sigtype",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]signature.[]type", Type: "Coding"},
			},
		},
		"start": SearchParamInfo{
			Resource: "Provenance",
			Name:     "start",
			Type:     "date",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "period.start", Type: "dateTime"},
			},
		},
		"target": SearchParamInfo{
			Resource: "Provenance",
			Name:     "target",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]target", Type: "Reference"},
			},
			Targets: []string{
				"Any",
			},
		},
		"userid": SearchParamInfo{
			Resource: "Provenance",
			Name:     "userid",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]agent.userId", Type: "Identifier"},
			},
		},
	},
	"Questionnaire": map[string]SearchParamInfo{
		"_id": SearchParamInfo{
			Resource: "Questionnaire",
			Name:     "_id",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "_id", Type: "id"},
			},
		},
		"_lastUpdated": SearchParamInfo{
			Resource: "Questionnaire",
			Name:     "_lastUpdated",
			Type:     "date",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.lastUpdated", Type: "instant"},
			},
		},
		"_profile": SearchParamInfo{
			Resource: "Questionnaire",
			Name:     "_profile",
			Type:     "uri",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]profile", Type: "uri"},
			},
		},
		"_security": SearchParamInfo{
			Resource: "Questionnaire",
			Name:     "_security",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]security", Type: "Coding"},
			},
		},
		"_tag": SearchParamInfo{
			Resource: "Questionnaire",
			Name:     "_tag",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]tag", Type: "Coding"},
			},
		},
		"code": SearchParamInfo{
			Resource: "Questionnaire",
			Name:     "code",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "group.[]concept", Type: "Coding"},
			},
		},
		"date": SearchParamInfo{
			Resource: "Questionnaire",
			Name:     "date",
			Type:     "date",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "date", Type: "dateTime"},
			},
		},
		"identifier": SearchParamInfo{
			Resource: "Questionnaire",
			Name:     "identifier",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]identifier", Type: "Identifier"},
			},
		},
		"publisher": SearchParamInfo{
			Resource: "Questionnaire",
			Name:     "publisher",
			Type:     "string",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "publisher", Type: "string"},
			},
		},
		"status": SearchParamInfo{
			Resource: "Questionnaire",
			Name:     "status",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "status", Type: "code"},
			},
		},
		"title": SearchParamInfo{
			Resource: "Questionnaire",
			Name:     "title",
			Type:     "string",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "group.title", Type: "string"},
			},
		},
		"version": SearchParamInfo{
			Resource: "Questionnaire",
			Name:     "version",
			Type:     "string",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "version", Type: "string"},
			},
		},
	},
	"QuestionnaireResponse": map[string]SearchParamInfo{
		"_id": SearchParamInfo{
			Resource: "QuestionnaireResponse",
			Name:     "_id",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "_id", Type: "id"},
			},
		},
		"_lastUpdated": SearchParamInfo{
			Resource: "QuestionnaireResponse",
			Name:     "_lastUpdated",
			Type:     "date",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.lastUpdated", Type: "instant"},
			},
		},
		"_profile": SearchParamInfo{
			Resource: "QuestionnaireResponse",
			Name:     "_profile",
			Type:     "uri",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]profile", Type: "uri"},
			},
		},
		"_security": SearchParamInfo{
			Resource: "QuestionnaireResponse",
			Name:     "_security",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]security", Type: "Coding"},
			},
		},
		"_tag": SearchParamInfo{
			Resource: "QuestionnaireResponse",
			Name:     "_tag",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]tag", Type: "Coding"},
			},
		},
		"author": SearchParamInfo{
			Resource: "QuestionnaireResponse",
			Name:     "author",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "author", Type: "Reference"},
			},
			Targets: []string{
				"Device",
				"Patient",
				"Practitioner",
				"RelatedPerson",
			},
		},
		"authored": SearchParamInfo{
			Resource: "QuestionnaireResponse",
			Name:     "authored",
			Type:     "date",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "authored", Type: "dateTime"},
			},
		},
		"encounter": SearchParamInfo{
			Resource: "QuestionnaireResponse",
			Name:     "encounter",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "encounter", Type: "Reference"},
			},
			Targets: []string{
				"Encounter",
			},
		},
		"patient": SearchParamInfo{
			Resource: "QuestionnaireResponse",
			Name:     "patient",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "subject", Type: "Reference"},
			},
			Targets: []string{
				"Patient",
			},
		},
		"questionnaire": SearchParamInfo{
			Resource: "QuestionnaireResponse",
			Name:     "questionnaire",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "questionnaire", Type: "Reference"},
			},
			Targets: []string{
				"Questionnaire",
			},
		},
		"source": SearchParamInfo{
			Resource: "QuestionnaireResponse",
			Name:     "source",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "source", Type: "Reference"},
			},
			Targets: []string{
				"Patient",
				"Practitioner",
				"RelatedPerson",
			},
		},
		"status": SearchParamInfo{
			Resource: "QuestionnaireResponse",
			Name:     "status",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "status", Type: "code"},
			},
		},
		"subject": SearchParamInfo{
			Resource: "QuestionnaireResponse",
			Name:     "subject",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "subject", Type: "Reference"},
			},
			Targets: []string{
				"Any",
			},
		},
	},
	"ReferralRequest": map[string]SearchParamInfo{
		"_id": SearchParamInfo{
			Resource: "ReferralRequest",
			Name:     "_id",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "_id", Type: "id"},
			},
		},
		"_lastUpdated": SearchParamInfo{
			Resource: "ReferralRequest",
			Name:     "_lastUpdated",
			Type:     "date",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.lastUpdated", Type: "instant"},
			},
		},
		"_profile": SearchParamInfo{
			Resource: "ReferralRequest",
			Name:     "_profile",
			Type:     "uri",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]profile", Type: "uri"},
			},
		},
		"_security": SearchParamInfo{
			Resource: "ReferralRequest",
			Name:     "_security",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]security", Type: "Coding"},
			},
		},
		"_tag": SearchParamInfo{
			Resource: "ReferralRequest",
			Name:     "_tag",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]tag", Type: "Coding"},
			},
		},
		"date": SearchParamInfo{
			Resource: "ReferralRequest",
			Name:     "date",
			Type:     "date",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "date", Type: "dateTime"},
			},
		},
		"patient": SearchParamInfo{
			Resource: "ReferralRequest",
			Name:     "patient",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "patient", Type: "Reference"},
			},
			Targets: []string{
				"Patient",
			},
		},
		"priority": SearchParamInfo{
			Resource: "ReferralRequest",
			Name:     "priority",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "priority", Type: "CodeableConcept"},
			},
		},
		"recipient": SearchParamInfo{
			Resource: "ReferralRequest",
			Name:     "recipient",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]recipient", Type: "Reference"},
			},
			Targets: []string{
				"Organization",
				"Practitioner",
			},
		},
		"requester": SearchParamInfo{
			Resource: "ReferralRequest",
			Name:     "requester",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "requester", Type: "Reference"},
			},
			Targets: []string{
				"Organization",
				"Patient",
				"Practitioner",
			},
		},
		"specialty": SearchParamInfo{
			Resource: "ReferralRequest",
			Name:     "specialty",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "specialty", Type: "CodeableConcept"},
			},
		},
		"status": SearchParamInfo{
			Resource: "ReferralRequest",
			Name:     "status",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "status", Type: "code"},
			},
		},
		"type": SearchParamInfo{
			Resource: "ReferralRequest",
			Name:     "type",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "type", Type: "CodeableConcept"},
			},
		},
	},
	"RelatedPerson": map[string]SearchParamInfo{
		"_id": SearchParamInfo{
			Resource: "RelatedPerson",
			Name:     "_id",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "_id", Type: "id"},
			},
		},
		"_lastUpdated": SearchParamInfo{
			Resource: "RelatedPerson",
			Name:     "_lastUpdated",
			Type:     "date",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.lastUpdated", Type: "instant"},
			},
		},
		"_profile": SearchParamInfo{
			Resource: "RelatedPerson",
			Name:     "_profile",
			Type:     "uri",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]profile", Type: "uri"},
			},
		},
		"_security": SearchParamInfo{
			Resource: "RelatedPerson",
			Name:     "_security",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]security", Type: "Coding"},
			},
		},
		"_tag": SearchParamInfo{
			Resource: "RelatedPerson",
			Name:     "_tag",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]tag", Type: "Coding"},
			},
		},
		"address": SearchParamInfo{
			Resource: "RelatedPerson",
			Name:     "address",
			Type:     "string",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]address", Type: "Address"},
			},
		},
		"address-city": SearchParamInfo{
			Resource: "RelatedPerson",
			Name:     "address-city",
			Type:     "string",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]address.city", Type: "string"},
			},
		},
		"address-country": SearchParamInfo{
			Resource: "RelatedPerson",
			Name:     "address-country",
			Type:     "string",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]address.country", Type: "string"},
			},
		},
		"address-postalcode": SearchParamInfo{
			Resource: "RelatedPerson",
			Name:     "address-postalcode",
			Type:     "string",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]address.postalCode", Type: "string"},
			},
		},
		"address-state": SearchParamInfo{
			Resource: "RelatedPerson",
			Name:     "address-state",
			Type:     "string",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]address.state", Type: "string"},
			},
		},
		"address-use": SearchParamInfo{
			Resource: "RelatedPerson",
			Name:     "address-use",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]address.use", Type: "code"},
			},
		},
		"birthdate": SearchParamInfo{
			Resource: "RelatedPerson",
			Name:     "birthdate",
			Type:     "date",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "birthDate", Type: "date"},
			},
		},
		"gender": SearchParamInfo{
			Resource: "RelatedPerson",
			Name:     "gender",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "gender", Type: "code"},
			},
		},
		"identifier": SearchParamInfo{
			Resource: "RelatedPerson",
			Name:     "identifier",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]identifier", Type: "Identifier"},
			},
		},
		"name": SearchParamInfo{
			Resource: "RelatedPerson",
			Name:     "name",
			Type:     "string",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "name", Type: "HumanName"},
			},
		},
		"patient": SearchParamInfo{
			Resource: "RelatedPerson",
			Name:     "patient",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "patient", Type: "Reference"},
			},
			Targets: []string{
				"Patient",
			},
		},
		"phonetic": SearchParamInfo{
			Resource: "RelatedPerson",
			Name:     "phonetic",
			Type:     "string",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "name", Type: "HumanName"},
			},
		},
		"telecom": SearchParamInfo{
			Resource: "RelatedPerson",
			Name:     "telecom",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]telecom", Type: "ContactPoint"},
			},
		},
	},
	"RiskAssessment": map[string]SearchParamInfo{
		"_id": SearchParamInfo{
			Resource: "RiskAssessment",
			Name:     "_id",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "_id", Type: "id"},
			},
		},
		"_lastUpdated": SearchParamInfo{
			Resource: "RiskAssessment",
			Name:     "_lastUpdated",
			Type:     "date",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.lastUpdated", Type: "instant"},
			},
		},
		"_profile": SearchParamInfo{
			Resource: "RiskAssessment",
			Name:     "_profile",
			Type:     "uri",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]profile", Type: "uri"},
			},
		},
		"_security": SearchParamInfo{
			Resource: "RiskAssessment",
			Name:     "_security",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]security", Type: "Coding"},
			},
		},
		"_tag": SearchParamInfo{
			Resource: "RiskAssessment",
			Name:     "_tag",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]tag", Type: "Coding"},
			},
		},
		"condition": SearchParamInfo{
			Resource: "RiskAssessment",
			Name:     "condition",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "condition", Type: "Reference"},
			},
			Targets: []string{
				"Condition",
			},
		},
		"date": SearchParamInfo{
			Resource: "RiskAssessment",
			Name:     "date",
			Type:     "date",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "date", Type: "dateTime"},
			},
		},
		"encounter": SearchParamInfo{
			Resource: "RiskAssessment",
			Name:     "encounter",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "encounter", Type: "Reference"},
			},
			Targets: []string{
				"Encounter",
			},
		},
		"identifier": SearchParamInfo{
			Resource: "RiskAssessment",
			Name:     "identifier",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "identifier", Type: "Identifier"},
			},
		},
		"method": SearchParamInfo{
			Resource: "RiskAssessment",
			Name:     "method",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "method", Type: "CodeableConcept"},
			},
		},
		"patient": SearchParamInfo{
			Resource: "RiskAssessment",
			Name:     "patient",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "subject", Type: "Reference"},
			},
			Targets: []string{
				"Patient",
			},
		},
		"performer": SearchParamInfo{
			Resource: "RiskAssessment",
			Name:     "performer",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "performer", Type: "Reference"},
			},
			Targets: []string{
				"Device",
				"Practitioner",
			},
		},
		"subject": SearchParamInfo{
			Resource: "RiskAssessment",
			Name:     "subject",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "subject", Type: "Reference"},
			},
			Targets: []string{
				"Group",
				"Patient",
			},
		},
	},
	"Schedule": map[string]SearchParamInfo{
		"_id": SearchParamInfo{
			Resource: "Schedule",
			Name:     "_id",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "_id", Type: "id"},
			},
		},
		"_lastUpdated": SearchParamInfo{
			Resource: "Schedule",
			Name:     "_lastUpdated",
			Type:     "date",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.lastUpdated", Type: "instant"},
			},
		},
		"_profile": SearchParamInfo{
			Resource: "Schedule",
			Name:     "_profile",
			Type:     "uri",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]profile", Type: "uri"},
			},
		},
		"_security": SearchParamInfo{
			Resource: "Schedule",
			Name:     "_security",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]security", Type: "Coding"},
			},
		},
		"_tag": SearchParamInfo{
			Resource: "Schedule",
			Name:     "_tag",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]tag", Type: "Coding"},
			},
		},
		"actor": SearchParamInfo{
			Resource: "Schedule",
			Name:     "actor",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "actor", Type: "Reference"},
			},
			Targets: []string{
				"Device",
				"HealthcareService",
				"Location",
				"Patient",
				"Practitioner",
				"RelatedPerson",
			},
		},
		"date": SearchParamInfo{
			Resource: "Schedule",
			Name:     "date",
			Type:     "date",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "planningHorizon", Type: "Period"},
			},
		},
		"identifier": SearchParamInfo{
			Resource: "Schedule",
			Name:     "identifier",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]identifier", Type: "Identifier"},
			},
		},
		"type": SearchParamInfo{
			Resource: "Schedule",
			Name:     "type",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]type", Type: "CodeableConcept"},
			},
		},
	},
	"SearchParameter": map[string]SearchParamInfo{
		"_id": SearchParamInfo{
			Resource: "SearchParameter",
			Name:     "_id",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "_id", Type: "id"},
			},
		},
		"_lastUpdated": SearchParamInfo{
			Resource: "SearchParameter",
			Name:     "_lastUpdated",
			Type:     "date",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.lastUpdated", Type: "instant"},
			},
		},
		"_profile": SearchParamInfo{
			Resource: "SearchParameter",
			Name:     "_profile",
			Type:     "uri",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]profile", Type: "uri"},
			},
		},
		"_security": SearchParamInfo{
			Resource: "SearchParameter",
			Name:     "_security",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]security", Type: "Coding"},
			},
		},
		"_tag": SearchParamInfo{
			Resource: "SearchParameter",
			Name:     "_tag",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]tag", Type: "Coding"},
			},
		},
		"base": SearchParamInfo{
			Resource: "SearchParameter",
			Name:     "base",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "base", Type: "code"},
			},
		},
		"code": SearchParamInfo{
			Resource: "SearchParameter",
			Name:     "code",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "code", Type: "code"},
			},
		},
		"description": SearchParamInfo{
			Resource: "SearchParameter",
			Name:     "description",
			Type:     "string",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "description", Type: "string"},
			},
		},
		"name": SearchParamInfo{
			Resource: "SearchParameter",
			Name:     "name",
			Type:     "string",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "name", Type: "string"},
			},
		},
		"target": SearchParamInfo{
			Resource: "SearchParameter",
			Name:     "target",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]target", Type: "code"},
			},
		},
		"type": SearchParamInfo{
			Resource: "SearchParameter",
			Name:     "type",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "type", Type: "code"},
			},
		},
		"url": SearchParamInfo{
			Resource: "SearchParameter",
			Name:     "url",
			Type:     "uri",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "url", Type: "uri"},
			},
		},
	},
	"Slot": map[string]SearchParamInfo{
		"_id": SearchParamInfo{
			Resource: "Slot",
			Name:     "_id",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "_id", Type: "id"},
			},
		},
		"_lastUpdated": SearchParamInfo{
			Resource: "Slot",
			Name:     "_lastUpdated",
			Type:     "date",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.lastUpdated", Type: "instant"},
			},
		},
		"_profile": SearchParamInfo{
			Resource: "Slot",
			Name:     "_profile",
			Type:     "uri",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]profile", Type: "uri"},
			},
		},
		"_security": SearchParamInfo{
			Resource: "Slot",
			Name:     "_security",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]security", Type: "Coding"},
			},
		},
		"_tag": SearchParamInfo{
			Resource: "Slot",
			Name:     "_tag",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]tag", Type: "Coding"},
			},
		},
		"fb-type": SearchParamInfo{
			Resource: "Slot",
			Name:     "fb-type",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "freeBusyType", Type: "code"},
			},
		},
		"identifier": SearchParamInfo{
			Resource: "Slot",
			Name:     "identifier",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]identifier", Type: "Identifier"},
			},
		},
		"schedule": SearchParamInfo{
			Resource: "Slot",
			Name:     "schedule",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "schedule", Type: "Reference"},
			},
			Targets: []string{
				"Schedule",
			},
		},
		"slot-type": SearchParamInfo{
			Resource: "Slot",
			Name:     "slot-type",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "type", Type: "CodeableConcept"},
			},
		},
		"start": SearchParamInfo{
			Resource: "Slot",
			Name:     "start",
			Type:     "date",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "start", Type: "instant"},
			},
		},
	},
	"Specimen": map[string]SearchParamInfo{
		"_id": SearchParamInfo{
			Resource: "Specimen",
			Name:     "_id",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "_id", Type: "id"},
			},
		},
		"_lastUpdated": SearchParamInfo{
			Resource: "Specimen",
			Name:     "_lastUpdated",
			Type:     "date",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.lastUpdated", Type: "instant"},
			},
		},
		"_profile": SearchParamInfo{
			Resource: "Specimen",
			Name:     "_profile",
			Type:     "uri",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]profile", Type: "uri"},
			},
		},
		"_security": SearchParamInfo{
			Resource: "Specimen",
			Name:     "_security",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]security", Type: "Coding"},
			},
		},
		"_tag": SearchParamInfo{
			Resource: "Specimen",
			Name:     "_tag",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]tag", Type: "Coding"},
			},
		},
		"accession": SearchParamInfo{
			Resource: "Specimen",
			Name:     "accession",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "accessionIdentifier", Type: "Identifier"},
			},
		},
		"bodysite": SearchParamInfo{
			Resource: "Specimen",
			Name:     "bodysite",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "collection.bodySite", Type: "CodeableConcept"},
			},
		},
		"collected": SearchParamInfo{
			Resource: "Specimen",
			Name:     "collected",
			Type:     "date",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "collection.collectedDateTime", Type: "dateTime"},
				SearchParamPath{Path: "collection.collectedPeriod", Type: "Period"},
			},
		},
		"collector": SearchParamInfo{
			Resource: "Specimen",
			Name:     "collector",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "collection.collector", Type: "Reference"},
			},
			Targets: []string{
				"Practitioner",
			},
		},
		"container": SearchParamInfo{
			Resource: "Specimen",
			Name:     "container",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]container.type", Type: "CodeableConcept"},
			},
		},
		"container-id": SearchParamInfo{
			Resource: "Specimen",
			Name:     "container-id",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]container.[]identifier", Type: "Identifier"},
			},
		},
		"identifier": SearchParamInfo{
			Resource: "Specimen",
			Name:     "identifier",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]identifier", Type: "Identifier"},
			},
		},
		"parent": SearchParamInfo{
			Resource: "Specimen",
			Name:     "parent",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]parent", Type: "Reference"},
			},
			Targets: []string{
				"Specimen",
			},
		},
		"patient": SearchParamInfo{
			Resource: "Specimen",
			Name:     "patient",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "subject", Type: "Reference"},
			},
			Targets: []string{
				"Patient",
			},
		},
		"subject": SearchParamInfo{
			Resource: "Specimen",
			Name:     "subject",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "subject", Type: "Reference"},
			},
			Targets: []string{
				"Device",
				"Group",
				"Patient",
				"Substance",
			},
		},
		"type": SearchParamInfo{
			Resource: "Specimen",
			Name:     "type",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "type", Type: "CodeableConcept"},
			},
		},
	},
	"StructureDefinition": map[string]SearchParamInfo{
		"_id": SearchParamInfo{
			Resource: "StructureDefinition",
			Name:     "_id",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "_id", Type: "id"},
			},
		},
		"_lastUpdated": SearchParamInfo{
			Resource: "StructureDefinition",
			Name:     "_lastUpdated",
			Type:     "date",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.lastUpdated", Type: "instant"},
			},
		},
		"_profile": SearchParamInfo{
			Resource: "StructureDefinition",
			Name:     "_profile",
			Type:     "uri",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]profile", Type: "uri"},
			},
		},
		"_security": SearchParamInfo{
			Resource: "StructureDefinition",
			Name:     "_security",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]security", Type: "Coding"},
			},
		},
		"_tag": SearchParamInfo{
			Resource: "StructureDefinition",
			Name:     "_tag",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]tag", Type: "Coding"},
			},
		},
		"abstract": SearchParamInfo{
			Resource: "StructureDefinition",
			Name:     "abstract",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "abstract", Type: "boolean"},
			},
		},
		"base": SearchParamInfo{
			Resource: "StructureDefinition",
			Name:     "base",
			Type:     "uri",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "base", Type: "uri"},
			},
		},
		"base-path": SearchParamInfo{
			Resource: "StructureDefinition",
			Name:     "base-path",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "differential.[]element.base.path", Type: "string"},
				SearchParamPath{Path: "snapshot.[]element.base.path", Type: "string"},
			},
		},
		"code": SearchParamInfo{
			Resource: "StructureDefinition",
			Name:     "code",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]code", Type: "Coding"},
			},
		},
		"context": SearchParamInfo{
			Resource: "StructureDefinition",
			Name:     "context",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]useContext", Type: "CodeableConcept"},
			},
		},
		"context-type": SearchParamInfo{
			Resource: "StructureDefinition",
			Name:     "context-type",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "contextType", Type: "code"},
			},
		},
		"date": SearchParamInfo{
			Resource: "StructureDefinition",
			Name:     "date",
			Type:     "date",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "date", Type: "dateTime"},
			},
		},
		"description": SearchParamInfo{
			Resource: "StructureDefinition",
			Name:     "description",
			Type:     "string",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "description", Type: "string"},
			},
		},
		"display": SearchParamInfo{
			Resource: "StructureDefinition",
			Name:     "display",
			Type:     "string",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "display", Type: "string"},
			},
		},
		"experimental": SearchParamInfo{
			Resource: "StructureDefinition",
			Name:     "experimental",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "experimental", Type: "boolean"},
			},
		},
		"ext-context": SearchParamInfo{
			Resource: "StructureDefinition",
			Name:     "ext-context",
			Type:     "string",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]context", Type: "string"},
			},
		},
		"identifier": SearchParamInfo{
			Resource: "StructureDefinition",
			Name:     "identifier",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]identifier", Type: "Identifier"},
			},
		},
		"kind": SearchParamInfo{
			Resource: "StructureDefinition",
			Name:     "kind",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "kind", Type: "code"},
			},
		},
		"name": SearchParamInfo{
			Resource: "StructureDefinition",
			Name:     "name",
			Type:     "string",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "name", Type: "string"},
			},
		},
		"path": SearchParamInfo{
			Resource: "StructureDefinition",
			Name:     "path",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "differential.[]element.path", Type: "string"},
				SearchParamPath{Path: "snapshot.[]element.path", Type: "string"},
			},
		},
		"publisher": SearchParamInfo{
			Resource: "StructureDefinition",
			Name:     "publisher",
			Type:     "string",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "publisher", Type: "string"},
			},
		},
		"status": SearchParamInfo{
			Resource: "StructureDefinition",
			Name:     "status",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "status", Type: "code"},
			},
		},
		"type": SearchParamInfo{
			Resource: "StructureDefinition",
			Name:     "type",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "constrainedType", Type: "code"},
			},
		},
		"url": SearchParamInfo{
			Resource: "StructureDefinition",
			Name:     "url",
			Type:     "uri",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "url", Type: "uri"},
			},
		},
		"valueset": SearchParamInfo{
			Resource: "StructureDefinition",
			Name:     "valueset",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "snapshot.[]element.binding.valueSetReference", Type: "Reference"},
			},
			Targets: []string{
				"ValueSet",
			},
		},
		"version": SearchParamInfo{
			Resource: "StructureDefinition",
			Name:     "version",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "version", Type: "string"},
			},
		},
	},
	"Subscription": map[string]SearchParamInfo{
		"_id": SearchParamInfo{
			Resource: "Subscription",
			Name:     "_id",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "_id", Type: "id"},
			},
		},
		"_lastUpdated": SearchParamInfo{
			Resource: "Subscription",
			Name:     "_lastUpdated",
			Type:     "date",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.lastUpdated", Type: "instant"},
			},
		},
		"_profile": SearchParamInfo{
			Resource: "Subscription",
			Name:     "_profile",
			Type:     "uri",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]profile", Type: "uri"},
			},
		},
		"_security": SearchParamInfo{
			Resource: "Subscription",
			Name:     "_security",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]security", Type: "Coding"},
			},
		},
		"_tag": SearchParamInfo{
			Resource: "Subscription",
			Name:     "_tag",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]tag", Type: "Coding"},
			},
		},
		"contact": SearchParamInfo{
			Resource: "Subscription",
			Name:     "contact",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]contact", Type: "ContactPoint"},
			},
		},
		"criteria": SearchParamInfo{
			Resource: "Subscription",
			Name:     "criteria",
			Type:     "string",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "criteria", Type: "string"},
			},
		},
		"payload": SearchParamInfo{
			Resource: "Subscription",
			Name:     "payload",
			Type:     "string",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "channel.payload", Type: "string"},
			},
		},
		"status": SearchParamInfo{
			Resource: "Subscription",
			Name:     "status",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "status", Type: "code"},
			},
		},
		"tag": SearchParamInfo{
			Resource: "Subscription",
			Name:     "tag",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]tag", Type: "Coding"},
			},
		},
		"type": SearchParamInfo{
			Resource: "Subscription",
			Name:     "type",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "channel.type", Type: "code"},
			},
		},
		"url": SearchParamInfo{
			Resource: "Subscription",
			Name:     "url",
			Type:     "uri",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "channel.endpoint", Type: "uri"},
			},
		},
	},
	"Substance": map[string]SearchParamInfo{
		"_id": SearchParamInfo{
			Resource: "Substance",
			Name:     "_id",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "_id", Type: "id"},
			},
		},
		"_lastUpdated": SearchParamInfo{
			Resource: "Substance",
			Name:     "_lastUpdated",
			Type:     "date",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.lastUpdated", Type: "instant"},
			},
		},
		"_profile": SearchParamInfo{
			Resource: "Substance",
			Name:     "_profile",
			Type:     "uri",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]profile", Type: "uri"},
			},
		},
		"_security": SearchParamInfo{
			Resource: "Substance",
			Name:     "_security",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]security", Type: "Coding"},
			},
		},
		"_tag": SearchParamInfo{
			Resource: "Substance",
			Name:     "_tag",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]tag", Type: "Coding"},
			},
		},
		"category": SearchParamInfo{
			Resource: "Substance",
			Name:     "category",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]category", Type: "CodeableConcept"},
			},
		},
		"code": SearchParamInfo{
			Resource: "Substance",
			Name:     "code",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "code", Type: "CodeableConcept"},
			},
		},
		"container-identifier": SearchParamInfo{
			Resource: "Substance",
			Name:     "container-identifier",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]instance.identifier", Type: "Identifier"},
			},
		},
		"expiry": SearchParamInfo{
			Resource: "Substance",
			Name:     "expiry",
			Type:     "date",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]instance.expiry", Type: "dateTime"},
			},
		},
		"identifier": SearchParamInfo{
			Resource: "Substance",
			Name:     "identifier",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]identifier", Type: "Identifier"},
			},
		},
		"quantity": SearchParamInfo{
			Resource: "Substance",
			Name:     "quantity",
			Type:     "quantity",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]instance.quantity", Type: "SimpleQuantity"},
			},
		},
		"substance": SearchParamInfo{
			Resource: "Substance",
			Name:     "substance",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]ingredient.substance", Type: "Reference"},
			},
			Targets: []string{
				"Substance",
			},
		},
	},
	"SupplyDelivery": map[string]SearchParamInfo{
		"_id": SearchParamInfo{
			Resource: "SupplyDelivery",
			Name:     "_id",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "_id", Type: "id"},
			},
		},
		"_lastUpdated": SearchParamInfo{
			Resource: "SupplyDelivery",
			Name:     "_lastUpdated",
			Type:     "date",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.lastUpdated", Type: "instant"},
			},
		},
		"_profile": SearchParamInfo{
			Resource: "SupplyDelivery",
			Name:     "_profile",
			Type:     "uri",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]profile", Type: "uri"},
			},
		},
		"_security": SearchParamInfo{
			Resource: "SupplyDelivery",
			Name:     "_security",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]security", Type: "Coding"},
			},
		},
		"_tag": SearchParamInfo{
			Resource: "SupplyDelivery",
			Name:     "_tag",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]tag", Type: "Coding"},
			},
		},
		"identifier": SearchParamInfo{
			Resource: "SupplyDelivery",
			Name:     "identifier",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "identifier", Type: "Identifier"},
			},
		},
		"patient": SearchParamInfo{
			Resource: "SupplyDelivery",
			Name:     "patient",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "patient", Type: "Reference"},
			},
			Targets: []string{
				"Patient",
			},
		},
		"receiver": SearchParamInfo{
			Resource: "SupplyDelivery",
			Name:     "receiver",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]receiver", Type: "Reference"},
			},
			Targets: []string{
				"Practitioner",
			},
		},
		"status": SearchParamInfo{
			Resource: "SupplyDelivery",
			Name:     "status",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "status", Type: "code"},
			},
		},
		"supplier": SearchParamInfo{
			Resource: "SupplyDelivery",
			Name:     "supplier",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "supplier", Type: "Reference"},
			},
			Targets: []string{
				"Practitioner",
			},
		},
	},
	"SupplyRequest": map[string]SearchParamInfo{
		"_id": SearchParamInfo{
			Resource: "SupplyRequest",
			Name:     "_id",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "_id", Type: "id"},
			},
		},
		"_lastUpdated": SearchParamInfo{
			Resource: "SupplyRequest",
			Name:     "_lastUpdated",
			Type:     "date",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.lastUpdated", Type: "instant"},
			},
		},
		"_profile": SearchParamInfo{
			Resource: "SupplyRequest",
			Name:     "_profile",
			Type:     "uri",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]profile", Type: "uri"},
			},
		},
		"_security": SearchParamInfo{
			Resource: "SupplyRequest",
			Name:     "_security",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]security", Type: "Coding"},
			},
		},
		"_tag": SearchParamInfo{
			Resource: "SupplyRequest",
			Name:     "_tag",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]tag", Type: "Coding"},
			},
		},
		"date": SearchParamInfo{
			Resource: "SupplyRequest",
			Name:     "date",
			Type:     "date",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "date", Type: "dateTime"},
			},
		},
		"identifier": SearchParamInfo{
			Resource: "SupplyRequest",
			Name:     "identifier",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "identifier", Type: "Identifier"},
			},
		},
		"kind": SearchParamInfo{
			Resource: "SupplyRequest",
			Name:     "kind",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "kind", Type: "CodeableConcept"},
			},
		},
		"patient": SearchParamInfo{
			Resource: "SupplyRequest",
			Name:     "patient",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "patient", Type: "Reference"},
			},
			Targets: []string{
				"Patient",
			},
		},
		"source": SearchParamInfo{
			Resource: "SupplyRequest",
			Name:     "source",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "source", Type: "Reference"},
			},
			Targets: []string{
				"Organization",
				"Patient",
				"Practitioner",
			},
		},
		"status": SearchParamInfo{
			Resource: "SupplyRequest",
			Name:     "status",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "status", Type: "code"},
			},
		},
		"supplier": SearchParamInfo{
			Resource: "SupplyRequest",
			Name:     "supplier",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]supplier", Type: "Reference"},
			},
			Targets: []string{
				"Organization",
			},
		},
	},
	"TestScript": map[string]SearchParamInfo{
		"_id": SearchParamInfo{
			Resource: "TestScript",
			Name:     "_id",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "_id", Type: "id"},
			},
		},
		"_lastUpdated": SearchParamInfo{
			Resource: "TestScript",
			Name:     "_lastUpdated",
			Type:     "date",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.lastUpdated", Type: "instant"},
			},
		},
		"_profile": SearchParamInfo{
			Resource: "TestScript",
			Name:     "_profile",
			Type:     "uri",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]profile", Type: "uri"},
			},
		},
		"_security": SearchParamInfo{
			Resource: "TestScript",
			Name:     "_security",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]security", Type: "Coding"},
			},
		},
		"_tag": SearchParamInfo{
			Resource: "TestScript",
			Name:     "_tag",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]tag", Type: "Coding"},
			},
		},
		"description": SearchParamInfo{
			Resource: "TestScript",
			Name:     "description",
			Type:     "string",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "description", Type: "string"},
			},
		},
		"identifier": SearchParamInfo{
			Resource: "TestScript",
			Name:     "identifier",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "identifier", Type: "Identifier"},
			},
		},
		"name": SearchParamInfo{
			Resource: "TestScript",
			Name:     "name",
			Type:     "string",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "name", Type: "string"},
			},
		},
		"testscript-capability": SearchParamInfo{
			Resource: "TestScript",
			Name:     "testscript-capability",
			Type:     "string",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "metadata.[]capability.description", Type: "string"},
			},
		},
		"testscript-setup-capability": SearchParamInfo{
			Resource: "TestScript",
			Name:     "testscript-setup-capability",
			Type:     "string",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "setup.metadata.[]capability.description", Type: "string"},
			},
		},
		"testscript-test-capability": SearchParamInfo{
			Resource: "TestScript",
			Name:     "testscript-test-capability",
			Type:     "string",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]test.metadata.[]capability.description", Type: "string"},
			},
		},
		"url": SearchParamInfo{
			Resource: "TestScript",
			Name:     "url",
			Type:     "uri",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "url", Type: "uri"},
			},
		},
	},
	"ValueSet": map[string]SearchParamInfo{
		"_id": SearchParamInfo{
			Resource: "ValueSet",
			Name:     "_id",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "_id", Type: "id"},
			},
		},
		"_lastUpdated": SearchParamInfo{
			Resource: "ValueSet",
			Name:     "_lastUpdated",
			Type:     "date",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.lastUpdated", Type: "instant"},
			},
		},
		"_profile": SearchParamInfo{
			Resource: "ValueSet",
			Name:     "_profile",
			Type:     "uri",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]profile", Type: "uri"},
			},
		},
		"_security": SearchParamInfo{
			Resource: "ValueSet",
			Name:     "_security",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]security", Type: "Coding"},
			},
		},
		"_tag": SearchParamInfo{
			Resource: "ValueSet",
			Name:     "_tag",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]tag", Type: "Coding"},
			},
		},
		"code": SearchParamInfo{
			Resource: "ValueSet",
			Name:     "code",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "codeSystem.[]concept.code", Type: "code"},
			},
		},
		"context": SearchParamInfo{
			Resource: "ValueSet",
			Name:     "context",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]useContext", Type: "CodeableConcept"},
			},
		},
		"date": SearchParamInfo{
			Resource: "ValueSet",
			Name:     "date",
			Type:     "date",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "date", Type: "dateTime"},
			},
		},
		"description": SearchParamInfo{
			Resource: "ValueSet",
			Name:     "description",
			Type:     "string",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "description", Type: "string"},
			},
		},
		"expansion": SearchParamInfo{
			Resource: "ValueSet",
			Name:     "expansion",
			Type:     "uri",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "expansion.identifier", Type: "uri"},
			},
		},
		"identifier": SearchParamInfo{
			Resource: "ValueSet",
			Name:     "identifier",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "identifier", Type: "Identifier"},
			},
		},
		"name": SearchParamInfo{
			Resource: "ValueSet",
			Name:     "name",
			Type:     "string",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "name", Type: "string"},
			},
		},
		"publisher": SearchParamInfo{
			Resource: "ValueSet",
			Name:     "publisher",
			Type:     "string",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "publisher", Type: "string"},
			},
		},
		"reference": SearchParamInfo{
			Resource: "ValueSet",
			Name:     "reference",
			Type:     "uri",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "compose.[]include.system", Type: "uri"},
			},
		},
		"status": SearchParamInfo{
			Resource: "ValueSet",
			Name:     "status",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "status", Type: "code"},
			},
		},
		"system": SearchParamInfo{
			Resource: "ValueSet",
			Name:     "system",
			Type:     "uri",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "codeSystem.system", Type: "uri"},
			},
		},
		"url": SearchParamInfo{
			Resource: "ValueSet",
			Name:     "url",
			Type:     "uri",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "url", Type: "uri"},
			},
		},
		"version": SearchParamInfo{
			Resource: "ValueSet",
			Name:     "version",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "version", Type: "string"},
			},
		},
	},
	"VisionPrescription": map[string]SearchParamInfo{
		"_id": SearchParamInfo{
			Resource: "VisionPrescription",
			Name:     "_id",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "_id", Type: "id"},
			},
		},
		"_lastUpdated": SearchParamInfo{
			Resource: "VisionPrescription",
			Name:     "_lastUpdated",
			Type:     "date",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.lastUpdated", Type: "instant"},
			},
		},
		"_profile": SearchParamInfo{
			Resource: "VisionPrescription",
			Name:     "_profile",
			Type:     "uri",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]profile", Type: "uri"},
			},
		},
		"_security": SearchParamInfo{
			Resource: "VisionPrescription",
			Name:     "_security",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]security", Type: "Coding"},
			},
		},
		"_tag": SearchParamInfo{
			Resource: "VisionPrescription",
			Name:     "_tag",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "meta.[]tag", Type: "Coding"},
			},
		},
		"datewritten": SearchParamInfo{
			Resource: "VisionPrescription",
			Name:     "datewritten",
			Type:     "date",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "dateWritten", Type: "dateTime"},
			},
		},
		"encounter": SearchParamInfo{
			Resource: "VisionPrescription",
			Name:     "encounter",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "encounter", Type: "Reference"},
			},
			Targets: []string{
				"Encounter",
			},
		},
		"identifier": SearchParamInfo{
			Resource: "VisionPrescription",
			Name:     "identifier",
			Type:     "token",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "[]identifier", Type: "Identifier"},
			},
		},
		"patient": SearchParamInfo{
			Resource: "VisionPrescription",
			Name:     "patient",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "patient", Type: "Reference"},
			},
			Targets: []string{
				"Patient",
			},
		},
		"prescriber": SearchParamInfo{
			Resource: "VisionPrescription",
			Name:     "prescriber",
			Type:     "reference",
			Paths: []SearchParamPath{
				SearchParamPath{Path: "prescriber", Type: "Reference"},
			},
			Targets: []string{
				"Practitioner",
			},
		},
	},
}

SearchParameterDictionary provides a mapping from FHIR resource names to a list of the search parameters they support.

This file is generated by the FHIR golang generator. This file should not be manually modified.

Functions

func ParseParamNameModifierAndPostFix

func ParseParamNameModifierAndPostFix(fullParam string) (param string, modifier string, postfix string)

ParseParamNameModifierAndPostFix parses a full parameter key and returns the parameter name, modifier, and postfix components. For example, "foo:bar.baz" would return ["foo","bar","baz"].

Types

type BSONBuilder

type BSONBuilder func(param SearchParam, searcher *MongoSearcher) (object bson.M, err error)

BSONBuilder returns a BSON object representing the passed in search parameter. This BSON object is expected to be merged with other objects and passed into Mongo's Find function.

type ChainedQueryReference

type ChainedQueryReference struct {
	Type         string
	ChainedQuery Query
}

ChainedQueryReference represents a chained query

type CompositeParam

type CompositeParam struct {
	SearchParamInfo
	CompositeValues []string
}

CompositeParam represents a composite-flavored search parameter. The following description is from the FHIR DSTU2 specification:

A resource may also specify composite parameters that take sequences of single values that match other defined parameters as an argument. The matching parameter of each component in such a sequence is documented in the definition of the parameter. These sequences are formed by joining the single values with a "$". Note that this sequence is a single value and itself can be composed into a set of values, so that, for example, multiple matching state-on-date parameters can be specified as state-on-date=new$2013-05-04,active$2013-05-05.

func ParseCompositeParam

func ParseCompositeParam(paramString string, info SearchParamInfo) *CompositeParam

ParseCompositeParam parses a composite query string and returns a pointer to a CompositeParam based on the query and the parameter definition.

type Date

type Date struct {
	Value     time.Time
	Precision DatePrecision
}

Date represents a date in a search query. FHIR search params may define dates to varying levels of precision, and the amount of precision affects the behavior of the query. Date's value should only be interpreted in the context of the Precision supplied.

func ParseDate

func ParseDate(dateStr string) *Date

ParseDate parses a FHIR date string (roughly ISO 8601) into a Date object, maintaining the value and the precision supplied.

func (*Date) RangeHighExcl

func (d *Date) RangeHighExcl() time.Time

RangeHighExcl represents the high end of a date range to match against. As the name suggests, the high end of the range is exclusive.

func (*Date) RangeLowIncl

func (d *Date) RangeLowIncl() time.Time

RangeLowIncl represents the low end of a date range to match against. As the name suggests, the low end of the range is inclusive.

func (*Date) String

func (d *Date) String() string

String returns a string representation of the date, honoring the supplied precision.

type DateParam

type DateParam struct {
	SearchParamInfo
	Date *Date
}

DateParam represents a date-flavored search parameter. The following description is from the FHIR DSTU2 specification:

A date parameter searches on a date/time or period. As is usual for date/time related functionality, while the concepts are relatively straight-forward, there are a number of subtleties involved in ensuring consistent behavior.

func ParseDateParam

func ParseDateParam(paramStr string, info SearchParamInfo) *DateParam

ParseDateParam parses a date-based query string and returns a pointer to a DateParam based on the query and the parameter definition.

type DatePrecision

type DatePrecision int

DatePrecision is an enum representing the precision of a date.

const (
	Year DatePrecision = iota
	Month
	Day
	Minute
	Second
	Millisecond
)

Constant values for the DatePrecision enum.

type Error

type Error struct {
	HTTPStatus       int
	OperationOutcome *models.OperationOutcome
}

Error is an interface for search errors, providing an HTTP status and operation outcome

func (*Error) Error

func (e *Error) Error() string

type ExternalReference

type ExternalReference struct {
	Type string
	URL  string
}

ExternalReference represents an external reference by URL

type IncludeOption

type IncludeOption struct {
	Resource  string
	Parameter SearchParamInfo
}

IncludeOption describes the data that should be included in query results

type LocalReference

type LocalReference struct {
	Type string
	ID   string
}

LocalReference represents a local reference by ID (and potentially Type)

type MongoRegistry

type MongoRegistry struct {
	// contains filtered or unexported fields
}

MongoRegistry supports the registration and lookup of Mongo search parameter implementations as BSON builders.

func GlobalMongoRegistry

func GlobalMongoRegistry() *MongoRegistry

GlobalMongoRegistry returns an instance of the global search parameter registry

func (*MongoRegistry) LookupBSONBuilder

func (r *MongoRegistry) LookupBSONBuilder(paramType string) (builder BSONBuilder, err error)

LookupBSONBuilder looks up a BSON builder by type. If no builder is registered, it will return an error.

func (*MongoRegistry) RegisterBSONBuilder

func (r *MongoRegistry) RegisterBSONBuilder(paramType string, builder BSONBuilder)

RegisterBSONBuilder registers a BSON builder for a given parameter type.

type MongoSearcher

type MongoSearcher struct {
	// contains filtered or unexported fields
}

MongoSearcher implements FHIR searches using the Mongo database.

func NewMongoSearcher

func NewMongoSearcher(db *mgo.Database) *MongoSearcher

NewMongoSearcher creates a new instance of a MongoSearcher, given a pointer to an mgo.Database.

func (*MongoSearcher) CreatePipeline

func (m *MongoSearcher) CreatePipeline(query Query) *mgo.Pipe

CreatePipeline takes a FHIR-based Query and returns a pointer to the corresponding mgo.Pipe. The returned mgo.Pipe will obey any options passed in through the query string (such as _count and _offset) and will also use default options when none are passed in (e.g., count = 100). The caller is responsible for executing the returned pipe (allowing additional flexibility in how results are returned).

CreatePipeline must be used when the _include and _revinclude options are used (since CreateQuery can't support joins).

func (*MongoSearcher) CreateQuery

func (m *MongoSearcher) CreateQuery(query Query) *mgo.Query

CreateQuery takes a FHIR-based Query and returns a pointer to the corresponding mgo.Query. The returned mgo.Query will obey any options passed in through the query string (such as _count and _offset) and will also use default options when none are passed in (e.g., count = 100). The caller is responsible for executing the returned query (allowing additional flexibility in how results are returned).

CreateQuery CANNOT be used when the _include and _revinclude options are used (since CreateQuery can't support joins).

func (*MongoSearcher) CreateQueryObject

func (m *MongoSearcher) CreateQueryObject(query Query) bson.M

CreateQueryObject is temporarily exposed as public to support ConditionalDelete. This should be made private again when all mongo implementations are in a single package.

func (*MongoSearcher) CreateQueryWithoutOptions

func (m *MongoSearcher) CreateQueryWithoutOptions(query Query) *mgo.Query

CreateQueryWithoutOptions takes a FHIR-based Query and returns a pointer to the corresponding mgo.Query. Any options passed in through the query (such as _count and _offset) are ignored and no default options are applied (e.g., there is no set count / limit) The caller is responsible for executing the returned query (allowing flexibility in how results are returned).

func (*MongoSearcher) GetDB

func (m *MongoSearcher) GetDB() *mgo.Database

GetDB returns a pointer to the Mongo database. This is helpful for custom search implementations.

type Number

type Number struct {
	Value     *big.Rat
	Precision int
}

Number represents a number in a search query. FHIR search params may define numbers to varying levels of precision, and the amount of precision affects the behavior of the query. Number's value should only be interpreted in the context of the Precision supplied. The Precision indicates the number of decimal places in the precision.

func ParseNumber

func ParseNumber(numStr string) *Number

ParseNumber parses a numeric string into a Number object, maintaining the value and precision supplied.

func (*Number) RangeHighExcl

func (n *Number) RangeHighExcl() *big.Rat

RangeHighExcl represents the high end of a range to match against. As the name suggests, the high end of the range is exclusive.

func (*Number) RangeLowIncl

func (n *Number) RangeLowIncl() *big.Rat

RangeLowIncl represents the low end of a range to match against. As the name suggests, the low end of the range is inclusive.

func (*Number) String

func (n *Number) String() string

String returns a string representation of the number, honoring the supplied precision.

type NumberParam

type NumberParam struct {
	SearchParamInfo
	Number *Number
}

NumberParam represents a number-flavored search parameter. The following description is from the FHIR DSTU2 specification:

Searching on a simple numerical value in a resource.

func ParseNumberParam

func ParseNumberParam(paramStr string, info SearchParamInfo) *NumberParam

ParseNumberParam parses a number-based query string and returns a pointer to a NumberParam based on the query and the parameter definition.

type OrParam

type OrParam struct {
	SearchParamInfo
	Items []SearchParam
}

OrParam represents a search parameter that has multiple OR values. The following description is from the FHIR DSTU2 specification:

If, instead, the search is to find patients that speak either language, then this is a single parameter with multiple values, separated by a ','. For example: "/Patient?language=FR,NL". This is known as an OR search parameter, since the server is expected to respond with results which match either value.

func ParseOrParam

func ParseOrParam(paramStr []string, info SearchParamInfo) *OrParam

ParseOrParam parses a slice of values to be ORed and returns a pointer to an OrParam based on the query and the parameter definition.

type ParameterParser

type ParameterParser func(info SearchParamInfo, data SearchParamData) (SearchParam, error)

ParameterParser parses search parameter data into a SearchParam implementation.

type Prefix

type Prefix string

Prefix is an enum representing FHIR parameter prefixes. The following description is from the FHIR DSTU2 specification:

For the ordered parameter types number, date, and quantity, a prefix to the parameter value may be used to control the nature of the matching.

const (
	EQ Prefix = "eq"
	NE Prefix = "ne"
	GT Prefix = "gt"
	LT Prefix = "lt"
	GE Prefix = "ge"
	LE Prefix = "le"
	SA Prefix = "sa"
	EB Prefix = "eb"
	AP Prefix = "ap"
)

Constant values for the Prefix enum.

func ExtractPrefixAndValue

func ExtractPrefixAndValue(s string) (Prefix, string)

ExtractPrefixAndValue parses a string parameter value into an optional prefix and value.

func (Prefix) String

func (p Prefix) String() string

String returns the prefix as a string.

type QuantityParam

type QuantityParam struct {
	SearchParamInfo
	Number *Number
	System string
	Code   string
}

QuantityParam represents a quantity-flavored search parameter. The following description is from the FHIR DSTU2 specification:

A quantity parameter searches on the Quantity data type.

func ParseQuantityParam

func ParseQuantityParam(paramStr string, info SearchParamInfo) *QuantityParam

ParseQuantityParam parses a quantity-based query string and returns a pointer to a QuantityParam based on the query and the parameter definition.

type Query

type Query struct {
	Resource string
	Query    string
}

Query describes a string-based FHIR query and the resource it is associated with. For example, the URL http://acme.com/Condition?patient=123&onset=2012 should be represented as:

Query { Resource: "Condition", Query: "patient=123&onset=2012" }

func (*Query) Options

func (q *Query) Options() *QueryOptions

Options parses the query string and returns the QueryOptions.

func (*Query) Params

func (q *Query) Params() []SearchParam

Params parses the query string and returns a slice containing the appropriate SearchParam instances. For example, a Query on the "Condition" resource with the query string "patient=123&onset=2012" should return a slice containing a ReferenceParam (for patient) and a DateParam (for onset).

func (*Query) URLQueryParameters

func (q *Query) URLQueryParameters(withOptions bool) URLQueryParameters

URLQueryParameters reconstructs the URL-encoded query based on parsed parameters. This ensures better uniformity/consistency and also removes any garbage parameters or bad formatting in the passed in parameters. If withOptions is specified, the query options will also be included in the URLQueryParameters.

type QueryOptions

type QueryOptions struct {
	Count      int
	Offset     int
	Sort       []SortOption
	Include    []IncludeOption
	RevInclude []RevIncludeOption
	IsSTU3Sort bool
}

QueryOptions contains option values such as count and offset.

func NewQueryOptions

func NewQueryOptions() *QueryOptions

NewQueryOptions constructs a new QueryOptions with default values (offset = 0, Count = 100)

func (*QueryOptions) URLQueryParameters

func (o *QueryOptions) URLQueryParameters() URLQueryParameters

URLQueryParameters returns URLQueryParameters representing the query options.

type ReferenceParam

type ReferenceParam struct {
	SearchParamInfo
	Reference interface{}
}

ReferenceParam represents a reference-flavored search parameter. The following description is from the FHIR DSTU2 specification:

A reference parameter refers to references between resources, e.g. find all Conditions where the subject reference is a particular patient, where the patient is selected by name or identifier.

func ParseReferenceParam

func ParseReferenceParam(paramStr string, info SearchParamInfo) *ReferenceParam

ParseReferenceParam parses a reference-based query string and returns a pointer to a ReferenceParam based on the query and the parameter definition.

type Registry

type Registry struct {
	// contains filtered or unexported fields
}

Registry supports the registration and lookup of FHIR search parameters, both standard and custom. For custom search parameters, a parameter type implementation may also need to be registered.

func GlobalRegistry

func GlobalRegistry() *Registry

GlobalRegistry returns an instance of the global search parameter registry

func (*Registry) LookupParameterInfo

func (r *Registry) LookupParameterInfo(resource, name string) (param SearchParamInfo, err error)

LookupParameterInfo looks up search parameter info by resource and name. If no parameter info is registered, it will return an error.

func (*Registry) LookupParameterParser

func (r *Registry) LookupParameterParser(paramType string) (parser ParameterParser, err error)

LookupParameterParser looks up a parameter parser by type. If no parser is registered, it will return an error.

func (*Registry) RegisterParameterInfo

func (r *Registry) RegisterParameterInfo(param SearchParamInfo)

RegisterParameterInfo registers search param info for a given resource and name (as represented in the info). If the parameter is not of a standard fhir type (e.g., token, date, etc), then a SearchParameter for the given type should also be registered.

func (*Registry) RegisterParameterParser

func (r *Registry) RegisterParameterParser(paramType string, parser ParameterParser)

RegisterParameterParser registers a parameter parser for a given type name.

type RevIncludeOption

type RevIncludeOption struct {
	Resource  string
	Parameter SearchParamInfo
}

RevIncludeOption describes the data that should be included in query results

type SearchParam

type SearchParam interface {
	// contains filtered or unexported methods
}

SearchParam is an interface for all search parameter classes that exposes the SearchParamInfo.

type SearchParamData

type SearchParamData struct {
	Modifier string
	Chain    string
	Prefix   Prefix
	Value    string
}

SearchParamData represents the data associated to an instance of a search param

type SearchParamInfo

type SearchParamInfo struct {
	Resource   string
	Name       string
	Type       string
	Paths      []SearchParamPath
	Composites []string
	Targets    []string
	Prefix     Prefix
	Postfix    string
	Modifier   string
}

SearchParamInfo contains information about a FHIR search parameter, including its name, type, and paths or composites.

func (SearchParamInfo) CreateSearchParam

func (s SearchParamInfo) CreateSearchParam(paramStr string) SearchParam

CreateSearchParam converts a singular string query value (e.g. "2012") into a SearchParam object corresponding to the SearchParamInfo.

type SearchParamPath

type SearchParamPath struct {
	Path string
	Type string
}

SearchParamPath indicates a dot-separated path to the property that should be searched, as well as the FHIR type of that property (e.g., "dateTime"). The path indicates elements that are arrays by prefixing the element name with "[]" (e.g., "order.[]item.name"). In the rare case that the search path has an indexer, it will be in the brackets (e.g.,"[0]item.entry")

type SortOption

type SortOption struct {
	Descending bool
	Parameter  SearchParamInfo
}

SortOption indicates what parameter to sort on and the sort order

type StringParam

type StringParam struct {
	SearchParamInfo
	String string
}

StringParam represents a string-flavored search parameter. The following description is from the FHIR DSTU2 specification:

The string parameter refers to simple string searches against sequences of characters. Matches are case- and accent- insensitive. By default, a field matches a string query if the value of the field equals or starts with the supplied parameter value, after both have been normalized by case and accent.

func ParseStringParam

func ParseStringParam(paramString string, info SearchParamInfo) *StringParam

ParseStringParam parses a string-based query string and returns a pointer to a StringParam based on the query and the parameter definition.

type TokenParam

type TokenParam struct {
	SearchParamInfo
	System    string
	Code      string
	AnySystem bool
}

TokenParam represents a token-flavored search parameter. The following description is from the FHIR DSTU2 specification:

A token type is a parameter that searches on a pair, a URI and a value. It is used against code or identifier value where the value may have a URI that scopes its meaning. The search is performed against the pair from a Coding or an Identifier.

func ParseTokenParam

func ParseTokenParam(paramString string, info SearchParamInfo) *TokenParam

ParseTokenParam parses a token-based query string and returns a pointer to a TokenParam based on the query and the parameter definition.

type URIParam

type URIParam struct {
	SearchParamInfo
	URI string
}

URIParam represents a uri-flavored search parameter. The following description is from the FHIR DSTU2 specification:

The uri parameter refers to an element which is URI (RFC 3986). Matches are precise (e.g. case, accent, and escape) sensitive, and the entire URI must match.

func ParseURIParam

func ParseURIParam(paramStr string, info SearchParamInfo) *URIParam

ParseURIParam parses an uri-based query string and returns a pointer to an URIParam based on the query and the parameter definition.

type URLQueryParameter

type URLQueryParameter struct {
	Key   string
	Value string
}

URLQueryParameter represents a query parameter as a key/value pair.

type URLQueryParameters

type URLQueryParameters struct {
	// contains filtered or unexported fields
}

URLQueryParameters represents an ordered list of query parameters that can be manipulated in several different ways.

func ParseQuery

func ParseQuery(query string) (u URLQueryParameters, err error)

ParseQuery provides an alternative to url.ParseQuery when the order of parameters must be retained. ParseQuery parses the URL-encoded query string and returns a URLQueryParameters object that can be used to get the ordered list of parameters, a map of the parameters, or parameters by name. ParseQuery always returns a non-nil URLQueryParameters object containing all the valid query parameters found; err describes the first decoding error encountered, if any.

func (*URLQueryParameters) Add

func (u *URLQueryParameters) Add(Key string, value string)

Add adds a key/value pair to the end of the list of URLQueryParameters. If the key already exists, the key/value is still added to the end of the list, as URLQueryParameters permite duplicate keys. To replace existing values, use Set instead.

func (*URLQueryParameters) All

All returns a copy of the slice containing all of the URLQueryParameters in the original order.

func (*URLQueryParameters) Encode

func (u *URLQueryParameters) Encode() string

Encode returns a URL-encoded string representing the query parameters in the original order.

func (*URLQueryParameters) Get

func (u *URLQueryParameters) Get(key string) string

Get returns the value of the first query parameter with the specified key. If no query parameters have the specified key, an empty string is returned.

func (*URLQueryParameters) GetMulti

func (u *URLQueryParameters) GetMulti(key string) []string

GetMulti returns a slice containing the values of all the query parameters with the specified key, in the order in which they were originally specified. If no query parameters have the specified key, an empty slice is returned.

func (*URLQueryParameters) Set

func (u *URLQueryParameters) Set(key string, value string)

Set sets the value for the query parameter with the specified key. If a query parameter with the specified key already exists, it overwrites the existing value. If multiple query parameters with the specified key exist, it overwrites the value of the first matching query parameter and removes the remaining query parameters from the list. If no query parameters exist with the given key, the key/value pair are added as a new query parameter at the end of the list.

func (*URLQueryParameters) Values

func (u *URLQueryParameters) Values() url.Values

Values returns a map similar to the map that would be returned by url.ParseQuery(). The url.Values object does not guarantee that order is preserved. If order must be preserved, use on of the other functions.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL