🔥 HAPI FHIR - Java API for HL7 FHIR Clients and Servers
Go to file
Ken Stevens 03ebcafdf5
In-memory matcher (#1116)
* Initial refactoring to move database matcher out into its own class

* MAJOR REFACTOR: Pulled indexing code out of BaseHapiFhirDao into a new class ResourceIndexedSearchParams

* Moved calculateHashes

* Replaced @Bean definitions in BaseConfig.java with @ComponentScan

Annotated bean classes with either @Service (if it's stateless) or @Component (if it's stateful).  It doesn't really matter which annotation is used, but it's helpful to see at a glance whether a bean is stateful or stateless.

* Move services out of BaseHapiFhirDao

Moved services required by ResourceIndexedSearchParams out of BaseHapiFhirDao and into new classes called LogicalReferenceHelper, IdHelperService, MatchUrlService, and DaoProvider.

Converted SearchBuilder into Prototype Bean

Mark Spring components that depend on daos and entitymanagers with @Lazy so they aren't picked up by hapi-fhir-spring-boot-autoconfigure.

* Added SubscriptionMatcherInMemory

Moved static data out of BaseHapiFhirDao into ResourceMetaParams

Moved translateMatchUrl methods out of BaseHapiFhirDao into MatchUrlService bean

Simplified SubscriptionMatcherInMemory to not depend on entity or dao

Turned all subscribers into prototype beans

* Moved searchParam method out to mySearchParamProvider

Also removed dao and contest parameters from of myMatchUrlService methods

Moved code out of SearchBuilder into SearchParameterMap.clean() so it can be used by inMemoryMatcher

Introduced a new composite subscription matcher that tries to match in memory and if it finds a parameter in the criteria it doesn't support, it falls back to the database matcher.

* Added support for references

Also fixed a small bug in SearchParameterMap that was missing the ";" after "_has" when creating a normalized query from search params.

* Finished implementing all tests from FhirResourceDaoR4SearchNoFtTest

* Make in-memory matcher configurable, disabled by default

* Validate Subscription criteria when they're submitted

Send HTTP 422 UnprocessableEntityException if the criteria fail validation.

* fixed Sonar "Blocker" issues.

*  Don't reload the resource before sending it out

Since we can always force a reload using restHookDetails.isDeliverLatestVersion

* Added tests to cover Custom Search param.

* Split ResourceIndexedSearchParam into separate state and service classes

* Cleaned up SearchBuilder.

Removed uses of myCallingDao as an injection mechanism.
Left // FIXME KHS cookie crumbs to clean up

* Reduced dependencies on BaseHapiFhirDao

Removed methods from IDao interface that were used for injection

* Updated change log
2018-11-19 16:19:52 -05:00
.github/ISSUE_TEMPLATE Update issue templates 2018-07-18 16:29:04 -04:00
example-projects Bump to 3.7.0-SNAPSHOT 2018-11-12 22:37:52 -05:00
examples Bump to 3.7.0-SNAPSHOT 2018-11-12 22:37:52 -05:00
hapi-deployable-pom Bump to 3.7.0-SNAPSHOT 2018-11-12 22:37:52 -05:00
hapi-fhir-android Bump to 3.7.0-SNAPSHOT 2018-11-12 22:37:52 -05:00
hapi-fhir-android-realm Work on JPA 2017-02-02 06:23:28 -05:00
hapi-fhir-base In-memory matcher (#1116) 2018-11-19 16:19:52 -05:00
hapi-fhir-cli Streamline expunge operation 2018-11-15 11:37:16 +01:00
hapi-fhir-client Fix an occasional NPE in the tests 2018-11-19 09:56:40 -05:00
hapi-fhir-client-okhttp One more build fix 2018-11-19 13:08:17 -05:00
hapi-fhir-converter Bump to 3.7.0-SNAPSHOT 2018-11-12 22:37:52 -05:00
hapi-fhir-dist Bump to 3.7.0-SNAPSHOT 2018-11-12 22:37:52 -05:00
hapi-fhir-igpacks Bump to 3.7.0-SNAPSHOT 2018-11-12 22:37:52 -05:00
hapi-fhir-jacoco Bump to 3.7.0-SNAPSHOT 2018-11-12 22:37:52 -05:00
hapi-fhir-jaxrsserver-base Correctly handle response streams in JAX-RS client 2018-11-19 12:57:48 -05:00
hapi-fhir-jaxrsserver-example Bump to 3.7.0-SNAPSHOT 2018-11-12 22:37:52 -05:00
hapi-fhir-jpaserver-base In-memory matcher (#1116) 2018-11-19 16:19:52 -05:00
hapi-fhir-jpaserver-elasticsearch Bump to 3.7.0-SNAPSHOT 2018-11-12 22:37:52 -05:00
hapi-fhir-jpaserver-example In-memory matcher (#1116) 2018-11-19 16:19:52 -05:00
hapi-fhir-jpaserver-migrate Bump to 3.7.0-SNAPSHOT 2018-11-12 22:37:52 -05:00
hapi-fhir-jpaserver-uhnfhirtest Clean up test compile and reenable GraphQL on hapi.fhir.org 2018-11-16 11:15:44 +01:00
hapi-fhir-narrativegenerator Make JPA searches more efficient by prefetching a much smaller number of 2018-10-01 21:36:10 -04:00
hapi-fhir-oauth2 remove .settings .project .classpath file of eclipse 2017-01-28 17:13:47 +01:00
hapi-fhir-osgi-core Replace phloc with ph for #775 (#930) 2018-05-14 17:38:40 -04:00
hapi-fhir-server Allow client to return methodoutcome instead of resdource for operation 2018-11-19 11:11:49 +01:00
hapi-fhir-spring-boot In-memory matcher (#1116) 2018-11-19 16:19:52 -05:00
hapi-fhir-structures-dstu Remove dynamic mode 2018-08-19 17:35:08 -04:00
hapi-fhir-structures-dstu2 Better detection of binary content in ResponseHighlighterInterceptor 2018-11-18 14:32:54 +01:00
hapi-fhir-structures-dstu2.1 Bump to 3.7.0-SNAPSHOT 2018-11-12 22:37:52 -05:00
hapi-fhir-structures-dstu3 Allow client to return methodoutcome instead of resdource for operation 2018-11-19 11:11:49 +01:00
hapi-fhir-structures-hl7org-dstu2 Bump to 3.7.0-SNAPSHOT 2018-11-12 22:37:52 -05:00
hapi-fhir-structures-r4 One more test fix 2018-11-19 10:27:16 -05:00
hapi-fhir-testpage-interceptor remove .settings .project .classpath file of eclipse 2017-01-28 17:13:47 +01:00
hapi-fhir-testpage-overlay Update spring template 2018-11-16 11:20:21 +01:00
hapi-fhir-tutorial Replace phloc with ph for #775 (#930) 2018-05-14 17:38:40 -04:00
hapi-fhir-utilities Bump to 3.7.0-SNAPSHOT 2018-11-12 22:37:52 -05:00
hapi-fhir-validation Bump to 3.7.0-SNAPSHOT 2018-11-12 22:37:52 -05:00
hapi-fhir-validation-resources-dstu2 Bump to 3.7.0-SNAPSHOT 2018-11-12 22:37:52 -05:00
hapi-fhir-validation-resources-dstu2.1 Bump to 3.7.0-SNAPSHOT 2018-11-12 22:37:52 -05:00
hapi-fhir-validation-resources-dstu3 Bump to 3.7.0-SNAPSHOT 2018-11-12 22:37:52 -05:00
hapi-fhir-validation-resources-r4 Bump to 3.7.0-SNAPSHOT 2018-11-12 22:37:52 -05:00
hapi-tinder-plugin Bump to 3.7.0-SNAPSHOT 2018-11-12 22:37:52 -05:00
hapi-tinder-test Bump to 3.7.0-SNAPSHOT 2018-11-12 22:37:52 -05:00
osgi Bump to 3.7.0-SNAPSHOT 2018-11-12 22:37:52 -05:00
restful-server-example Bump to 3.7.0-SNAPSHOT 2018-11-12 22:37:52 -05:00
restful-server-example-test Bump to 3.7.0-SNAPSHOT 2018-11-12 22:37:52 -05:00
src In-memory matcher (#1116) 2018-11-19 16:19:52 -05:00
tests Bump to 3.7.0-SNAPSHOT 2018-11-12 22:37:52 -05:00
vagrant Fix #242 - Allow compartment and read method to coexist for server 2015-10-21 11:58:19 -04:00
.editorconfig More work on perf 2017-04-06 22:23:20 -04:00
.gitignore Add Spring Boot Starter 2017-09-30 11:20:00 -04:00
.travis.yml Allow configuration of default page size in SimpleBundleProvider 2018-07-27 18:34:12 +07:00
HELPWANTED.md Work on custom params 2017-02-02 20:37:58 -05:00
LICENSE.txt Add license and notice files 2015-03-25 22:32:32 -04:00
LOINC_NOTES.txt More work on loinc 2018-03-19 08:51:02 -04:00
NOTICE.txt Add license and notice files 2015-03-25 22:32:32 -04:00
README.md Improve readme 2018-07-19 09:08:52 -04:00
appveyor.yml Fewer tests on CI 2018-05-31 17:07:17 -04:00
check_for_maven_updates.sh Fix up examples 2014-09-03 18:03:44 -04:00
list_releases.sh Implement handleException on the server interceptor framework, as well 2014-11-07 14:26:59 -05:00
pom.xml Fix xml typo 2018-11-16 09:21:53 +01:00
sync.sh Update resource defs 2015-12-01 18:35:24 -05:00
sync_dstu3.sh Merge branch 'master' of github.com:jamesagnew/hapi-fhir 2016-07-01 14:31:25 -04:00
sync_ri.sh Bump to 1.0.2 FHIR definitions 2015-11-15 12:22:56 -05:00
sync_ri3.fish Bring DSTU3 structs up to FHIR R3 2017-04-18 07:48:38 -04:00
sync_ri3.sh Syn RI - Build still failing :( 2016-05-28 12:53:59 -04:00
sync_ri4.sh Squashed commit of the following: 2018-09-29 13:48:35 -04:00
sync_ri21.sh Update model and definitions to latest definitions 2016-01-30 11:08:16 -05:00
update_version.sh Force another travis build 2015-08-05 10:38:38 -04:00

README.md

HAPI FHIR

HAPI FHIR - Java API for HL7 FHIR Clients and Servers

Coverage Status Maven Central License

  • Linux Build: Build Status
  • Windows Build:

Complete project documentation is available here: http://jamesagnew.github.io/hapi-fhir/

A demonstration of this project is available here: http://hapi.fhir.org/

This project is Open Source, licensed under the Apache Software License 2.0.

Please see this wiki page for information on where to get help with HAPI FHIR. Please see Smile CDR for information on commercial support.