* use SearchParamater validator in package installer (#6112)
* Ensure ' ' is treated as '+' in timezones with offsets. (#6115)
* Use lockless mode when adding index on Azure Sql server (#6100)
* Use lockless mode when adding index on Azure Sql server
Use try-catch for Online add-index on Sql Server.
This avoids having to map out the entire matrix of Sql Server product names and ONLINE index support.
Warnings in docs, and cleanups
* make consent service dont call willSeeResource on children if parent resource is AUTHORIZED or REJECT (#6127)
* fix hfj search migration task (#6143)
* fix migration task
* changelog
* changelog
* code review
* spotless
---------
Co-authored-by: jdar <justin.dar@smiledigitalhealth.com>
* Enhance migration for MSSQL to change the collation for HFJ_RESOURCE.FHIR_ID to case sensitive (#6135)
* MSSQL: Migrate HFJ_RESOURCE.FHIR_ID to new collation: SQL_Latin1_General_CP1_CS_AS
* Spotless.
* Enhance test. Fix case in ResourceSearchView to defend against future migration to case insensitive collation.
* Remove TODOs. Add comment to ResourceSearchView explaining why all columns are uppercase. Changelog.
* Update hapi-fhir-docs/src/main/resources/ca/uhn/hapi/fhir/changelog/7_4_0/6146-mssql-hfj-resource-fhir-id-colllation.yaml
Code reviewer suggestion
Co-authored-by: Michael Buckley <michaelabuckley@gmail.com>
* Code review fixes: Make changes conditional on the collation including _CI_, otherwise, leave it alone.
---------
Co-authored-by: Michael Buckley <michaelabuckley@gmail.com>
* Common API for FHIR Data Access (#6141)
* Add initial interface for common FHIR API
* Fix formatting
* Update javadocs
* Address code review comments
* Add path value to _id search parameter and other missing search param… (#6128)
* Add path value to _id search parameter and other missing search parameters to IAnyResource.
* Adjust tests and remove now unnecessary addition of meta parameters which are now provided by IAnyResource
* Revert unneeded change
* _security param is not token but uri
* Add tests for new defined resource-level standard parameters
* Adjust test
---------
Co-authored-by: juan.marchionatto <juan.marchionatto@smilecdr.com>
* update to online (#6157)
* SEARCH_UUID should be non-null (#6165)
Avoid using constants in migrations because it creates false history.
* Handle 400 and 404 codes returned by remote terminology operation. (#6151)
* Handle 400 and 404 codes returned by remote terminology operation.
* Some simplification
* Adjust changelog
* Add a comment to explain alternate solution which can be reused.
* fix concepts with no display element for $apply-codesystem-delta-add and $apply-codesystem-delta-remove (#6164)
* allow transaction with update conditional urls (#6155)
* Revert "Add path value to _id search parameter and other missing search param…" (#6171)
This reverts commit 2275eba1a0.
* 7 2 2 mb (#6160)
* Enhance RuleBuilder code to support multiple instances (#5852)
* Overhaul bulk export permissions.
* Overhaul bulk export permissions.
* Small tweak to rule builder.
* Cleanup validation.
* Cleanup validation.
* Code review feedback.
* Postgres terminology service hard coded column names migration (#5866)
* updating parent pids column name
* updating name of the fullTestField Search
* updating name of the fullTestField Search
* fixing typo.
* failing test.
* - Moving FullTextField annotation from getter method and adding it to the newly added VC property of the entity;
- reverting the name of the FullTextField entity to its previous name of 'myParentPids';
- reverting the name of the lucene index to search on in the terminology service.
- updating the changelog;
* making spotless happy
---------
Co-authored-by: peartree <etienne.poirier@smilecdr.com>
* 5879 back porting fix for issue 5877 (attempting to update a tokenparam with a value greater than 200 characters raises an sqlexception) to release rel_7_2 (#5881)
* initial failing test.
* solution
* adding changelog
* spotless
* moving changelog from 7_4_0 to 7_2_0 and deleting 7_4_0 folder.
---------
Co-authored-by: peartree <etienne.poirier@smilecdr.com>
* Expose BaseRequestPartitionHelperSvc validateAndNormalize methods (#5811)
* Expose BaseRequestPartitionHelperSvc validate and normalize methods
* Compilation errors
* change mock test to jpa test
* change mock test to jpa test
* validateAndNormalizePartitionIds
* validateAndNormalizePartitionNames
* validateAndNormalizePartitionIds validation + bug fix
* validateAndNormalizePartitionNames validation
* fix test
* version bump
* Ensure a non-numeric FHIR ID doesn't result in a NumberFormatException when processing survivorship rules (#5883)
* Add failing test as well as commented out potential solution.
* Fix for NumberFormatException.
* Add conditional test for survivorship rules.
* Spotless.
* Add changelog.
* Code review feedback.
* updating documentation (#5889)
* Ensure temp file ends with "." and then suffix. (#5894)
* bugfix to https://github.com/hapifhir/hapi-fhir-jpaserver-starter/issues/675 (#5892)
Co-authored-by: Jens Kristian Villadsen <jenskristianvilladsen@gmail.com>
* Enhance mdm interceptor (#5899)
* Add MDM Transaction Context for further downstream processing giving interceptors a better chance of figuring out what happened.
* Added javadoc
* Cahngelog
* spotless
---------
Co-authored-by: Jens Kristian Villadsen <jenskristianvilladsen@gmail.com>
* Fix BaseHapiFhirResourceDao $meta method to use HapiTransactionService instead of @Transaction (#5896)
* Try making ResourceTable.myTags EAGER instead of LAZY and see if it breaks anything.
* Try making ResourceTable.myTags EAGER instead of LAZY and see if it breaks anything.
* Ensure BaseHapiFhirResourceDao#metaGetOperation uses HapiTransactionService instead of @Transactional in order to resolve megascale $meta bug.
* Add changelog.
* Update hapi-fhir-docs/src/main/resources/ca/uhn/hapi/fhir/changelog/7_2_0/5898-ld-megascale-meta-operation-fails-hapi-0389.yaml
Commit code reviewer suggestion.
Co-authored-by: Tadgh <garygrantgraham@gmail.com>
---------
Co-authored-by: Tadgh <garygrantgraham@gmail.com>
* Fix query chained on sort bug where we over-filter results (#5903)
* Failing test.
* Ensure test cleanup doesn't fail by deleting Patients before Practitioners.
* Implement fix.
* Spotless.
* Clean up unit test and add changelog. Fix unit test.
* Fix changelog file.
* Apply suggestions from code review
Apply code review suggestions.
Co-authored-by: Michael Buckley <michaelabuckley@gmail.com>
* Spotless
---------
Co-authored-by: Michael Buckley <michaelabuckley@gmail.com>
* cve fix (#5906)
Co-authored-by: Long Ma <long@smilecdr.com>
* Fixing issues with postgres LOB migration. (#5895)
* Fixing issues with postgres LOB migration.
* addressing code review comments for audit/transaction logs.
* test and implementation for BinaryStorageEntity migration post code review.
* test and implementation for BinaryStorageEntity migration post code review.
* test and implementation for TermConcept
migration post code review.
* applying spotless
* test and implementation for TermConceptProperty
migration post code review.
* test and implementation for TermValueSetConcept
migration post code review.
* fixing migration version
* fixing migration task
* changelog
* fixing changelog
* Minor renames
* addressing comments and suggestions from second code review.
* passing tests
* fixing more tests
---------
Co-authored-by: peartree <etienne.poirier@smilecdr.com>
Co-authored-by: Tadgh <garygrantgraham@gmail.com>
* 6051 bulk export security errors (#5915)
* Enhance RuleBuilder code to support multiple instances (#5852)
* Overhaul bulk export permissions.
* Overhaul bulk export permissions.
* Small tweak to rule builder.
* Cleanup validation.
* Cleanup validation.
* Code review feedback.
* Postgres terminology service hard coded column names migration (#5866)
* updating parent pids column name
* updating name of the fullTestField Search
* updating name of the fullTestField Search
* fixing typo.
* failing test.
* - Moving FullTextField annotation from getter method and adding it to the newly added VC property of the entity;
- reverting the name of the FullTextField entity to its previous name of 'myParentPids';
- reverting the name of the lucene index to search on in the terminology service.
- updating the changelog;
* making spotless happy
---------
Co-authored-by: peartree <etienne.poirier@smilecdr.com>
* 5879 back porting fix for issue 5877 (attempting to update a tokenparam with a value greater than 200 characters raises an sqlexception) to release rel_7_2 (#5881)
* initial failing test.
* solution
* adding changelog
* spotless
* moving changelog from 7_4_0 to 7_2_0 and deleting 7_4_0 folder.
---------
Co-authored-by: peartree <etienne.poirier@smilecdr.com>
* Expose BaseRequestPartitionHelperSvc validateAndNormalize methods (#5811)
* Expose BaseRequestPartitionHelperSvc validate and normalize methods
* Compilation errors
* change mock test to jpa test
* change mock test to jpa test
* validateAndNormalizePartitionIds
* validateAndNormalizePartitionNames
* validateAndNormalizePartitionIds validation + bug fix
* validateAndNormalizePartitionNames validation
* fix test
* version bump
* Ensure a non-numeric FHIR ID doesn't result in a NumberFormatException when processing survivorship rules (#5883)
* Add failing test as well as commented out potential solution.
* Fix for NumberFormatException.
* Add conditional test for survivorship rules.
* Spotless.
* Add changelog.
* Code review feedback.
* updating documentation (#5889)
* Ensure temp file ends with "." and then suffix. (#5894)
* bugfix to https://github.com/hapifhir/hapi-fhir-jpaserver-starter/issues/675 (#5892)
Co-authored-by: Jens Kristian Villadsen <jenskristianvilladsen@gmail.com>
* Enhance mdm interceptor (#5899)
* Add MDM Transaction Context for further downstream processing giving interceptors a better chance of figuring out what happened.
* Added javadoc
* Cahngelog
* spotless
---------
Co-authored-by: Jens Kristian Villadsen <jenskristianvilladsen@gmail.com>
* Fix BaseHapiFhirResourceDao $meta method to use HapiTransactionService instead of @Transaction (#5896)
* Try making ResourceTable.myTags EAGER instead of LAZY and see if it breaks anything.
* Try making ResourceTable.myTags EAGER instead of LAZY and see if it breaks anything.
* Ensure BaseHapiFhirResourceDao#metaGetOperation uses HapiTransactionService instead of @Transactional in order to resolve megascale $meta bug.
* Add changelog.
* Update hapi-fhir-docs/src/main/resources/ca/uhn/hapi/fhir/changelog/7_2_0/5898-ld-megascale-meta-operation-fails-hapi-0389.yaml
Commit code reviewer suggestion.
Co-authored-by: Tadgh <garygrantgraham@gmail.com>
---------
Co-authored-by: Tadgh <garygrantgraham@gmail.com>
* Fix query chained on sort bug where we over-filter results (#5903)
* Failing test.
* Ensure test cleanup doesn't fail by deleting Patients before Practitioners.
* Implement fix.
* Spotless.
* Clean up unit test and add changelog. Fix unit test.
* Fix changelog file.
* Apply suggestions from code review
Apply code review suggestions.
Co-authored-by: Michael Buckley <michaelabuckley@gmail.com>
* Spotless
---------
Co-authored-by: Michael Buckley <michaelabuckley@gmail.com>
* cve fix (#5906)
Co-authored-by: Long Ma <long@smilecdr.com>
* Fixing issues with postgres LOB migration. (#5895)
* Fixing issues with postgres LOB migration.
* addressing code review comments for audit/transaction logs.
* test and implementation for BinaryStorageEntity migration post code review.
* test and implementation for BinaryStorageEntity migration post code review.
* test and implementation for TermConcept
migration post code review.
* applying spotless
* test and implementation for TermConceptProperty
migration post code review.
* test and implementation for TermValueSetConcept
migration post code review.
* fixing migration version
* fixing migration task
* changelog
* fixing changelog
* Minor renames
* addressing comments and suggestions from second code review.
* passing tests
* fixing more tests
---------
Co-authored-by: peartree <etienne.poirier@smilecdr.com>
Co-authored-by: Tadgh <garygrantgraham@gmail.com>
* refactor bulk export rule, add concept of appliestoallpatients, fix tests
* spotless
* Cahgnelog, tests
* more tests
* refactor style checks
---------
Co-authored-by: Luke deGruchy <luke.degruchy@smilecdr.com>
Co-authored-by: Etienne Poirier <33007955+epeartree@users.noreply.github.com>
Co-authored-by: peartree <etienne.poirier@smilecdr.com>
Co-authored-by: Nathan Doef <n.doef@protonmail.com>
Co-authored-by: TipzCM <leif.stawnyczy@gmail.com>
Co-authored-by: dotasek <david.otasek@smilecdr.com>
Co-authored-by: Jens Kristian Villadsen <jenskristianvilladsen@gmail.com>
Co-authored-by: Michael Buckley <michaelabuckley@gmail.com>
Co-authored-by: longma1 <32119004+longma1@users.noreply.github.com>
Co-authored-by: Long Ma <long@smilecdr.com>
* Convert a few nulls to aggressive denies
* Change chain sort syntax for MS SQL (#5917)
* Change sort type on chains
* Change sort type on chains
* Test for MS SQL
* Comments
* Version bump
* Updating version to: 7.2.1 post release.
* Fix queries with chained sort with Lucene by checking supported SortSpecs (#5958)
* First commit with very rough solution.
* Solidify solutions for both requirements. Add new tests. Enhance others.
* Spotless.
* Add new chained sort spec algorithm. Add new Msg.codes. Finalize tests. Update docs. Add changelog.
* pom remove the snapshot
* Updating version to: 7.2.2 post release.
* cherry-picked pr 6051
* changelog fix
* cherry-picked 6027
* docs and changelog
* merge fix for issue with infinite cache refresh loop
* Use lockless mode when adding index on Azure Sql server (#6100) (#6129)
* Use lockless mode when adding index on Azure Sql server
Use try-catch for Online add-index on Sql Server.
This avoids having to map out the entire matrix of Sql Server product names and ONLINE index support.
Warnings in docs, and cleanups
* added fix for 6133
* failing Test
* Add fix
* spotless
* Remove useless file
* Fix claeaner
* cleanup
* Remove dead class
* Changelog
* test description
* Add test. Fix broken logic.
* fix quantity search parameter test to pass
* reverted test testDirectPathWholeResourceNotIndexedWorks in FhirResourceDaoR4SearchWithElasticSearchIT
* spotless
* cleanup mistake during merge
* added missing imports
* fix more mergeback oopsies
* bump to 7.3.13-snapshot
---------
Co-authored-by: Luke deGruchy <luke.degruchy@smilecdr.com>
Co-authored-by: Etienne Poirier <33007955+epeartree@users.noreply.github.com>
Co-authored-by: peartree <etienne.poirier@smilecdr.com>
Co-authored-by: Nathan Doef <n.doef@protonmail.com>
Co-authored-by: TipzCM <leif.stawnyczy@gmail.com>
Co-authored-by: dotasek <david.otasek@smilecdr.com>
Co-authored-by: Jens Kristian Villadsen <jenskristianvilladsen@gmail.com>
Co-authored-by: Tadgh <garygrantgraham@gmail.com>
Co-authored-by: Michael Buckley <michaelabuckley@gmail.com>
Co-authored-by: Long Ma <long@smilecdr.com>
Co-authored-by: markiantorno <markiantorno@gmail.com>
* Patient validate operation with remote terminology service enabled returns 400 bad request (#6124)
* Patient $validate operation with Remote Terminology Service enabled returns 400 Bad Request - failing test
* Patient $validate operation with Remote Terminology Service enabled returns 400 Bad Request - implementation
* - Changing method accessibility from default to public to allow method overwriting. (#6172)
Co-authored-by: peartree <etienne.poirier@smilecdr.com>
* applying Taha Attari's fix on branch merging to rel_7_4 (#6177)
Co-authored-by: peartree <etienne.poirier@smilecdr.com>
* Automated Migration Testing (HAPI-FHIR) V7_4_0 (#6170)
* Automated Migration Testing (HAPI-FHIR) - updated test migration scripts for 7_4_0
* Automated Migration Testing (HAPI-FHIR) - updated test migration scripts for 7_2_0
* To provide the target resource partitionId and partitionDate in the resourceLinlk (#6149)
* initial POC.
* addressing comments from first code review
* Adding tests
* adding changelog and spotless
* fixing tests
* spotless
---------
Co-authored-by: peartree <etienne.poirier@smilecdr.com>
* applying patch (#6190)
Co-authored-by: peartree <etienne.poirier@smilecdr.com>
* cve for 08 release (#6197)
Co-authored-by: Long Ma <long@smilecdr.com>
* Search param path missing for _id param (#6175)
* Add path tp _id search param and definitions for _lastUpdated _tag, _profile and _security
* Add tests and changelog
* Increase snapshot version
* Irrelevant change to force new build
---------
Co-authored-by: juan.marchionatto <juan.marchionatto@smilecdr.com>
* Reverting to core fhir-test-cases 1.1.14; (#6194)
re-enabling FhirPatchCoreTest
Co-authored-by: peartree <etienne.poirier@smilecdr.com>
* Fix $reindex job with custom partition interceptor based on resource type. Update reindex job to always run with urls. (#6185)
* Refactor logic to bring together partition related logic in batch2 jobs using IJobPartitionProvider. Update logic such that reindex job without urls will attempt to create urls for all supported resource types.
* Small changes and fix of pipeline error.
* Small change to enable mdm-submit to use PartitionedUrl in the job parameters
* Revert logback change. Fix dependency version generating errors in the pipeline.
* Spotless fix. Add test dependency back without version.
* Upgrade test dependency to another version
* Add javadoc for PartitionedUrl. Other small fixes and refactoring in tests.
* Spotless fix.
* Change to JobParameters to fix some of the tests.
* Small changes for code review in test
* Address code review comments.
* Revert change from bad merge.
* Address remaining code review comments
* 6188 subscription not marked as a cross partition subscription matches operation on resources in other partitions (#6191)
* initial failing test
* WIP
* fixing/adding tests
* added changelog
* spotless
* fixing tests
* Cleaning up tests
* addressing commetns from first code review.
* no-op to get pipelines going
---------
Co-authored-by: peartree <etienne.poirier@smilecdr.com>
* Resolve 6173 - Log unhandled Exceptions in RestfulServer (#6176) (#6205)
* 6173 - Log unhandled Exceptions in RestfulServer.
* Use placeholder for failed streams.
* Starting test for server handling.
* Got test working.
* Fixed use of synchronized keyword.
* Applied mvn spotless.
---------
Co-authored-by: Kevin Dougan <72025369+KevinDougan@users.noreply.github.com>
Co-authored-by: Michael Buckley <michaelabuckley@gmail.com>
* Partition aware transactions (#6167)
* Partition aware transactions
* Address review comments
* Test fixes
* Remove dead issue field
* Test fixes
---------
Co-authored-by: Tadgh <garygrantgraham@gmail.com>
* Add license header
* rel_7_4 mergeback
---------
Co-authored-by: Emre Dincturk <74370953+mrdnctrk@users.noreply.github.com>
Co-authored-by: Luke deGruchy <luke.degruchy@smilecdr.com>
Co-authored-by: Michael Buckley <michaelabuckley@gmail.com>
Co-authored-by: jdar8 <69840459+jdar8@users.noreply.github.com>
Co-authored-by: jdar <justin.dar@smiledigitalhealth.com>
Co-authored-by: Luke deGruchy <luke.degruchy@smiledigitalhealth.com>
Co-authored-by: JP <jonathan.i.percival@gmail.com>
Co-authored-by: jmarchionatto <60409882+jmarchionatto@users.noreply.github.com>
Co-authored-by: juan.marchionatto <juan.marchionatto@smilecdr.com>
Co-authored-by: TipzCM <leif.stawnyczy@gmail.com>
Co-authored-by: Martha Mitran <marthamitran@gmail.com>
Co-authored-by: Etienne Poirier <33007955+epeartree@users.noreply.github.com>
Co-authored-by: longma1 <32119004+longma1@users.noreply.github.com>
Co-authored-by: peartree <etienne.poirier@smilecdr.com>
Co-authored-by: Nathan Doef <n.doef@protonmail.com>
Co-authored-by: dotasek <david.otasek@smilecdr.com>
Co-authored-by: Jens Kristian Villadsen <jenskristianvilladsen@gmail.com>
Co-authored-by: Tadgh <garygrantgraham@gmail.com>
Co-authored-by: Long Ma <long@smilecdr.com>
Co-authored-by: markiantorno <markiantorno@gmail.com>
Co-authored-by: Martha Mitran <martha.mitran@smiledigitalhealth.com>
Co-authored-by: Kevin Dougan <72025369+KevinDougan@users.noreply.github.com>
Co-authored-by: James Agnew <jamesagnew@gmail.com>
* wip
* wip
* revert'
* Delete existing things
* docs
* removing last of hamcrest
* removing last of hamcrest
* manual fix
* remove matchers used in awaitility
* remove matchers used in awaitility
* Final checkstyle removals
* Disable suppression rule for mdm checkstyle
* Fix some awaitility, remove dead matchers
* manual fixes
* manual fixes
* filter all hamcrest mentions
---------
Co-authored-by: Ken Stevens <khstevens@gmail.com>
* first cut
* first cut
* cleanup
* that took way too long
* fix test
* licenses
* merge master
* merge master
* changelog
* review feedback
* bump version
* Bump to core 6.2.6 + fix compilation errors
* Fix signature error
* Error ordering
* WIP 1 Fixing failing tests
* Fix FhirInstanceValidatorR4Test
* Fix FhirInstanceValidatorR5Test
* Fix FhirInstanceValidatorR4BTest
* Fix FhirInstanceValidatorDstu3Test.testValidateBuiltInProfiles()
* WIP Fix FhirInstanceValidatorDstu3Test
* Fix isPrimitiveType
* Add placeholder narratives to ServerCapabilityStatement
* Fix QuestionnaireResponseValidatorR4Test
* Newline cleanup
* Fix QuestionnaireResponseValidatorDstu3Test
* Fix QuestionnaireResponseValidatorR5Test
* Increase expected error messages by two because VALIDATION_HL7_WG_NEEDED
New validation requirement as of 2023-09-16
* Add placeholder fix for Balp narrative
* Fix expected validation messages
* Fix more expected validation messages
* Don't generate a master IPS narrative
* Fix IPS generation tests expecting old composition narrative
* Update fhir core and clinical-reasoning
* Remove commented code
* Bump to core 6.2.16-SNAPSHOT
* Add missing methods
* Add missing methods 2
* Fix error codes
* Fix error code
* Fix failing tests for Unsupported method 2488
* Fix error text
* Fix another expected error message
* Apply spotless
* Fix error strings
* Add minimal implementation to fix failing test
* Fix error message
* Fix some validation tests (r4)
* Fix more R5 tests
* Update for changing API
* Fix some R4B test failures
* Fix android incompatibility
* Fix more tests
* Switch back to LF
* Fix more tests 2
* Fix R4 IPS generation use of relative references, switch to random UUID
* Fix missing codes and patient ID in IPS test
* Fix missing codes in IPS R4 Test 2
* Fix display value
* Fix display value
* Reorg wrapper issue collection; fixes errors with Balp and others
* Update for API changes
* Fix code set typo causing test failure
* Fix DiffProviderR4Test
* Fix RepositoryValidatingInterceptorHttpR4Test fails
due to stricter code validation
* More code fixes
* Don't expect an extra error.
* Use more specific logic for details tx code
* Catch expected error
* Clean up
* Account for HAPI isEnabledValidationForCodingsLogicalAnd cases
* Apply spotless
* Change outputs for en_US single code test
* Add missing system from code to pass validation
* Account for DSTU3 and R4 including different code systems for race
* Add expected loinc codes to test dao
* Add some codesystem support for test
* Bump core version
* WIP pass on a list of CodeValidationIssue from CodeValidationResults
* Re-use v2 and v3 data from r4 in r4b
* CodeSystems can be supported, but not have a resource
* Remove hack around unitsofmeasure + return false LookupCodeResult
* Clean up chatter.
* Update test cases, remove FIXME
* Stop returning before adding all issues to ValidationResults
* Update for changes in core API
* Add severity to code issues + return to unknown system support
* Use new CollectionUtils
* Fix more issue messages and orders + null in TermReadSvcImpl
* After checking valueSet, also check codeSystem
* On second thought, always check the codesystem
* Improve validation message
* Refactor
* Add error consistent with core validator results
* Decrement query counts for validation
* Improve code validation messages + don't miss invalid display on cs
* Fix expected messages (added code details)
* More expected message fixes
* Remove redundant text from diagnostics + match core exception handling
* Explicitly send tx passthrough messages no longer managed in core
* Apply spotless
* Add issue to code validation in TermReadSvcImpl
* Adjust indexes of expected errors now that TermReadSvc is reporting
* Bump to released core version
* Code cleanup: commented code
* More commented code cleanup
* Fix parameter names
* Use Set.of and List.of + fix duplicate values in set
* Revert animal sniffed breakage, make field private
* Add comments to describe disabled test
* Remove System.out chatter
* Fix javadoc generation for r5 structures module
* More comments and move disabled annotation
It was working when it left the shop.
* Move older changelog into 7.4.0 and create core update changelog
* Switch changelog type to change
* Bump HAPI version
* Add validation utils for FATAL issue severity
* Handle FATAL codeValidationIssue severity
* Fix test (validation throws more warnings)
* Bump to version 7.3.4-SNAPSHOT
* Bump to SNAPSHOT version of core + add necessary method implementations
* Add comments to explain R4 terminology resources in R4B
* Add test for Observation vital signs profile validation
* Try using default validatorPolicyAdvisor
* Return an empty set for fetchCanonicalResourceVersions
* Profile now gives more explicit error instead of valueSet
* Revert commit
* Add CodeValidationIssues and additional error info
* Do not return first successful match from codings. Check all.
+ adjust for extra errors.
* apply spotless
* Fix failing test, add comments re: invocations
* Fix test to expect more informative error
* Fix stray compilation errors from merge.
* Fix merge overwrite of validation messages and indices
* Fix merge overwrite of new validation results
* Use core release 6.3.11
* Update HAPI version to 7.3.5-SNAPSHOT
* Fix changelog
* Remove commented code
---------
Co-authored-by: James Agnew <jamesagnew@gmail.com>
Co-authored-by: volodymyr <volodymyr.korzh@smilecdr.com>
Also:
- fix total parsing in internal MatchUrl service.
- Add more syntax tests for our docker database tests
- Change DaoTestDataBuilder to use a bundle with delete entries for teardown.
* Enhance RuleBuilder code to support multiple instances (#5852)
* Overhaul bulk export permissions.
* Overhaul bulk export permissions.
* Small tweak to rule builder.
* Cleanup validation.
* Cleanup validation.
* Code review feedback.
* Postgres terminology service hard coded column names migration (#5866)
* updating parent pids column name
* updating name of the fullTestField Search
* updating name of the fullTestField Search
* fixing typo.
* failing test.
* - Moving FullTextField annotation from getter method and adding it to the newly added VC property of the entity;
- reverting the name of the FullTextField entity to its previous name of 'myParentPids';
- reverting the name of the lucene index to search on in the terminology service.
- updating the changelog;
* making spotless happy
---------
Co-authored-by: peartree <etienne.poirier@smilecdr.com>
* 5879 back porting fix for issue 5877 (attempting to update a tokenparam with a value greater than 200 characters raises an sqlexception) to release rel_7_2 (#5881)
* initial failing test.
* solution
* adding changelog
* spotless
* moving changelog from 7_4_0 to 7_2_0 and deleting 7_4_0 folder.
---------
Co-authored-by: peartree <etienne.poirier@smilecdr.com>
* Expose BaseRequestPartitionHelperSvc validateAndNormalize methods (#5811)
* Expose BaseRequestPartitionHelperSvc validate and normalize methods
* Compilation errors
* change mock test to jpa test
* change mock test to jpa test
* validateAndNormalizePartitionIds
* validateAndNormalizePartitionNames
* validateAndNormalizePartitionIds validation + bug fix
* validateAndNormalizePartitionNames validation
* fix test
* version bump
* Ensure a non-numeric FHIR ID doesn't result in a NumberFormatException when processing survivorship rules (#5883)
* Add failing test as well as commented out potential solution.
* Fix for NumberFormatException.
* Add conditional test for survivorship rules.
* Spotless.
* Add changelog.
* Code review feedback.
* updating documentation (#5889)
* Ensure temp file ends with "." and then suffix. (#5894)
* bugfix to https://github.com/hapifhir/hapi-fhir-jpaserver-starter/issues/675 (#5892)
Co-authored-by: Jens Kristian Villadsen <jenskristianvilladsen@gmail.com>
* Enhance mdm interceptor (#5899)
* Add MDM Transaction Context for further downstream processing giving interceptors a better chance of figuring out what happened.
* Added javadoc
* Cahngelog
* spotless
---------
Co-authored-by: Jens Kristian Villadsen <jenskristianvilladsen@gmail.com>
* Fix BaseHapiFhirResourceDao $meta method to use HapiTransactionService instead of @Transaction (#5896)
* Try making ResourceTable.myTags EAGER instead of LAZY and see if it breaks anything.
* Try making ResourceTable.myTags EAGER instead of LAZY and see if it breaks anything.
* Ensure BaseHapiFhirResourceDao#metaGetOperation uses HapiTransactionService instead of @Transactional in order to resolve megascale $meta bug.
* Add changelog.
* Update hapi-fhir-docs/src/main/resources/ca/uhn/hapi/fhir/changelog/7_2_0/5898-ld-megascale-meta-operation-fails-hapi-0389.yaml
Commit code reviewer suggestion.
Co-authored-by: Tadgh <garygrantgraham@gmail.com>
---------
Co-authored-by: Tadgh <garygrantgraham@gmail.com>
* Fix query chained on sort bug where we over-filter results (#5903)
* Failing test.
* Ensure test cleanup doesn't fail by deleting Patients before Practitioners.
* Implement fix.
* Spotless.
* Clean up unit test and add changelog. Fix unit test.
* Fix changelog file.
* Apply suggestions from code review
Apply code review suggestions.
Co-authored-by: Michael Buckley <michaelabuckley@gmail.com>
* Spotless
---------
Co-authored-by: Michael Buckley <michaelabuckley@gmail.com>
* cve fix (#5906)
Co-authored-by: Long Ma <long@smilecdr.com>
* Fixing issues with postgres LOB migration. (#5895)
* Fixing issues with postgres LOB migration.
* addressing code review comments for audit/transaction logs.
* test and implementation for BinaryStorageEntity migration post code review.
* test and implementation for BinaryStorageEntity migration post code review.
* test and implementation for TermConcept
migration post code review.
* applying spotless
* test and implementation for TermConceptProperty
migration post code review.
* test and implementation for TermValueSetConcept
migration post code review.
* fixing migration version
* fixing migration task
* changelog
* fixing changelog
* Minor renames
* addressing comments and suggestions from second code review.
* passing tests
* fixing more tests
---------
Co-authored-by: peartree <etienne.poirier@smilecdr.com>
Co-authored-by: Tadgh <garygrantgraham@gmail.com>
* 6051 bulk export security errors (#5915)
* Enhance RuleBuilder code to support multiple instances (#5852)
* Overhaul bulk export permissions.
* Overhaul bulk export permissions.
* Small tweak to rule builder.
* Cleanup validation.
* Cleanup validation.
* Code review feedback.
* Postgres terminology service hard coded column names migration (#5866)
* updating parent pids column name
* updating name of the fullTestField Search
* updating name of the fullTestField Search
* fixing typo.
* failing test.
* - Moving FullTextField annotation from getter method and adding it to the newly added VC property of the entity;
- reverting the name of the FullTextField entity to its previous name of 'myParentPids';
- reverting the name of the lucene index to search on in the terminology service.
- updating the changelog;
* making spotless happy
---------
Co-authored-by: peartree <etienne.poirier@smilecdr.com>
* 5879 back porting fix for issue 5877 (attempting to update a tokenparam with a value greater than 200 characters raises an sqlexception) to release rel_7_2 (#5881)
* initial failing test.
* solution
* adding changelog
* spotless
* moving changelog from 7_4_0 to 7_2_0 and deleting 7_4_0 folder.
---------
Co-authored-by: peartree <etienne.poirier@smilecdr.com>
* Expose BaseRequestPartitionHelperSvc validateAndNormalize methods (#5811)
* Expose BaseRequestPartitionHelperSvc validate and normalize methods
* Compilation errors
* change mock test to jpa test
* change mock test to jpa test
* validateAndNormalizePartitionIds
* validateAndNormalizePartitionNames
* validateAndNormalizePartitionIds validation + bug fix
* validateAndNormalizePartitionNames validation
* fix test
* version bump
* Ensure a non-numeric FHIR ID doesn't result in a NumberFormatException when processing survivorship rules (#5883)
* Add failing test as well as commented out potential solution.
* Fix for NumberFormatException.
* Add conditional test for survivorship rules.
* Spotless.
* Add changelog.
* Code review feedback.
* updating documentation (#5889)
* Ensure temp file ends with "." and then suffix. (#5894)
* bugfix to https://github.com/hapifhir/hapi-fhir-jpaserver-starter/issues/675 (#5892)
Co-authored-by: Jens Kristian Villadsen <jenskristianvilladsen@gmail.com>
* Enhance mdm interceptor (#5899)
* Add MDM Transaction Context for further downstream processing giving interceptors a better chance of figuring out what happened.
* Added javadoc
* Cahngelog
* spotless
---------
Co-authored-by: Jens Kristian Villadsen <jenskristianvilladsen@gmail.com>
* Fix BaseHapiFhirResourceDao $meta method to use HapiTransactionService instead of @Transaction (#5896)
* Try making ResourceTable.myTags EAGER instead of LAZY and see if it breaks anything.
* Try making ResourceTable.myTags EAGER instead of LAZY and see if it breaks anything.
* Ensure BaseHapiFhirResourceDao#metaGetOperation uses HapiTransactionService instead of @Transactional in order to resolve megascale $meta bug.
* Add changelog.
* Update hapi-fhir-docs/src/main/resources/ca/uhn/hapi/fhir/changelog/7_2_0/5898-ld-megascale-meta-operation-fails-hapi-0389.yaml
Commit code reviewer suggestion.
Co-authored-by: Tadgh <garygrantgraham@gmail.com>
---------
Co-authored-by: Tadgh <garygrantgraham@gmail.com>
* Fix query chained on sort bug where we over-filter results (#5903)
* Failing test.
* Ensure test cleanup doesn't fail by deleting Patients before Practitioners.
* Implement fix.
* Spotless.
* Clean up unit test and add changelog. Fix unit test.
* Fix changelog file.
* Apply suggestions from code review
Apply code review suggestions.
Co-authored-by: Michael Buckley <michaelabuckley@gmail.com>
* Spotless
---------
Co-authored-by: Michael Buckley <michaelabuckley@gmail.com>
* cve fix (#5906)
Co-authored-by: Long Ma <long@smilecdr.com>
* Fixing issues with postgres LOB migration. (#5895)
* Fixing issues with postgres LOB migration.
* addressing code review comments for audit/transaction logs.
* test and implementation for BinaryStorageEntity migration post code review.
* test and implementation for BinaryStorageEntity migration post code review.
* test and implementation for TermConcept
migration post code review.
* applying spotless
* test and implementation for TermConceptProperty
migration post code review.
* test and implementation for TermValueSetConcept
migration post code review.
* fixing migration version
* fixing migration task
* changelog
* fixing changelog
* Minor renames
* addressing comments and suggestions from second code review.
* passing tests
* fixing more tests
---------
Co-authored-by: peartree <etienne.poirier@smilecdr.com>
Co-authored-by: Tadgh <garygrantgraham@gmail.com>
* refactor bulk export rule, add concept of appliestoallpatients, fix tests
* spotless
* Cahgnelog, tests
* more tests
* refactor style checks
---------
Co-authored-by: Luke deGruchy <luke.degruchy@smilecdr.com>
Co-authored-by: Etienne Poirier <33007955+epeartree@users.noreply.github.com>
Co-authored-by: peartree <etienne.poirier@smilecdr.com>
Co-authored-by: Nathan Doef <n.doef@protonmail.com>
Co-authored-by: TipzCM <leif.stawnyczy@gmail.com>
Co-authored-by: dotasek <david.otasek@smilecdr.com>
Co-authored-by: Jens Kristian Villadsen <jenskristianvilladsen@gmail.com>
Co-authored-by: Michael Buckley <michaelabuckley@gmail.com>
Co-authored-by: longma1 <32119004+longma1@users.noreply.github.com>
Co-authored-by: Long Ma <long@smilecdr.com>
* Convert a few nulls to aggressive denies
* Change chain sort syntax for MS SQL (#5917)
* Change sort type on chains
* Change sort type on chains
* Test for MS SQL
* Comments
* Version bump
* version bump to 7.3.1-SNAPSHOT
---------
Co-authored-by: Luke deGruchy <luke.degruchy@smilecdr.com>
Co-authored-by: Etienne Poirier <33007955+epeartree@users.noreply.github.com>
Co-authored-by: peartree <etienne.poirier@smilecdr.com>
Co-authored-by: Nathan Doef <n.doef@protonmail.com>
Co-authored-by: TipzCM <leif.stawnyczy@gmail.com>
Co-authored-by: dotasek <david.otasek@smilecdr.com>
Co-authored-by: Jens Kristian Villadsen <jenskristianvilladsen@gmail.com>
Co-authored-by: Tadgh <garygrantgraham@gmail.com>
Co-authored-by: Michael Buckley <michaelabuckley@gmail.com>
Co-authored-by: Long Ma <long@smilecdr.com>
* Enhance RuleBuilder code to support multiple instances (#5852)
* Overhaul bulk export permissions.
* Overhaul bulk export permissions.
* Small tweak to rule builder.
* Cleanup validation.
* Cleanup validation.
* Code review feedback.
* Postgres terminology service hard coded column names migration (#5866)
* updating parent pids column name
* updating name of the fullTestField Search
* updating name of the fullTestField Search
* fixing typo.
* failing test.
* - Moving FullTextField annotation from getter method and adding it to the newly added VC property of the entity;
- reverting the name of the FullTextField entity to its previous name of 'myParentPids';
- reverting the name of the lucene index to search on in the terminology service.
- updating the changelog;
* making spotless happy
---------
Co-authored-by: peartree <etienne.poirier@smilecdr.com>
* 5879 back porting fix for issue 5877 (attempting to update a tokenparam with a value greater than 200 characters raises an sqlexception) to release rel_7_2 (#5881)
* initial failing test.
* solution
* adding changelog
* spotless
* moving changelog from 7_4_0 to 7_2_0 and deleting 7_4_0 folder.
---------
Co-authored-by: peartree <etienne.poirier@smilecdr.com>
* Expose BaseRequestPartitionHelperSvc validateAndNormalize methods (#5811)
* Expose BaseRequestPartitionHelperSvc validate and normalize methods
* Compilation errors
* change mock test to jpa test
* change mock test to jpa test
* validateAndNormalizePartitionIds
* validateAndNormalizePartitionNames
* validateAndNormalizePartitionIds validation + bug fix
* validateAndNormalizePartitionNames validation
* fix test
* version bump
* Ensure a non-numeric FHIR ID doesn't result in a NumberFormatException when processing survivorship rules (#5883)
* Add failing test as well as commented out potential solution.
* Fix for NumberFormatException.
* Add conditional test for survivorship rules.
* Spotless.
* Add changelog.
* Code review feedback.
* updating documentation (#5889)
* Ensure temp file ends with "." and then suffix. (#5894)
* bugfix to https://github.com/hapifhir/hapi-fhir-jpaserver-starter/issues/675 (#5892)
Co-authored-by: Jens Kristian Villadsen <jenskristianvilladsen@gmail.com>
* Enhance mdm interceptor (#5899)
* Add MDM Transaction Context for further downstream processing giving interceptors a better chance of figuring out what happened.
* Added javadoc
* Cahngelog
* spotless
---------
Co-authored-by: Jens Kristian Villadsen <jenskristianvilladsen@gmail.com>
* Fix BaseHapiFhirResourceDao $meta method to use HapiTransactionService instead of @Transaction (#5896)
* Try making ResourceTable.myTags EAGER instead of LAZY and see if it breaks anything.
* Try making ResourceTable.myTags EAGER instead of LAZY and see if it breaks anything.
* Ensure BaseHapiFhirResourceDao#metaGetOperation uses HapiTransactionService instead of @Transactional in order to resolve megascale $meta bug.
* Add changelog.
* Update hapi-fhir-docs/src/main/resources/ca/uhn/hapi/fhir/changelog/7_2_0/5898-ld-megascale-meta-operation-fails-hapi-0389.yaml
Commit code reviewer suggestion.
Co-authored-by: Tadgh <garygrantgraham@gmail.com>
---------
Co-authored-by: Tadgh <garygrantgraham@gmail.com>
* Fix query chained on sort bug where we over-filter results (#5903)
* Failing test.
* Ensure test cleanup doesn't fail by deleting Patients before Practitioners.
* Implement fix.
* Spotless.
* Clean up unit test and add changelog. Fix unit test.
* Fix changelog file.
* Apply suggestions from code review
Apply code review suggestions.
Co-authored-by: Michael Buckley <michaelabuckley@gmail.com>
* Spotless
---------
Co-authored-by: Michael Buckley <michaelabuckley@gmail.com>
* cve fix (#5906)
Co-authored-by: Long Ma <long@smilecdr.com>
* Fixing issues with postgres LOB migration. (#5895)
* Fixing issues with postgres LOB migration.
* addressing code review comments for audit/transaction logs.
* test and implementation for BinaryStorageEntity migration post code review.
* test and implementation for BinaryStorageEntity migration post code review.
* test and implementation for TermConcept
migration post code review.
* applying spotless
* test and implementation for TermConceptProperty
migration post code review.
* test and implementation for TermValueSetConcept
migration post code review.
* fixing migration version
* fixing migration task
* changelog
* fixing changelog
* Minor renames
* addressing comments and suggestions from second code review.
* passing tests
* fixing more tests
---------
Co-authored-by: peartree <etienne.poirier@smilecdr.com>
Co-authored-by: Tadgh <garygrantgraham@gmail.com>
* 6051 bulk export security errors (#5915)
* Enhance RuleBuilder code to support multiple instances (#5852)
* Overhaul bulk export permissions.
* Overhaul bulk export permissions.
* Small tweak to rule builder.
* Cleanup validation.
* Cleanup validation.
* Code review feedback.
* Postgres terminology service hard coded column names migration (#5866)
* updating parent pids column name
* updating name of the fullTestField Search
* updating name of the fullTestField Search
* fixing typo.
* failing test.
* - Moving FullTextField annotation from getter method and adding it to the newly added VC property of the entity;
- reverting the name of the FullTextField entity to its previous name of 'myParentPids';
- reverting the name of the lucene index to search on in the terminology service.
- updating the changelog;
* making spotless happy
---------
Co-authored-by: peartree <etienne.poirier@smilecdr.com>
* 5879 back porting fix for issue 5877 (attempting to update a tokenparam with a value greater than 200 characters raises an sqlexception) to release rel_7_2 (#5881)
* initial failing test.
* solution
* adding changelog
* spotless
* moving changelog from 7_4_0 to 7_2_0 and deleting 7_4_0 folder.
---------
Co-authored-by: peartree <etienne.poirier@smilecdr.com>
* Expose BaseRequestPartitionHelperSvc validateAndNormalize methods (#5811)
* Expose BaseRequestPartitionHelperSvc validate and normalize methods
* Compilation errors
* change mock test to jpa test
* change mock test to jpa test
* validateAndNormalizePartitionIds
* validateAndNormalizePartitionNames
* validateAndNormalizePartitionIds validation + bug fix
* validateAndNormalizePartitionNames validation
* fix test
* version bump
* Ensure a non-numeric FHIR ID doesn't result in a NumberFormatException when processing survivorship rules (#5883)
* Add failing test as well as commented out potential solution.
* Fix for NumberFormatException.
* Add conditional test for survivorship rules.
* Spotless.
* Add changelog.
* Code review feedback.
* updating documentation (#5889)
* Ensure temp file ends with "." and then suffix. (#5894)
* bugfix to https://github.com/hapifhir/hapi-fhir-jpaserver-starter/issues/675 (#5892)
Co-authored-by: Jens Kristian Villadsen <jenskristianvilladsen@gmail.com>
* Enhance mdm interceptor (#5899)
* Add MDM Transaction Context for further downstream processing giving interceptors a better chance of figuring out what happened.
* Added javadoc
* Cahngelog
* spotless
---------
Co-authored-by: Jens Kristian Villadsen <jenskristianvilladsen@gmail.com>
* Fix BaseHapiFhirResourceDao $meta method to use HapiTransactionService instead of @Transaction (#5896)
* Try making ResourceTable.myTags EAGER instead of LAZY and see if it breaks anything.
* Try making ResourceTable.myTags EAGER instead of LAZY and see if it breaks anything.
* Ensure BaseHapiFhirResourceDao#metaGetOperation uses HapiTransactionService instead of @Transactional in order to resolve megascale $meta bug.
* Add changelog.
* Update hapi-fhir-docs/src/main/resources/ca/uhn/hapi/fhir/changelog/7_2_0/5898-ld-megascale-meta-operation-fails-hapi-0389.yaml
Commit code reviewer suggestion.
Co-authored-by: Tadgh <garygrantgraham@gmail.com>
---------
Co-authored-by: Tadgh <garygrantgraham@gmail.com>
* Fix query chained on sort bug where we over-filter results (#5903)
* Failing test.
* Ensure test cleanup doesn't fail by deleting Patients before Practitioners.
* Implement fix.
* Spotless.
* Clean up unit test and add changelog. Fix unit test.
* Fix changelog file.
* Apply suggestions from code review
Apply code review suggestions.
Co-authored-by: Michael Buckley <michaelabuckley@gmail.com>
* Spotless
---------
Co-authored-by: Michael Buckley <michaelabuckley@gmail.com>
* cve fix (#5906)
Co-authored-by: Long Ma <long@smilecdr.com>
* Fixing issues with postgres LOB migration. (#5895)
* Fixing issues with postgres LOB migration.
* addressing code review comments for audit/transaction logs.
* test and implementation for BinaryStorageEntity migration post code review.
* test and implementation for BinaryStorageEntity migration post code review.
* test and implementation for TermConcept
migration post code review.
* applying spotless
* test and implementation for TermConceptProperty
migration post code review.
* test and implementation for TermValueSetConcept
migration post code review.
* fixing migration version
* fixing migration task
* changelog
* fixing changelog
* Minor renames
* addressing comments and suggestions from second code review.
* passing tests
* fixing more tests
---------
Co-authored-by: peartree <etienne.poirier@smilecdr.com>
Co-authored-by: Tadgh <garygrantgraham@gmail.com>
* refactor bulk export rule, add concept of appliestoallpatients, fix tests
* spotless
* Cahgnelog, tests
* more tests
* refactor style checks
---------
Co-authored-by: Luke deGruchy <luke.degruchy@smilecdr.com>
Co-authored-by: Etienne Poirier <33007955+epeartree@users.noreply.github.com>
Co-authored-by: peartree <etienne.poirier@smilecdr.com>
Co-authored-by: Nathan Doef <n.doef@protonmail.com>
Co-authored-by: TipzCM <leif.stawnyczy@gmail.com>
Co-authored-by: dotasek <david.otasek@smilecdr.com>
Co-authored-by: Jens Kristian Villadsen <jenskristianvilladsen@gmail.com>
Co-authored-by: Michael Buckley <michaelabuckley@gmail.com>
Co-authored-by: longma1 <32119004+longma1@users.noreply.github.com>
Co-authored-by: Long Ma <long@smilecdr.com>
* Convert a few nulls to aggressive denies
* Change chain sort syntax for MS SQL (#5917)
* Change sort type on chains
* Change sort type on chains
* Test for MS SQL
* Comments
---------
Co-authored-by: Luke deGruchy <luke.degruchy@smilecdr.com>
Co-authored-by: Etienne Poirier <33007955+epeartree@users.noreply.github.com>
Co-authored-by: peartree <etienne.poirier@smilecdr.com>
Co-authored-by: Nathan Doef <n.doef@protonmail.com>
Co-authored-by: TipzCM <leif.stawnyczy@gmail.com>
Co-authored-by: dotasek <david.otasek@smilecdr.com>
Co-authored-by: Jens Kristian Villadsen <jenskristianvilladsen@gmail.com>
Co-authored-by: Tadgh <garygrantgraham@gmail.com>
Co-authored-by: Michael Buckley <michaelabuckley@gmail.com>
Co-authored-by: Long Ma <long@smilecdr.com>
* Added content message delivery for SubscriptionWebsocketHandler
* 5687: Code clean up and small bug fix on empty payload
* 5687: Provided unit tests for the SubscriptionWebsocketHandler with subscription topic content: id-only, empty and full-resource
* 5687: Apply mvn spotless:apply
* 5687: Code formatting
* Credit for #5692
---------
Co-authored-by: artiom.darie <artiom.darie@adswizz.com>
Co-authored-by: Artiom Darie <5781864-artiom.darie@users.noreply.gitlab.com>
Co-authored-by: James Agnew <jamesagnew@gmail.com>
* Throw exception when resourceType of parameter value is invalid when performing FHIR search with non-chained reference
* Fix changelog issue id and spotless warning
* Cleanup unnecessary test
* Validate resourceType only when using relative reference
* Fix test for search using _type parameter
* Refactor and fix functionality dealing with ReadPartitionIdRequestDetails
* Spotless fixes
* Revert some of the refactoring changes to BaseRequestPartitionHelperSvc and fix tests
* Small cleanup
* Missing change
* Small changes
* Fix tests and add a few more
* Spotless fix
* Address code review comments
* Some polishing on the interface annotations and documentation
* Spotless fix
* Fix test
* Fix tests and test method rename
* Ensure SearchParameterMap is not null
---------
Co-authored-by: Martha Mitran <martha.mitran@smilecdr.com>
* pom bump to 7.0.0 (#5615)
* pom bump to 7.0.0
* add version enum
* fixed feb release name
---------
Co-authored-by: Long Ma <long@smilecdr.com>
* Check index existence on raw SQL creation (#5624)
* Add conditional check on index existence before we try again
* Add conditional check on index existence before we try again
* Changelog
* remit
* remit
* debug statements
* 5621 deadlock on caffeine cache when creating a resource with conditional create (#5622)
* Modifying the CacheProvider to avoid doing db I/O within the cache miss value supplier callback.
* Setting the initial capacity of instantiated caches to the cache max size to avoid resizing during operations.
* adding changelog and spotless.
* Fixing typo.
* Addressing comments from code review.
---------
Co-authored-by: peartree <etienne.poirier@smilecdr.com>
* Searching with more than one chained Bundle SearchParameter returns incorrect results (#5614)
* Failing test
* fix
* changelog
* Avoiding Exception being thrown on @EventListener invocation (#5628)
* replaced EventListener annotation with @PreDestroy
* adding changelog
---------
Co-authored-by: peartree <etienne.poirier@smilecdr.com>
* simple fix (#5630)
Co-authored-by: Long Ma <long@smilecdr.com>
* Incorrect version of auto versioned reference for conditional update with urn id placeholder (#5625)
* Incorrect version from versioned_references.auto_at_paths for conditional update - implementation
* Oracle: Ensure migrated database still takes large resource text updates (#5629)
* First pass at fix to Oracle HFJ_RES_VER.RES_TEXT_VC migration.
* First stab at agreed upon solution.
* Fix error with 4001 by removing unnecessary annotation.
* Spotless and TODO.
* Remove annotation for good and set length to LONG32.
* Fix copyright year.
* Finalize changelog.
* Remove migration changes. Fix unit test.
* Fix compile error.
* Log output.
* Refactor resource history code into new ResourceHistoryCalculator.
* Spotless.
* Convert record to POJO.
* Restore pre-17 switch statement.
* Finalize new resource history calculator code and tests.
* Spotless.
* Remove logging.
* Update hapi-fhir-docs/src/main/resources/ca/uhn/hapi/fhir/changelog/7_0_0/5633-oracle-hfj-res-ver-clob-migration.yaml
Apply code reviewer suggestion
Co-authored-by: Michael Buckley <michaelabuckley@gmail.com>
* Code review feedback.
---------
Co-authored-by: Michael Buckley <michaelabuckley@gmail.com>
* Fix expansion for `ValueSet` with no concepts based on CodeSystem `urn:ietf:bcp:13` (#5638)
* When fetching the mimetype code system, return empty CodeSystem with NOTSUPPORTED content. Update expansion logic to handle this case. Add some test cases.
* Minor change to fix test
* Rename changelog file
* Remove TODOs as they're replaced by reported issue
* Revert accidental change added with TODO removal
* $expunge operation ignoring ExpungeThreadCount setting in certain cases (#5637)
* $expunge operation ignoring ExpungeThreadCount setting in certain cases - implementation
* Fix Measure group id null pointer exception (#5620)
* Update to new version of clinical reasoning, includes a fix for null pointers on Measure group id
* add changelog
---------
Co-authored-by: Justin McKelvy <60718638+Capt-Mac@users.noreply.github.com>
* Rule evaluation: Allow Bundles with PATCH Parameters (#5641)
* Remove parameters clause.
* Finalize changelog. Add tests. Finalize implementation.
* Undo changes to this test.
* Revert all changes to FhirQueryRuleImplTest. Add new RuleImplOpTest. Ensure that proper nested Bundle is created for test and other fixes.
* Tweak test.
* Use real rule applier in test and remove all mocks.
* Prevent batch2 job execution to stop for empty chunk when last job st… (#5635)
* Prevent batch2 job execution to stop for empty chunk when last job step is a reduction.
Add output to bulk export result even when empty.
* Fix test
* Unimportant change to force fresh build
* Implement review suggestions
---------
Co-authored-by: juan.marchionatto <juan.marchionatto@smilecdr.com>
* Index review fixes (#5649)
* Don't hold locks while adding indices during upgrade.
* concurrent indexing is non-transactional in PG.
* Fix conditional creates without leading '?' (#5646)
* First commit with failing test.
* More tests and logs.
* More logs
* Try new solution for BaseTransactionProcessor.performIdSubstitutionsInMatchUrl().
* Simplify solution. Add more tests.
* Changelog.
* javadoc
* Searching for Bundles with read all Bundles permission returns 403 (#5644)
* failing test
* another failing test case
* fix
* changelog
* fix bug
* spotless
* cr
* Fix NullPointerException when performing a system bulk export in the presence of PatientIdPartitionInterceptor. (#5660)
* Serializing changes for sensitive data (#5655)
* Add new senstiive data serializer
* Add new senstiive data serializer
* Add new senstiive data serializer
* Remove dead comments
* Change up the test
* review comments
* wip
* Tighten tests and push annotation down
* Tighten tests and push annotation down
* Changelog
* Add test
* 7.0.1-SNAPSHOT bump
* Error code
* Add method used by CDR
* add version enum
* Fix test
* Rel 7 0 CVE (#5663)
* Bump json-path
* Pin parrson
* Bump elastic
* Bump spring version
* Exclude JDBC
* Descendent fix (#5669)
* Fix "is-a" ValueSet expansion, add "descendent-of" support
* Fixed tests in DSTU3 and R5
* Trigger new build
* Revert "Trigger new build"
This reverts commit 46c672b338.
* fix default partition setting on resource (#5617)
* fix default partition setting on resource
* changelog
* Handle DEFAULT partition in rule checker.
* Fix spotless
---------
Co-authored-by: Michael Buckley <michaelabuckley@gmail.com>
Co-authored-by: James Agnew <jamesagnew@gmail.com>
* pom bump, doc add, version enum add (#5616)
Co-authored-by: Long Ma <long@smilecdr.com>
* fix default partition setting on resource (#5618)
* fix default partition setting on resource
* Handle DEFAULT partition in rule checker.
Co-authored-by: Ken Stevens <khstevens@gmail.com>
* Add setting to make broker not use JacksonMessageConverter (#5611)
* Add setting to make broker not use JacksonMessageConverter
* Add changelog
* Implement suggestions
---------
Co-authored-by: juan.marchionatto <juan.marchionatto@smilecdr.com>
* Fix version
* add changelog, add attribution, remove accidental bring-overs
* add changelog, add attribution, remove accidental bring-overs
* Finish jira section
---------
Co-authored-by: Ole Hedegaard <ohe@trifork.com>
Co-authored-by: Ken Stevens <khstevens@gmail.com>
Co-authored-by: Michael Buckley <michaelabuckley@gmail.com>
Co-authored-by: James Agnew <jamesagnew@gmail.com>
Co-authored-by: longma1 <32119004+longma1@users.noreply.github.com>
Co-authored-by: Long Ma <long@smilecdr.com>
Co-authored-by: jmarchionatto <60409882+jmarchionatto@users.noreply.github.com>
Co-authored-by: juan.marchionatto <juan.marchionatto@smilecdr.com>
* fix conflict mistake
* removed test assert that is no longer true:
* version bumpb to 7.1.1
* fix version Enum test
---------
Co-authored-by: Long Ma <long@smilecdr.com>
Co-authored-by: Tadgh <garygrantgraham@gmail.com>
Co-authored-by: Etienne Poirier <33007955+epeartree@users.noreply.github.com>
Co-authored-by: peartree <etienne.poirier@smilecdr.com>
Co-authored-by: Nathan Doef <n.doef@protonmail.com>
Co-authored-by: volodymyr-korzh <132366313+volodymyr-korzh@users.noreply.github.com>
Co-authored-by: Luke deGruchy <luke.degruchy@smilecdr.com>
Co-authored-by: Michael Buckley <michaelabuckley@gmail.com>
Co-authored-by: Martha Mitran <martha.mitran@smilecdr.com>
Co-authored-by: JP <jonathan.i.percival@gmail.com>
Co-authored-by: Justin McKelvy <60718638+Capt-Mac@users.noreply.github.com>
Co-authored-by: jmarchionatto <60409882+jmarchionatto@users.noreply.github.com>
Co-authored-by: juan.marchionatto <juan.marchionatto@smilecdr.com>
Co-authored-by: Ole Hedegaard <ohe@trifork.com>
Co-authored-by: Ken Stevens <khstevens@gmail.com>
Co-authored-by: James Agnew <jamesagnew@gmail.com>
* Work on fixing postgres
* Test fix
* wip
* wip
* wip
* wip
* wip
* adding support for h2 embedded and renaming postgressIT
* Work on postgres
* Remove use of gzip content on postgres
* Cleanup
* Test fixes
* Spotless
* Restore fake db for DDL generator
---------
Co-authored-by: peartree <etienne.poirier@smilecdr.com>
* Fixes for validation lookupCode method:
(1) NullPointerException when processing designation in the remote terminology implementation
(2) Inconsistency between input and output type vs. for property parameter across the board
(3) Fix most of the warnings in the updated classes.
(4) Code review changes
* Fix unit test failure by reverting assertion to FOO_COLUMN.
* Revert commit.
* Update tests
* Update tests - move utility class back
* Update fix and tests
* spotless fix
* Missing branches for exception cases and add tests for the same
* Spotless fix
* fix tests
* fix test
* Address code review comments. Write the remote terminology tests in a way to make them more readable.
* Revert moving utility test class
* Small changes in tests
* Small changes
* fix checkstyle
* Minor changes in exception handling and add a missing test
* Address code review comments. Decouple other tests from lookupCode tests.
* Update declaration of constants
---------
Co-authored-by: Luke deGruchy <luke.degruchy@smilecdr.com>
* Make expunge service extensible
* Work
* Licence headers
* Version bump some dependencies
* Version bumps
* Adapt to new html unit version
* Reintroduce errorprone
* Test fix
* Header
* Work on jakarta
* Test fixes
* Restore errorprone
* More pom tweaks
* Apply spotless
* Errorprone tweak
* errorprone tweak
* Version bump
* License headers
* Version bump
* Postgres bump
* Servlet migrsation changes
* Apply spotless
* Work on migration
* Start working on JPA migration
* Test fixes
* Test fixes
* Test fixes
* Work
* Work on servlet migration
* Work on migration
* Work on fixes
* Imports fix
* Work on tests
* Test fix
* All tests passing
* Work on migration
* Schema generator
* Refactor ID strategy
* Some test fixes
* Test fixes
* API additions
* Work on websockets
* Test fixe
* Version bump
* Work on migration
* All tests have passed!
* Work on test fixes
* Fixes
* Work on fixes
* CDR fix
* Work on migration
* Fixes
* Spotless
* Disable onetoone ban
* Adjust migratyions
* Transaction service fix
* Add tinyint to migrator
* Work
* Migration
* Compile fix
* Add license
* Test fix
* Test fix
* Cleanup
* Cleanup attempt
* Test fix
* Reslve fixmes
* Remove legacy lastn implementation
* Test cleanup
* Cleanup
* Remove dead import
* Bad import setups
* Review comments
* Review fixes
* Build fix
* Test fix
* Spotless
* Account for CR changes
* Compile fixes
* Rollback one change
* Test tweak
* License header
* Test fix
* Test fix part 2:
* Clean up tx isolation
* Spotless
* Spotless apply
* Drop min SQL Server level
* Attempted test fix
* Test fix
* Test fix
* Test fix
* Bump hibernate
* Test fix
* Test fixes
* Test fixes
* Test fixes
* Test cleanup
* One more test fix
* Test fix
* Try to fix test
* Clean up expunge
* Test fix
* Remove unneeded task
* Spotless
* Bump compiler plugin
* Spotless
* Compile fix
* Add license headers
* License header
* Test fixes
* Bump animal sniffer
* Spotless
* Bump Jetty version
* Test fix and version bump
* Cleanup
---------
Co-authored-by: Tadgh <garygrantgraham@gmail.com>
* Pass properties through to Remote Terminology Service on CodeSystem operation
* Propagate list of property names throughout. Introduce a parameter object for the lookupCode method. Mark other lookupCode methods as deprecated. Add unit tests.
* Update remote terminology service tests
* Address code review comments
* Fix unit tests
* Address latest code review comments to update default methods
* Address latest code review comments to update default methods - update fallback condition
* Address latest code review comments to update default methods - update fallback condition
* Test fixes
* Build cleanup
* Initial test passing
* Test fixes
* Tests all seem to be working
* Make display validation level configurable
* Should be all working
* Add changelog
* Add to changelog
---------
Co-authored-by: Tadgh <garygrantgraham@gmail.com>
* Transaction with conditional delete and update on the same resource should not fail - test
* Transaction with conditional delete and update on the same resource should not fail - implementation
* Transaction with conditional delete and update on the same resource should not fail - added changelog
* Transaction with conditional delete and update on the same resource should not fail - fixes
* One more fix for #4467
* Enabling massIngestionMode causes incomplete resource deletion (#4476)
* Adding initial test.
* Adding fix and subsequent test.
* Adding changelog.
---------
Co-authored-by: peartree <etienne.poirier@smilecdr.com>
* Provide the capability to request that the name of the subscription matching channel be unqualified (#4464)
* Adding initial test.
* Adding initial solution implementation.
* Adding change log and code clean up.
* addressing comments from 1st code review.
---------
Co-authored-by: peartree <etienne.poirier@smilecdr.com>
* Change visibility of migration method (#4471)
* change migration visibility
* add empty migration method for 640
---------
Co-authored-by: nathaniel.doef <nathaniel.doef@smilecdr.com>
* Fix subscription validation not to validate partition ID when invoked from an update pointcut (#4484)
* First commit: Make SubscriptionValidatingInterceptor aware of which Pointcut is being called. In validatePermissions(), skip determinePartition() if the Pointcut is STORAGE_PRESTORAGE_RESOURCE_UPDATED. Fix resulting compile errors in various unit tests.
* Fix/enhance unit tests. Mark methods as deprecated instead of deleting them. Add proper error code. Complete changelog.
* Remove erroneous TODOs and tweak the validation logic.
* Enhance unit tests and fix changelog.
* Reindex batch job fails when processing deleted resources. (#4482)
* adding changelog.
* Providing solution and adding changelog.
* Adding new test.
---------
Co-authored-by: peartree <etienne.poirier@smilecdr.com>
* cleaning up checkstyle files (#4470)
* cleaning up checkstyle files
* One more fix for #4467 (#4469)
* added exlusions for files at base project level so checkstyle doesn't error out
* duplicate error code from merge
* changing lifecycle goal for all module checkstyle check
* moving checkstyle to base pom file, changing exectution phase on base check, cleaning dependency, resolving duplicate error code
* wip
* trying to figure out why pipeline cannot copy files
* removing modules that don't actually need to be built.
* I messed up the version
---------
Co-authored-by: James Agnew <jamesagnew@gmail.com>
* Bump core to 5.6.881 (#4496)
* Bump core to 5.6.881-SNAPSHOT
* Work on fixing tests
* Work on fixing tests 2
* Bump to core release
---------
Co-authored-by: dotasek <david.otasek@smilecdr.com>
* Issue 4486 mdm inconsistent possible match score values (#4487)
* Extract method for readability
* Save always normalized score values in POSSIBLE_MATCH links.
* Avoid setting properties to null values. Adjust test.
* Simplify fix
* Fix test. Add RangeTestHelper.
---------
Co-authored-by: juan.marchionatto <juan.marchionatto@smilecdr.com>
* Revert "cleaning up checkstyle files (#4470)"
This reverts commit efae3b5d5f.
* core version fix
* Loosen rules for id helper
* initial test implementation/changes and solution wiring.
* adding support for jpa/mongo abstraction.
* refact completed. need to start implementing scheduling of subscription re-submission with the scheduler service.
* post release, merging in master.
* wip: commit before merging in branch master.
* wip: resuming work on the issue.
* wip: before merging in master.
* wip: partial implementation of mongo support.
* wip: more work to support partial implementation on mongo.
* Test implementation
* providing method getMessageKeyOrDefault();
* providing changelog
* preping codereview.
* wip: passing tests
* wip: finally solving the Meta issue.
* wip: adjusting interfaces
* Adding IT and
* IT test;
fixing rollback issue.
* removing non required logging
* fixing merge conflict
* Preparing for code review.
* Preparing for code review.
* Compiling code after merging in master.
* Fixing checkstyle failure.
* Modifications towards getting all tests to pass.
* addressing comments from code review.
* compiling code after switching target merge branch to rel_pub_2023_05
* compiling code after switching target merge branch to rel_6_6
* Addressing comments made in design meeting. wip.
* Addressing comments made in design meeting. finally completed.
and last 2 comments addressed.
* removing non required override
* reverting changes as they are not required.
* Modified test and implementation.
* implementation of a SynchronousSubscriptionMatcherInterceptor to submit modifiedResources to the subscription pipeline for testing only.
* fix tests by modifying the matchingInterceptor to call pointcut when processing
* fixing more tests.
* WIP to pass all tests in jpaserer-4504-a-resource-submitted-to-the-subscription-pipeline-is-lost-when-the-pipeline-encounters-an-issue
* fixing circular dependency
* Adding import dependency to class TestSubscriptionSubmitterConfig to allow submission of messages with the SynchronousSubscriptionMatcherInterceptor.
* bumping version 6.7.7-SNAPSHOT
* bumping HAPI version to 6.7.7-SNAPSHOT
* fixing tests failure caused by asynch deliver of resourceModifiedMsg to the processing pipeline.
* passing all tests.
* unbumping to 6.7.7
* compiling after merging in master.
* creating a custom hapi version
* providing an synchronous subscription matcher interceptor for testing.
* updating pom version to generate artifacts.
* fixing tests, WIP/0
* fixing tests, WIP/1
* fixing tests, WIP/2
* Matching entity annotation with migration task declarations.
* Moving AsynchResourceModified Scheduler and Submitter to hapi-fhir-storage.
* Moving AsynchResourceModified Scheduler and Submitter to hapi-fhir-storage.
* Reverting move of AsyncResourceModified[ProcessingSchedulerSvc|SubmitterSvc].
* Reverting move of AsyncResourceModified[ProcessingSchedulerSvc|SubmitterSvc] again.
* Removing creation of new transaction to inflate PersistedRresourceModifiedMessages since it is already executing in a transaction.
* bumping to version 6.7.14-ASYNC-SNAPSHOT for pipeline.
* bumping hapi version to 6.7.14-ASYNC-SNAPSHOT for pipeline.
* Formatter changes.
* add generic
* add generic
* Addressing code review comments.
* Adding file asynch_subscription_610.md to docs/upgrades
* changing poms to 6.9.2-SNAPSHOT before merging in master.
* compiling after merging in master.
* Lowering logging level to debug.
* Bumping to 6.9.3-SNAPSHOT
* Bumping hapi version to 6.9.4-SNAPSHOT
* Adding update documentation.
* Modifying update file following review.
---------
Co-authored-by: James Agnew <jamesagnew@gmail.com>
Co-authored-by: peartree <etienne.poirier@smilecdr.com>
Co-authored-by: Nathan Doef <n.doef@protonmail.com>
Co-authored-by: nathaniel.doef <nathaniel.doef@smilecdr.com>
Co-authored-by: Luke deGruchy <luke.degruchy@smilecdr.com>
Co-authored-by: Mark Iantorno <markiantorno@gmail.com>
Co-authored-by: dotasek <dotasek.dev@gmail.com>
Co-authored-by: dotasek <david.otasek@smilecdr.com>
Co-authored-by: jmarchionatto <60409882+jmarchionatto@users.noreply.github.com>
Co-authored-by: juan.marchionatto <juan.marchionatto@smilecdr.com>
Co-authored-by: Tadgh <garygrantgraham@gmail.com>
Co-authored-by: Ken Stevens <ken@smilecdr.com>
* FQL tests
* Working so far
* Tests working
* Tests passing
* Work on parser
* Tests passing
* Cleanup
* Working
* Work on parser
* Work
* Working
* Work on tests
* Work on driver
* Work
* Ongoing work
* Rename SEARCH to WHERE
* Work on fhirpath
* Test fixes
* Work on statements
* Build fixes
* Spotless application
* Fix CI
* Build fixes
* Clean up changelogs
* Remove redundant gitignore
* Add docs
* Add docs
* Code cleanup
* Build cleanup
* Fix compile error
* Test fixes
* Test fix
* Test fix
* Work on integration
* Work on design
* Work on UI
* Update hapi-fhir-jpaserver-hfql/src/main/java/ca/uhn/fhir/jpa/fql/jdbc/JdbcDriver.java
Co-authored-by: michaelabuckley <michaelabuckley@gmail.com>
* Address review comments
* Review comments
* HFQL work
* Cleanup
* CLeanup
* License headers
* Test fixes
* HAPI version bump
* License header update
* Changelog cleanup
* Fixes
* Test fix
* Fix spotless issues
---------
Co-authored-by: michaelabuckley <michaelabuckley@gmail.com>
* initial test
* Adding changelog
* Updated to remove the discarding of search params starting with an underscore
* test commit
* Updated handling of search parameters with underscores
* Revert work in progress
* Updated storage settings with new property for inline tag storage mode
* Updated storage settings to tell when inline tag storage mode is set
* simplified test failure
* Added tests for _tag and _system
* Add PreviousVersion service with tests (#4902)
* started writing PreviousVersionReader
* started writing PreviousVersionReader
* moar tests
* add partitioning to the test
* switch subscription to use previous version reader
---------
Co-authored-by: Ken Stevens <ken@smilecdr.com>
* Updated logic to be less confusing
* Bumping version to 6.7.4
* Reverted hapi bump, added improve logic for handling missing search params
* updates
* Updated failing tests
* remove redundant tests
* more updates
* Adding Jira number.
---------
Co-authored-by: peartree <etienne.poirier@smilecdr.com>
Co-authored-by: David Raeside <davidraeside@smilecdr.com>
Co-authored-by: volodymyr <volodymyr.korzh@smilecdr.com>
Co-authored-by: David Raeside <david.raeside@smilecdr.com>
Co-authored-by: Ken Stevens <khstevens@gmail.com>
Co-authored-by: Ken Stevens <ken@smilecdr.com>
* WIP
* add canonicalizer for R4 topic subscriptions
* test R4 topic subscription registration
* Add support for R4 Subscription Topic Backport
* FIXME
* add filter matching support
* add simpler signature
* add resource type matching to filter
* review feedback
* fixed
* changelog
* test both ways
* add bundle test
* change how toplevel is detected since in some contexts the parent state can be a non-null pre-resource state
* added logs
* changelog
* fix v2 issues
* Clean up WIP comments
* Switch to in-memory event numbers (instead of always 1)
* Final WIP cleanup
* Msg.code
* review feedback
* review feedback
* review feedback
* review feedback
* back out import changes
* back out import changes
---------
Co-authored-by: Ken Stevens <ken@smilecdr.com>
* review feedback
* fixed
* changelog
* test both ways
* add bundle test
* change how toplevel is detected since in some contexts the parent state can be a non-null pre-resource state
* fix v2 issues
---------
Co-authored-by: Ken Stevens <ken@smilecdr.com>
* started writing PreviousVersionReader
* started writing PreviousVersionReader
* moar tests
* add partitioning to the test
* switch subscription to use previous version reader
---------
Co-authored-by: Ken Stevens <ken@smilecdr.com>
* enforce no exceptions on the invoking thread in PointCutLatch
* comment
* Msg.code
* Catch exceptions outside of await block
* fix migration issue
* Refactor PointcutLatch and add tests
* fix tests
* fix tests
* fix tests
* fix test
* fix test
* fix test
* fix test
* fix test
* fix test
* fix test
* fix test
* fix test
* fix test
* fix test!
* fix test!
* fix test
* fix test
* clean up latch error formatting
* fix test
* fix test
* fix test
* fix test
* fix test
* fix tests
* fix test
* fix test
* Remove hapi-fhir-jpaserver-uhnfhirtest from build as it is crashing CI
* fix test
* fix intermittent
* A SNAPSHOT dependency on an upstream module was added to HAPI FHIR, which changed and caused some downstream tests to break.
* fix intermittent
* Add Maven enforcer plugin for CR dependencies
* Make maven enforcer conditional on CI builds
* Remove hapi-fhir-jpaserver-uhnfhirtest from build as it is crashing CI
* improve test logging
* pre-review cleanup
* review feedback
* remove hapi-fhir-base-test-jaxrsserver-kotlin from the build
---------
Co-authored-by: Ken Stevens <ken@smilecdr.com>
Co-authored-by: Jonathan Percival <jonathan.i.percival@gmail.com>