Commit Graph

238 Commits

Author SHA1 Message Date
Mike G f61cb163ae refactor and modify for prefix and suffix 2021-02-01 12:11:11 -05:00
James Agnew 909d9f742c
Enable Auto-reference versions in JPA (#2323)
* Automatic reference versions

* Auto reference versions

* resolve fixmes

* Add changelog

* Test fixes

* Test fixes

* Resolve fixmes

* Work on versioning

* Add support for _includes

* Update headers

* Change visibility

* One more tweak

* One more API tweak

* Fixes

* Account for review comments

* Fix errorprone reported issue

* Test fix

* Test fixes

* Test fixes
2021-01-27 14:49:10 -05:00
Ken Stevens 749934d5f1
fixed name text indexing (#2309)
* fixed name text indexing

* fixed name text indexing
2021-01-22 15:39:26 -05:00
jamesagnew 4913c33fdf Test fix 2021-01-17 07:24:00 -05:00
James Agnew 1dc4fb2206
Make quantity indexes use double datatype (#2290)
* Make quantity indexes use double datatype

* Add changelog

* Test fixes

* Test fixes

* Disable test
2021-01-16 18:44:15 -05:00
Frank Tao f6d4a40388
UCUM Service Support (#2261)
* Added UcumServiceUtil

* Removed ucum-essense.xml

* Added ucum service existing test cases passed

* Added more test cases

* Merge branch 'master' into ft-ucum-support

# Please enter a commit message to explain why this merge is necessary,
# especially if it merges an updated upstream into a topic branch.
#
# Lines starting with '#' will be ignored, and an empty message aborts
# the commit.

* Added back extractReferenceParamsAsQueryTokens

* Added changelog and migration script

* Added length for the string type

* Moved UCUM util to hapi-fhir-jpaserver-model

* Renamed UCUM support to Normalized Quantity Search Support

* Moved setNormalizedQuantitySearchNotSupported to AfterEach

* Changed migrate task to 530

* Removed comments

* Fixed in memory search issue and added more test cases

* Fixed the version order

* License header updates

* Updated based on review comments

* Updated the migration task based on review comments

* Fixed RES_TYPE with type String and length 100

* Changed myParamsQuantityNormalizedPopulated type to Boolean class
2021-01-10 21:05:24 -05:00
jamesagnew 12d366c86e License header updates 2021-01-05 18:13:14 -05:00
Tadgh efc6809ea6
Replacing Hibernate Search 5 with Hibernate Search 6 (#2190)
* Beginning work on converting to hibernate search 6
* replace all out of date properties
* replace all POM references to old versions
* remove the shaded ES jars as HS6 supports 7.9
* Convert "Bridges" to RoutingBinder and RoutingBridge
* Modernize all indexing annotations
* Begin refactoring of search queries (wip)

* Fix spatial API changes, work on BaseTermReadSvcImpl

* Most of the way through the various filter property conversions

* Finished i think with BaseTermReadSvcImpl

* Compiling, but definitely broken

* Start test compilation failures

* All tests compiling (i think)

* remove suggest keywords operation

* Fix bootstrap errors, still have to deal with transient fields

* Rollback CR

* More refactoring, got IDs baked back into docs

* Fix coord util, fix a few more fields which require projection

* merge fixes

* begin refactor of valuesetexpansion tests

* fix another test

* Update tests

* remove todos, add TestContainers

* Fix descendant in

* Add testcontainers, fix another test

* fix more tests, replace embedded es

* Rip out embedded elastic, replace with TestContainer

* merge conflicts for new analyzers

* Bump to CR2 for hibernate search 6. Add forgotten CLI dep. Add backwards compatible codecs

* Remove dead deps, update testcontainer

* Remove java-hamcrest

* Pull asserts up, refactor tests to pass in RP tests

* Update V2 check

* Remove suggest keyword tests

* Split line for testing

* Fix perhaps one of the dumbest programming mistakes in my career so far

* Refactor tests which no longer rely on a strict known order

* Fix up test config, disable log test temporarily

* Remove log4j from being transitively pulled in. re-enable test

* Update log4j exclusions with new bridge. Update test to check for core class

* Move dependency to root pom in dep management section

* Update changelog, add changelog for HS6 with ES requirements. Remove dead comment

* update testst, remove todos

* Add hibernate props provider method, add elastic regexp query

* Add todo for high level client builder

* Modify ElasticsearchRestClientFactory to support HTTPS hosts

* Remove protocol extraction from rest url

* do we even need to index this...?

* remove purge of non-indexed resources

* Add longer timeout to testcontainers

* Add task to add docker CLI to azure pipeline via task, for testcontainers

* WIP remove this

* Dont update version

* Add test for duplicate termconcepts

* Use real hibernate ORM methods

* merge issues

* Add partitionsettigns bean to match master

* Trying to debug testcontainers on azure...

* Trying to debug testcontainers on azure...

* Run even on previous failure

* Fix testcontainer port binds

* Add full text logs attaching, and test reporting

* I love yaml

* Remove comment

* Refactor delta remove to not do a once-over traversal and flatten all children pre-delete. Resolves transaction commit boundary issue

* Modify TX beheaviour

* wip

* Rework to use config and mocked beans for partition-aware lastN

* rework to not use beans and just inject vars i need for test, keps test envs cleaner

* update azure pipeline to only copy test results

* Remove erroneous publish

* Always get test logs

* Make it so indexing works,

* Add todos

* revert deleteByPid

* Work on test fixes

* Test fixes

* Test fixes

* Another test fix

* Test fix

* Work on tests

* Test fixes

* All tests passing locally

* Fix test failure

* FIx build error

* Rename usages of HibernateDialectProvider -> HibernatePropertiesProvider

* Update ngram of token filters

* Tidying

* subvert the purpose of hibernate elastic props builder to inject template

* dead space

* Rename changed class

Co-authored-by: jamesagnew <jamesagnew@gmail.com>
2021-01-05 17:56:59 -05:00
jamesagnew d20b07c78e Update license headers 2021-01-01 15:50:24 -05:00
jamesagnew f30999b053 License header updates 2021-01-01 15:07:23 -05:00
James Agnew e4d6c51290
Allow plus symbol in email address match url (#2224)
* Allow plus symbol in email address match url

* Add changelog
2020-12-09 21:52:03 -05:00
James Agnew 30b6244988
Avoid blocking on shutdown (#2206) 2020-12-02 08:44:06 -05:00
jamesagnew 74aed5d107 License headers 2020-11-29 20:53:19 -05:00
Ken Stevens 3d3242cf9a
Resource change listener (#2191)
* init rev

* fix build

* Tweaked the POM config settings and also added some dependency exclusions (commented out for now).

* More re-factoring of the CQL Unit Tests.

* Removed a LogMessages.html file and a minor Unit Test change.

* Unit Tests.

* added debug logging to troubleshoot the dao that has no name

* added debug logging to troubleshoot the dao that has no name

* workaround to get past null dao resourceName issue

* fix jsons to get test to pass.  Test still fails with library id problem

* gitignore

* gitignore

* test passes!  Woohoo!

* undo troubleshooting logging

* added timer and logging.

* added asserts and time multiple evaluations and measure the average

* readme

* adding explanations

* added more explanatory notes

* measure 2 patients

* move pom to use cqf snapshot

* roughed out cache

* roughed out cache

* Added code to VersionChangeCache class.

* added tests

* added polling test

* wrote init version

* wrote init version

* optimized versioncache

* worked on getting tests to pass

* redesigned interfaces

* all tests pass

* fixmes

* fixmes

* rename param

* Added Unit Tests.

* javadoc

* Fixed the 2-Patient Unit Test.

* More Unit Test work.

* make ResourceVersionMap immutable

* Fixed a Unit Test that was failing intermittently by adding a new way to refresh the cache.

* Use a new method called doRefreshAllCaches(0) to force a refresh and have all Listeners called immediately.

* Cleaned up IVersionChangeListenerRegistry interface to make methods more clear and resolved all Unit Tests.

* disabled tests

* disabled tests

* removed unused test method

* fixed refresh logic and added asserts

* moved cache so it can be used by searchparamregistry

* Updated the Cql Unit Tests to be properly configured for Dstu3 or R4.

* started rewriting SearchParamRegistryImpl to use new cache
added init method to listener interface

* added fixmes

* adding tests

* tests pass

* added tests

* Fixed the way CqlProviderFactory Autowires Beans so it can work with both Dstu3 and R4 contexts.

* moar tests

* fix test

* work tests

* reverting unneccessary refactors

* undo unneccessary import changes to reduce MR size

* undo unneccessary import changes to reduce MR size

* Unit Test fixes...more to come...

* add unregister

* fix tests

* Changed ResourceVersionCache to use a Map of Maps.

* searchparam test

* test passes

* resolved fixme

* fixmies

* strengthen test asserts

* More Unit Test changes and added some FIMXME items.

* changed from long to changeresult

* renamed VersionChange -> ResourceChange

* fixed delete bug

* organize imports

* fix test

* add update test

* add test reset function

* fix stack overflow

* fix startup race condition (might still be intermittent)

* found the problem.  delete doesn't work because we can't look up the deleted resource to find out what its name is

* fixed regression

* abandoned idea of incrementally updating searchparam registry.  Rebuilding every time--it doesn't change that often.

* fix test

* begin with failing test

* test passes

* fixmes and javadoc

* fix test

* fixme

* fix test

* whack-a-mole.  Either subs pass or cql passes.  Something's fishy with the FhirContext

* fix subscription test initialization

* fix method name

* Re-factored the CqlProvider Unit Tests.

* changed ResourceChange API

* add interface

* add interface

* fix test

* add schedule test

* add doc

* init rev

* FIXME

* modify FhirContext change

* change fhirContext.getResourceTypes to lazy load

* converted subscriptions

* converted subscriptions

* begin with failing test

* test passes

* fix test

* test coverage

* test coverage

* test coverage

* test coverage

* good coverage now

* pre-review cleanup.  I think I found a bug.

* moved cache into listener entry
tests pass with fixmes

* fix test

* fix test

* fix test

* fixme

* FIXMEs

* merge cache and registry

* method reorg

* javadoc

* javadoc done.  all FIXMEs resolved.

* change log

* changes needed by cdr

* spring config cleanup

* james feedback

* james feedback

* might not work. Try moving resourcechangeconfig into searchparam config

* merge ResourceChangeListenerRegistryConfig.java into SearchParamConfig

* fix test

* fix SubscriptionLoader

* fix SubscriptionLoader

* create ResourceVersionMap from resources

* added cache handle interface

* fix test

* javadoc

* fix test

* fix test

* James feedback: clone searchparametermap

* fix startup

* fix test

* fix test

* fix intermittent

* pre-review cleanup

* FIXME

* final FIXME yay!

* Address a couple of my own reviw comments

Co-authored-by: Kevin Dougan <kevin.dougan@smilecdr.com>
Co-authored-by: jamesagnew <jamesagnew@gmail.com>
2020-11-29 19:42:40 -05:00
James Agnew 228e75b501
Bump core to latest versions (#2154)
* Bump core to latest versions

* Compile fix

* Bump to non snapshot core library
2020-11-03 15:43:37 -05:00
James Agnew 5e8ec8d6f3
Resolve crash in InMemory SP resolver for empty source (#2150)
* Resolve crash in InMemory SP resolver for empty source

* Add changelog
2020-10-28 14:30:32 -04:00
James Agnew 8000d2d0cf
SQL Join Rework (#2086)
* switched to adding annotations.  Just did a test with Token, but the sql looks clean.

* switched to adding annotations.  Just did a test with Token, but the sql looks clean.

* added the other six index links

* trying different annotations

* Start testing

* Update resources on package install

* Add changelog

* Join rework

* CLean up SQL builder

* Add docs

* SP rework

* Join work

* Work on params

* Work on refactor

* Work on chains

* Work on joins

* Rework queries

* Work on queries

* Many more tests passing

* Refs test

* Work on sorting

* Work on tests

* More joins work

* Work on tests

* Work on queries

* Tests passing

* More test fixes

* Test fixes

* Work on SQL

* Tests passing

* Add some tests

* Add some tests

* License headers

* Use entity manager to get datasourcd

* One more fix

* Model cleanup

* Ongoing work

* Fixes

* Fixes

* Work on joins

* Ongoing fixes

* Merge conflict

* Cleanup

* clean up unused fields

* Work on join

* COmpile fix

* Rework querying

* Update hapi-fhir-jpaserver-base/src/main/java/ca/uhn/fhir/jpa/config/HibernateDialectProvider.java

Co-authored-by: Ken Stevens <khstevens@gmail.com>

* Address review comments

* Resolve fixmes

* Test fix

* Test fixes

* Test fix

Co-authored-by: Ken Stevens <khstevens@gmail.com>
2020-10-26 05:24:26 -04:00
Ken Stevens 3b91873b7c
delete expunge (#2131)
Added delete _expunge=true
2020-10-20 17:21:50 -04:00
Tuomo Ala-Vannesluoma 1435540320
Improve synchronous searching by providing offset & limit support (#2059)
* Improve synchronous searching by providing offset & limit support

Add support for offset querying which leverages paging at the query level
Add configuration for search default page size and search maximum page size
If using offset, always use synchronous searching to avoid extra database insert/update etc.
When using offset, only calculate count if it's wanted
Validate params closer to provider and handle size if search returned "all" (or last)

* Review and test fixes

Comment _offset as nonstandard parameter
Make synchronous search always count the total value (for now)
Fix issue with FulltextSearchSvcImpl mutating param map
Dirty fix for BaseJpaTest (not sure how to fix the including resources issue)

* Remove temporary count querying fix for synchronous loads

* Fix offsetting of everything operations, do not drop zero offset

* Fix jpa test default and maximum page size, add some fixmes to tests before resolved

* Ignore one failing test, fix others

* Fix Dereferenced variable may be null

* Fix everything paging in R4 by adding DISTINCT if synchronous load is used

Also fix assertion of size when hitting fetchSizeDefaultMaximum

* Add documentation about offset annotation and paging

Co-authored-by: James Agnew <jamesagnew@gmail.com>
2020-10-12 17:42:03 -04:00
James Agnew 2134d40f1c
Account for timezones in lastUpdated search (#2113)
* Add test

* Fix

* Add changelog

* Test fixes

* Test fix

* Test fixes

* Resolve fixme

* Test fixes

* Remove debug logs

* Try to get CI tests passing again
2020-10-09 07:52:46 -04:00
James Agnew ef4f3df945
Don't install draft package contents (#2099)
* Don't install draft package contents

* Add changelog

* Add changelog
2020-09-22 09:44:36 -04:00
James Agnew 437e81fc65
Support multiple updates of one resource in a transaction (#2050)
* Support multiple updates of one resource in a transaction

* Test update

* Add changelog

* Test fix
2020-08-25 05:55:54 -04:00
James Agnew e61b39fc30
Force a flush of the SearchParameter cache sooner when SPs change (#2030)
* Force a flush of the SearchParameter cache sooner when SPs change

* Add changelog

* Test fixes
2020-08-09 19:30:59 -04:00
Tadgh ed618613a6 Add type-based filtering to filter service. Add tests 2020-08-06 10:58:37 -07:00
James Agnew f356c7c385
Migrate to JUnit5 (#1952)
* Work on junit

* Work on junit 5

* Work on junit 5

* Bump errorprone vcersion

* Work on tests

* Junit 5 tweaks

* Fixes

* Work on tests

* Work on junit5

* Work on tests

* Test fixes

* Work on junit5

* Test work

* Get junit5 working

* Test fix

* Work on tests

* WOrk on tests

* Work on tests

* fixes

* Compile fix

* One more tweak

* Compile fix

* Add changelog

* Fix compile error

* Compile fix
2020-07-04 18:28:16 -04:00
jamesagnew ef86d26357 License header updates 2020-07-02 12:07:02 -04:00
Ken Stevens 714bd6216e
Empi 70 phonetic indexing (#1941)
* start with failing test

* test passes with fixmes

* javadoc and config

* pre-review cleanup

* generalize encoding

* test passes, but indexing needs to be optimized

* test passes, but indexing needs to be optimized

* step 1 of optimization.  big refactor of all predicates

* step 2 of optimization: determine phonetic encoder at time of RuntimeSearchParam creation

* integrated new phonetic encoders into empi

* phonetic search implemented

* IT passes

* pre-review cleanup

* final pre-review cleanup

* final pre-review cleanup

* Fix compile error

Co-authored-by: James Agnew <jamesagnew@gmail.com>
2020-06-30 17:36:54 -04:00
jamesagnew 2cdef055aa Missed commit on #1951
Squashed commit of the following:

commit f820135996
Author: jamesagnew <jamesagnew@gmail.com>
Date:   Tue Jun 30 14:29:24 2020 -0400

    Address review comments

commit 11c4f9defb
Author: jamesagnew <jamesagnew@gmail.com>
Date:   Tue Jun 30 09:38:16 2020 -0400

    Fix LGTM warning

commit b650fdb9ea
Author: jamesagnew <jamesagnew@gmail.com>
Date:   Tue Jun 30 09:20:52 2020 -0400

    Test fix

commit 6ebcceeb5c
Author: jamesagnew <jamesagnew@gmail.com>
Date:   Mon Jun 29 18:49:01 2020 -0400

    Add changelog

commit 4a1d7383b0
Author: jamesagnew <jamesagnew@gmail.com>
Date:   Mon Jun 29 18:46:52 2020 -0400

    Bundle transmission

commit 88bd4abf0c
Merge: 7cde945281 25fc747b9f
Author: jamesagnew <jamesagnew@gmail.com>
Date:   Mon Jun 29 17:31:23 2020 -0400

    Merge branch 'master' into ja_20200617_subscription_send_bundles

commit 7cde945281
Author: jamesagnew <jamesagnew@gmail.com>
Date:   Mon Jun 29 17:10:33 2020 -0400

    Work on seed bundles

commit ed2e62752e
Author: jamesagnew <jamesagnew@gmail.com>
Date:   Mon Jun 29 09:39:10 2020 -0400

    Work on subscriptions

commit 52addcff59
Merge: 64a9eaa4de bf8de84801
Author: jamesagnew <jamesagnew@gmail.com>
Date:   Sat Jun 27 18:09:23 2020 -0400

    Merge branch 'master' into ja_20200617_subscription_send_bundles

commit 64a9eaa4de
Author: jamesagnew <jamesagnew@gmail.com>
Date:   Wed Jun 17 18:32:17 2020 -0400

    Start work

commit f74eba5397
Author: jamesagnew <jamesagnew@gmail.com>
Date:   Wed Jun 17 18:28:18 2020 -0400

    Terser should create correct Enumeration on create
2020-06-30 14:31:40 -04:00
James Agnew fa4bbe3685
Allow search criteria as subscription delivery mechanism (#1951)
* Terser should create correct Enumeration on create

* Start work

* Work on subscriptions

* Work on seed bundles

* Bundle transmission

* Add changelog

* Test fix

* Fix LGTM warning
2020-06-30 14:29:09 -04:00
James Agnew 6825d2fcf0
Reduce DB roundtrips for revincludes (#1937)
* Reduce DB roundtrips for revincludes

* Add changelog
2020-06-23 16:26:04 -04:00
James Agnew b8da4f0140
Add package support (#1911)
* Begin rework of package management

* Work on NPM

* Work on package management

* Work on NPM

* NPM rework

* Work on NPM

* NPM package rework

* Updates

* Updates

* Add license

* Work on package server

* Work on package importing

* Work on package management

* Package rework

* Work on packages

* Work on package manager

* Work on pkgs

* NPM work

* NPM rework

* Work on package cache

* Work on NPM

* Work on NPM

* Package fixes

* Add tests

* Tweaks

* Test fixes

* Add changelog

* Avoid snapshot dep
2020-06-10 05:30:20 -04:00
ianmarshall 78b7f091ec Merge remote-tracking branch 'remotes/origin/master' into im_2020601_lastn_code_text_filter
# Conflicts:
#	hapi-fhir-jpaserver-base/src/test/java/ca/uhn/fhir/jpa/search/lastn/LastNElasticsearchSvcMultipleObservationsIT.java
2020-06-04 16:55:18 -04:00
Ken Stevens 60e420aaa3
resolves #1838 (#1839)
* Added %today that works like %now but with date precision instead of dateTime precision.
2020-06-04 09:52:41 -04:00
ianmarshall 8d5232bced Merge remote-tracking branch 'remotes/origin/master' into im_2020601_lastn_code_text_filter 2020-06-02 21:28:10 -04:00
jamesagnew 75a74bdd38 License headers 2020-06-02 18:20:56 -04:00
ianmarshall 2e709a50c0 Enable filtering $lastn operation by Observation effective date. 2020-06-02 16:37:07 -04:00
ianmarshall f48214deda Merge remote-tracking branch 'remotes/origin/master' into im_20200316_lastn_operation_elasticsearch
# Conflicts:
#	hapi-fhir-jpaserver-searchparam/src/main/java/ca/uhn/fhir/jpa/searchparam/extractor/BaseSearchParamExtractor.java
2020-05-29 23:54:11 -04:00
ianmarshall a4811f1508 Changes per code review. 2020-05-29 23:47:44 -04:00
James Agnew 7f72305f57
Improve Period range indexing (#1873)
* Fix #1871 - Handle period range searches better

* Add changelog

* FIx tests

* Add test logging

* Address review comments
2020-05-28 08:56:43 -04:00
ianmarshall a63d90c1f5 Additional cleanup and test fixes. 2020-05-25 18:36:04 -04:00
ianmarshall 1e554731bb Additional cleanup and test fixes. 2020-05-25 18:25:25 -04:00
ianmarshall 4d378ee0ed Merge remote-tracking branch 'remotes/origin/master' into im_20200316_lastn_operation_elasticsearch
# Conflicts:
#	hapi-fhir-cli/hapi-fhir-cli-jpaserver/src/main/java/ca/uhn/fhir/jpa/demo/CommonConfig.java
#	hapi-fhir-jpaserver-base/pom.xml
#	hapi-fhir-jpaserver-searchparam/src/main/java/ca/uhn/fhir/jpa/searchparam/extractor/BaseSearchParamExtractor.java
#	hapi-fhir-jpaserver-searchparam/src/main/java/ca/uhn/fhir/jpa/searchparam/extractor/ISearchParamExtractor.java
2020-05-22 17:04:01 -04:00
Tadgh d1b963321a
MVP EMPI implementation (#1857)
EMPI Initial Implementation (still plenty of known gaps)
2020-05-22 15:03:20 -04:00
James Agnew 5b2181a563
Implement FHIR Patch (#1850)
* Start working on FHIRPatch

* More work on fhirpatch

* Work on FHIR Patch

* Add patch

* Test fixes

* Test fixes

* Get tests fixed

* Chnage to trigger a build

* Compile fix

* Dependency version fixes

* Test fix

* COmpile fix

* Try to fix build

* Test fix attempt

* Another build attempt

* Another build tweak

* Cleanup
2020-05-20 19:43:55 -04:00
ianmarshall d2b54d6203 Merge remote-tracking branch 'remotes/origin/master' into im_20200316_lastn_operation_elasticsearch
# Conflicts:
#	hapi-fhir-jpaserver-base/src/main/java/ca/uhn/fhir/jpa/dao/SearchBuilder.java
2020-05-19 15:20:06 -04:00
ianmarshall 6a27192a96 Fixed sorting with chunked and paged queries. 2020-05-19 14:48:26 -04:00
James Agnew 79a064dfd9
Optimize chain sql paths (#1844)
* Start cleanup

* Almost workinf

* Possibly working!!

* Fixes

* Test fix

* Update hapi-fhir-jpaserver-base/src/main/java/ca/uhn/fhir/jpa/dao/predicate/querystack/QueryRootStack.java

Co-authored-by: Ken Stevens <khstevens@gmail.com>

* Update hapi-fhir-jpaserver-base/src/main/java/ca/uhn/fhir/jpa/dao/predicate/querystack/QueryRootStack.java

Co-authored-by: Ken Stevens <khstevens@gmail.com>

* Update hapi-fhir-jpaserver-base/src/main/java/ca/uhn/fhir/jpa/dao/predicate/querystack/QueryRootStack.java

Co-authored-by: Ken Stevens <khstevens@gmail.com>

* Address review comments

* Add changelog

Co-authored-by: Ken Stevens <khstevens@gmail.com>
2020-05-15 05:36:12 -04:00
ianmarshall e56cb049f7 Merge remote-tracking branch 'remotes/origin/master' into im_20200316_lastn_operation_elasticsearch 2020-05-08 09:19:44 -04:00
ianmarshall c290fa3493 Fixes to enable $lastn to return more than 32K records. 2020-05-08 09:19:14 -04:00
James Agnew 6cc07b6689
Make binary storage work for bulk export (#1836)
* Make binary storage work for bulk export

* Add changelog

* Build fixes

* Test fix

* Test fix

* Test fix
2020-05-07 19:20:22 -04:00