0.1.0 - ci-build International flag

JohnMoehrkeTestVital, published by John Moehrke (himself). This guide is not an authorized publication; it is the continuous build for version 0.1.0 built by the FHIR (HL7® FHIR® Standard) CI Build. This version is based on the current content of https://github.com/JohnMoehrke/testVital/ and changes regularly. See the Directory of published versions

Example Bundle: Disable Searches on Core

Given that this is all we need are the following Resources and search parameters.

Resource Type Searches
AllergyIntolerance _lastUpdated, _id, identifier, patient, clinical-status, verification-status
Condition _lastUpdated, _id, identifier, patient, clinical-status
Observation _lastUpdated, _id, identifier, patient, category, status
Immunization _lastUpdated, _id, identifier, patient, status
DocumentReference _lastUpdated, _id, identifier, patient, status, category
DiagnosticReport _lastUpdated, _id, identifier, patient, status, category
Patient _lastUpdated, _id, identifier

We get the following set of Bundles, limiting the number of SearchParameters changed to 10-20 per Bundle.

Submit the Bundles to HAPI, then force a $reindex operation. You should see all the unnecessary indexes go away, and those that you need will stay.

Unfortunately when you submit the SearchParameter updates, HAPI fires off many threads (one for each SearchParameter) that reindexes. This is true even on most current HAPI (7.6). Would be better to disable reindexing, send the Bundle, then reindex once. setMarkResourcesForReindexingUponSearchParameterChange() can be used to turn off reindexing on each SearchParameter. This seems to have been released in HAPI 7.2.2 or later. So not helpful to 6.10.

How this was built

  1. Start with the FHIR R4 Search Parameter Registry
  2. Download the search-parameters.json
  3. Remove the above entries by "name", as we want to keep these index
    1. Note that some of the above are generic such as _lastUpdated, _id, identifier, and patient
  4. Remove the resources NOT mentioned above, as we don't need those as we will never populate those resources
  5. for each entry kept, remove the extension, publisher, contact, and description. These are not needed and can cause conflicts given that this is not the same as published by HL7, and the descriptions contain narrative with links into FHIR core but the descriptions are not helpful.
  6. for each entry add request, POST to SearchParameter
  7. MOST critical set each SearchParameter retained to status = retired

Bundle disable-searches-core of type batch


Entry 1 - fullUrl = http://hl7.org/fhir/SearchParameter/DomainResource-text

Resource SearchParameter:

_text

Parameter _text:string

none

ResourceResource
Expression(none)
Processing ModeNormal
Multiples
  • multipleAnd: It's up to the server whether the parameter may repeat in order to specify multiple values that must all be true
  • multipleOr: It's up to the server whether the parameter can have multiple values (separated by comma) where at least one must be true

Request:

POST SearchParameter

Entry 2 - fullUrl = http://hl7.org/fhir/SearchParameter/Resource-content

Resource SearchParameter:

_content

Parameter _content:string

none

ResourceResource
Expression(none)
Processing ModeNormal
Multiples
  • multipleAnd: It's up to the server whether the parameter may repeat in order to specify multiple values that must all be true
  • multipleOr: It's up to the server whether the parameter can have multiple values (separated by comma) where at least one must be true

Request:

POST SearchParameter

Entry 3 - fullUrl = http://hl7.org/fhir/SearchParameter/Resource-profile

Resource SearchParameter:

_profile

Parameter _profile:uri

none

ResourceResource
ExpressionResource.meta.profile
Processing ModeNormal
Multiples
  • multipleAnd: It's up to the server whether the parameter may repeat in order to specify multiple values that must all be true
  • multipleOr: It's up to the server whether the parameter can have multiple values (separated by comma) where at least one must be true

Request:

POST SearchParameter

Entry 4 - fullUrl = http://hl7.org/fhir/SearchParameter/Resource-query

Resource SearchParameter:

_query

Parameter _query:token

none

ResourceResource
Expression(none)
Processing ModeNormal
Multiples
  • multipleAnd: It's up to the server whether the parameter may repeat in order to specify multiple values that must all be true
  • multipleOr: It's up to the server whether the parameter can have multiple values (separated by comma) where at least one must be true

Request:

POST SearchParameter

Entry 5 - fullUrl = http://hl7.org/fhir/SearchParameter/Resource-security

Resource SearchParameter:

_security

Parameter _security:token

none

