* [6463] use version in canonical url of StructureDefinition to identify it
* Add credit for #6534
---------
Co-authored-by: James Agnew <jamesagnew@gmail.com>
* removing bootstrap 4 dep in favour of bootstrap 5
* accordions
* fixing some tabs
* radios
* some tweaks
* adding changelog
* updated version
* tweaks
* updating the webtest webclient for better es script support
* disabling tests in hapi
* unwrapping from transaction boundary
* bumping version
* config issue
---------
Co-authored-by: leif stawnyczy <leifstawnyczy@leifs-mbp.home>
* Tests passing
* Cleanup
* Cleanupo
* Test fixes
* Test fix
* Cleanup
* Update hapi-fhir-validation/src/main/java/org/hl7/fhir/common/hapi/validation/support/ValidationSupportChain.java
Co-authored-by: Ken Stevens <khstevens@gmail.com>
* Update hapi-fhir-validation/src/main/java/org/hl7/fhir/common/hapi/validation/support/ValidationSupportChain.java
Co-authored-by: Ken Stevens <khstevens@gmail.com>
* Update hapi-fhir-validation/src/main/java/org/hl7/fhir/common/hapi/validation/support/ValidationSupportChain.java
Co-authored-by: Ken Stevens <khstevens@gmail.com>
* Account for review comments
* Spotless
* Compile fix
* Test fixes
* Test cleanup
* Test cleanup
* Test fixes
* Resolve fixme
* Test fix
* Test fixes
* Test fixes
* Test fixes
* Fix
* Test fix
* Test fixes
* Test fixes
* HAPI version bump
* Try to address intermittent
---------
Co-authored-by: Ken Stevens <khstevens@gmail.com>
* 6323 resource creation deadlock (#6324)
* make map reads concurrent
* change log
* CUstom version number for guaranteed build determinism
* licenses
* Expand translation cache (#6341)
* Expand translation cache
* Add changelog
* Correction to #6341 (#6342)
* Contained bug (#6402)
* Contained bug
* more tests
* changelog, tests, implementation
* code review
* backwards logic
* Fix Questionnaire doc (#6400)
* fix reindex optimizeStorage=ALL_VERSIONS (#6421)
* fixing broken rename of last step of reindex (#6429)
* Fixes for the translation of parameter issues as part of the output for $validate-code operation. (#6438)
* Move the validation providers to the test utilities package such that they can be reused.
* Update IValidationSupport.CodeValidationIssue structure such that it meets the FHIR specification. Update RemoteTerminologyServiceValidationSupport and VersionSpecificWorkerContextWrapper translation for issues.
* New tests for issue translation. Move test class to a different package so that we can add another test class.
* Some simplification in the issue API to simplify building of issues.
* Fix compilation errors.
* Update providers to allow multiple responses and add support for the fetchCodeSystem call through method find.
* Setup the first test for resource validation with remote terminology providers.
* Fix NullPointerException
* avoid calling validateCode for CodeSystem where system is null
* Keep old public API methods (and class name) in IValidationSupport and mark them as deprecated to avoid breaking dependencies.
* Revert local change to debug for duplicate errors.
* Add more test cases for resource validation. Throw exception to signal missing test setup to make it obvious.
* Simplify test setup.
* Add some more javadoc
* Add javadoc for the new test class
* Add more tests
* Address code review comments in IValidationSupport.
* Add changelog
* Change Repository search interface from Map to Multimap (#6445)
Change Map to Multimap to support multiple and clauses.
* licenses
* fix interceptor hooks from requestDetails not getting called for STORAGE_PRECHECK_FOR_CACHED_SEARCH (#6436)
* fix interceptor hooks from requestDetails not getting called for STORAGE_PRECHECK_FOR_CACHED_SEARCH
* added unit tests and updated changelog
* added one more test case
* Add Adapter api (#6450)
Lightweight implementation of the adapter pattern.
* Bulk Import job status not changed after activation - failing test, fix, changelog (#6452)
* Update CR to 3.13.1 (#6433)
* Automated Migration Testing (HAPI-FHIR) - updated test migration scripts for 7_4_0 (#6439)
* Rel 7 6 CVE (#6446)
* Bump commons io
* Bump HS and Lucene, and hibernate
* Jetty bump for CVE
* Resolve CVES
* Bump with mismatch lucene
* Bump velocity template engine
* Revert bom bump
* wip
* Version bump
* move changelog, fix cve
* Bump commons-lang
* Replace imports
* wip
* fix HQL break
* remove dead code
* Fix changelog entry
* Bump org.hl7.fhir.core to 6.4.0 (#6454)
* Bump HAPI version + org.hl7.fhir.core to 6.4.0
* Apply spotless
* Correct a bug with duplicate parser IDs being assigned. (#6456)
* Fix changelog entry
* wip
* compilation problem
* Correct tests
* changelog
* Update hapi-fhir-structures-r4/src/test/java/ca/uhn/fhir/parser/JsonParserR4Test.java
Co-authored-by: volodymyr-korzh <132366313+volodymyr-korzh@users.noreply.github.com>
* Correct a bug with duplicate parser IDs being assigned - test fixes
* Correct a bug with duplicate parser IDs being assigned - spotless
* Correct a bug with duplicate parser IDs being assigned - added test-utilities dependency to fhir-structures poms
* Correct a bug with duplicate parser IDs being assigned - test fixes
* Contained resources without assigned IDs are now assigned GUIDs - address comments
---------
Co-authored-by: volodymyr-korzh <132366313+volodymyr-korzh@users.noreply.github.com>
Co-authored-by: volodymyr <volodymyr.korzh@smilecdr.com>
* licenses
* ValueSet expansion fails if Hibernate Search configured to use Lucene - fixed incompatibility between Hibernate Search and Lucene versions (#6468)
* Change the migrator to avoid table locks when adding an index. (#6489)
* version bump
* Updating version to: 7.6.1 post release.
* Bump to 7.7.7.
* deadsapce
* Profile reference param (#6501)
* updated QueryStack to not throw error with _profile as a ReferenceParam
* update QueryStack
* remove warnings
* cleanup cast
* cleanup test
* add changelog
* cleanup imports
* updates per review feedback
* updates per review feedback
---------
Co-authored-by: taha.attari@smilecdr.com <taha.attari@smilecdr.com>
* move changelog
---------
Co-authored-by: JasonRoberts-smile <85363818+JasonRoberts-smile@users.noreply.github.com>
Co-authored-by: James Agnew <jamesagnew@gmail.com>
Co-authored-by: Brenin Rhodes <brenin@alphora.com>
Co-authored-by: Emre Dincturk <74370953+mrdnctrk@users.noreply.github.com>
Co-authored-by: TipzCM <leif.stawnyczy@gmail.com>
Co-authored-by: Martha Mitran <martha.mitran@smiledigitalhealth.com>
Co-authored-by: Michael Buckley <michaelabuckley@gmail.com>
Co-authored-by: volodymyr-korzh <132366313+volodymyr-korzh@users.noreply.github.com>
Co-authored-by: dotasek <david.otasek@smilecdr.com>
Co-authored-by: volodymyr <volodymyr.korzh@smilecdr.com>
Co-authored-by: markiantorno <markiantorno@gmail.com>
Co-authored-by: Gary Graham <garygraham@smiledigitalhealth.com>
Co-authored-by: Taha <TahaAttari@users.noreply.github.com>
Co-authored-by: taha.attari@smilecdr.com <taha.attari@smilecdr.com>
* Optimize transaction writes
* Cleanup
* Work on tests
* Work on fixes
* Fixes
* Fixes
* Test fixes
* Cleanup
* Cleanup
* Work on tests
* Work on tests
* Test fixes
* Test fixes
* Remove redundant test
* Test fixes
* Test fix
* Test fixes
* Test fixes
* Test fixes
* Add changelog
* Checkstyle fixes
* Test fixes
* Spotless
* Test cleanup
* Spotless
* Test fix
* Work on review comments
* Address review comments
* Test fixes
* Ongoing test cleanup work
* Work on tests
* Query count tests passing
* Test fixes
* Test fixes
* Rmove fixme
* Test cleanup
* Test fix
* Remove default method
* Service celanup
* Test fix
* version bump
* Test cleanup
* Add tinder to parent project's pluginManagement
* Use specific version to avoid inheriting projects to replace by theirs
* Move dialects down to executing project because appendFile included in postgres dialect precludes to define it at the parent level
* Improve logging
* Use temporary project version
* Revert "Use temporary project version"
This reverts commit 24f5e648ed.
* Increment version
* Increment missed version
* Added headers
* Document new command
---------
Co-authored-by: juan.marchionatto <juan.marchionatto@smilecdr.com>
* Add missing implementations + update changed classnames
* Fix breaking test due to new validation rules
* Add changes.yaml
* Bump to HAPI version 7.7.1-SNAPSHOT
* Copyright autogen
***NO_CI***
* Bump to HAPI 7.7.2-SNAPSHOT
* Move the validation providers to the test utilities package such that they can be reused.
* Update IValidationSupport.CodeValidationIssue structure such that it meets the FHIR specification. Update RemoteTerminologyServiceValidationSupport and VersionSpecificWorkerContextWrapper translation for issues.
* New tests for issue translation. Move test class to a different package so that we can add another test class.
* Some simplification in the issue API to simplify building of issues.
* Fix compilation errors.
* Update providers to allow multiple responses and add support for the fetchCodeSystem call through method find.
* Setup the first test for resource validation with remote terminology providers.
* Fix NullPointerException
* avoid calling validateCode for CodeSystem where system is null
* Keep old public API methods (and class name) in IValidationSupport and mark them as deprecated to avoid breaking dependencies.
* Revert local change to debug for duplicate errors.
* Add more test cases for resource validation. Throw exception to signal missing test setup to make it obvious.
* Simplify test setup.
* Add some more javadoc
* Add javadoc for the new test class
* Add more tests
* Address code review comments in IValidationSupport.
* Add changelog
* Add support for response parameter issues for validate-code operation. Implement workaround for missing error for invalid codes by adding an issue when it is absent.
* address minor code review comments
* revert functionality of adding original code from remote validate-code call to the CodeValidationResult
* revert change to FhirInstanceValidatorR4Test
* Revert some of the code review addressal after responding.
* Remove populating message in success scenarios.
* Fix compilation failure in test after reverting method rename.
* Revert change to populate the code from the response again as it implies more refactoring.
---------
Co-authored-by: nathaniel.doef <nathaniel.doef@smilecdr.com>
* Improving performance, using caching when testing for primitives (#6252)
Caching primitive type names for faster lookup if a type is primitive.
* Credit for #6253
---------
Co-authored-by: James Agnew <jamesagnew@gmail.com>
* fail test
* potential fix
* spotless
* alternative fix
* spotless
* remove the new method and replace usage for the old one
* spotless
* fix issue with context failing deserialization
* add validation for context, hook and hook instance
* spotless
* add message codes
* spotless
* changelog
* cleanup
* spotless
* bump version to 7.5.1-SNAPSHOT
* 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>
* fixing fhir-test-cases dependency
* accidental added characters to the file
* bumping base pom version
* Disabling test case due to errors in xml files extracted from org.hl7.fhir.testcases.fhir-test-cases.1.5.15
---------
Co-authored-by: peartree <etienne.poirier@smilecdr.com>
* version bump clinical reasoning
* specifying required patch type
* bumping to 7.3.11-SNAPSHOT
* fix file name
* remove default fhirPatch until bug fixed
* Use server name as narrative text in CapabilityStatement
* Credit for #6060
* Fix spotless
---------
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>
* Work on versioned canonidal refs
* Merge
* Tests working
* Working without version support
* CLean refactor
* Targets
* Remove redundant parameter
* Fix up tests
* Remove fixme
* Add changelog
* Improve changelog
* Update version
* Test fixes
* 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>
* Fix authorization handling for Bundle resources in the output. When the Bundle is standalone, authorization should not be checked for resources included in the Bundle.
* Add some more tests to cover more use cases.
* Add more tests. Exclude collection type as it can be returned by a custom operation and it is not a standalone type.
* Address code review comment. Remove unused method.
* Add support for returning subproperties in the RemoteTerminologyService
* Add clarifying comments to code. Simplify logic to filter properties.
* Update sub-property iteration logic in the conversion code to make it more readable
* Fix spotless errors
* Add a few more test cases to test property filtering for the lookup
* 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>