ResourceResource
ExpressionResource.meta.security
Processing ModeNormal
Multiples
  • multipleAnd: It's up to the server whether the parameter may repeat in order to specify multiple values that must all be true
  • multipleOr: It's up to the server whether the parameter can have multiple values (separated by comma) where at least one must be true

Request:

POST SearchParameter

Entry 6 - fullUrl = http://hl7.org/fhir/SearchParameter/Resource-source

Resource SearchParameter:

_source

Parameter _source:uri

none

ResourceResource
ExpressionResource.meta.source
Processing ModeNormal
Multiples
  • multipleAnd: It's up to the server whether the parameter may repeat in order to specify multiple values that must all be true
  • multipleOr: It's up to the server whether the parameter can have multiple values (separated by comma) where at least one must be true

Request:

POST SearchParameter

Entry 7 - fullUrl = http://hl7.org/fhir/SearchParameter/Resource-tag

Resource SearchParameter:

_tag

Parameter _tag:token

none

ResourceResource
ExpressionResource.meta.tag
Processing ModeNormal
Multiples
  • multipleAnd: It's up to the server whether the parameter may repeat in order to specify multiple values that must all be true
  • multipleOr: It's up to the server whether the parameter can have multiple values (separated by comma) where at least one must be true

Request:

POST SearchParameter

Entry 8 - fullUrl = http://hl7.org/fhir/SearchParameter/clinical-type

Resource SearchParameter:

type

Parameter type:token

none

ResourcesAllergyIntolerance, Composition, DocumentManifest, DocumentReference, Encounter, EpisodeOfCare
ExpressionAllergyIntolerance.type | Composition.type | DocumentManifest.type | DocumentReference.type | Encounter.type | EpisodeOfCare.type
Processing ModeNormal
Multiples
  • multipleAnd: It's up to the server whether the parameter may repeat in order to specify multiple values that must all be true
  • multipleOr: It's up to the server whether the parameter can have multiple values (separated by comma) where at least one must be true

Request:

POST SearchParameter

Entry 9 - fullUrl = http://hl7.org/fhir/SearchParameter/clinical-date

Resource SearchParameter:

date

Parameter date:date

none

ResourcesAllergyIntolerance, CarePlan, CareTeam, ClinicalImpression, Composition, Consent, DiagnosticReport, Encounter, EpisodeOfCare, FamilyMemberHistory, Flag, Immunization, List, Observation, Procedure, RiskAssessment, SupplyRequest
ExpressionAllergyIntolerance.recordedDate | CarePlan.period | CareTeam.period | ClinicalImpression.date | Composition.date | Consent.dateTime | DiagnosticReport.effective | Encounter.period | EpisodeOfCare.period | FamilyMemberHistory.date | Flag.period | Immunization.occurrence | List.date | Observation.effective | Procedure.performed | (RiskAssessment.occurrence as dateTime) | SupplyRequest.authoredOn
Processing ModeNormal
Multiples
  • multipleAnd: It's up to the server whether the parameter may repeat in order to specify multiple values that must all be true
  • multipleOr: It's up to the server whether the parameter can have multiple values (separated by comma) where at least one must be true
ComparatorsAllowed: eq, ne, gt, ge, lt, le, sa, eb, ap

Request:

POST SearchParameter

Entry 10 - fullUrl = http://hl7.org/fhir/SearchParameter/clinical-code

Resource SearchParameter:

code

Parameter code:token

none

ResourcesAllergyIntolerance, Condition, DeviceRequest, DiagnosticReport, FamilyMemberHistory, List, Medication, MedicationAdministration, MedicationDispense, MedicationRequest, MedicationStatement, Observation, Procedure, ServiceRequest
ExpressionAllergyIntolerance.code | AllergyIntolerance.reaction.substance | Condition.code | (DeviceRequest.code as CodeableConcept) | DiagnosticReport.code | FamilyMemberHistory.condition.code | List.code | Medication.code | (MedicationAdministration.medication as CodeableConcept) | (MedicationDispense.medication as CodeableConcept) | (MedicationRequest.medication as CodeableConcept) | (MedicationStatement.medication as CodeableConcept) | Observation.code | Procedure.code | ServiceRequest.code
Processing ModeNormal
Multiples
  • multipleAnd: It's up to the server whether the parameter may repeat in order to specify multiple values that must all be true
  • multipleOr: It's up to the server whether the parameter can have multiple values (separated by comma) where at least one must be true

Request:

POST SearchParameter