* begin with failing test
* wpi merge operation provider
* wip code resolve references and some refactoring
* respect status code set in providers
* more validation and code to update resources after refs are updated
* added source-delete parameter and some validation tests on result-patient
* update test
* update test
* return target patient as output parameter, do not add replacedby link to target if src is to be deleted
* output definition
* ignore identifiers in ref, more unit tests, return target in preview mode
* output definition
* return input parameters in the merge operation output
* copy identifiers from source to target (no duplicate check)
* add shared identifier
* add shared identifier
* moar asserts
* moar asserts
* fixing result patient
* fixing result patient
* fixing result patient
* add duplicate check when copying source identifiers to target
* copy result-patient before passing it to service
* add preview to test
* update preview asserts
* move IReplaceReferencesSvc to storage-package, and call replaceReference in patient merge
* moar tests
* cleanup
* add task test
* add replace references test
* kebab-case replace references
* add sync -> async switch
* test
* test
* start migrating to stream
* validate result-patient does not have link to source if delete-source is true
* add update count to msg in preview mode
* spotless
* change page size -> batch size and create new default max in storage settings
* spotless
* switched to patch transaction
* switched to patch transaction
* switched to patch transaction
* switched to patch transaction
* strip version from returned task
* spotless
* spotless
* async replace references test passes
* align tests
* test small batch size
* do src and target updates in trx, add validation src is not already replaced
* start building batch 2
improve dao
* start building batch 2
improve dao
* start building batch 2
improve dao
* move test setup out to helper
* move replace references tests out
* switch helper to use dao
* incresed unit test coverage
* build out batch
* build out batch
* update test to add link to result-patient only if the source is not to be deleted
* batch passes test
* batch passes test
* batch passes test
* made patient-merge return the Task returned from replace references
* batch passes test
* batch passes test
* consolidate async and sync supporting methods into a single storage service
* consolidate async and sync supporting methods into a single storage service
* add merge batch job
* add merge batch job
* added FIXMES for ED
* added FIXMES for ED
* update test to not validate task in preview mode
* mark identfier copied from source to target as old
* copyright headers
* runMaintenancePass before checking merge task status, and renamed test method for merge
* fix test
* fix test
* default
* invoke async merge job in merge service
* starting work on new docs
* starting work on new docs
* document $replace-references
* separate default from max
* fixme
* moar fixme
* moar fixme
* ken last fixme
* return 202 status on async merge, update MergeBatchTest to do more validations
* async success message, inject mergeservice, add async merge unit tests
* make validatePatchResultBundle static again
* added test for adding reference while merge in progress, and merge error handler
* fixed
* fixed
* added error handler to replace references job
* review
* javadoc
* organize imports
* make ValidationResult immutable
* make ValidationResult immutable
* rename ReplaceReferencesRequest
* rename ReplaceReferencesRequest
* rename MergeResourceHelper
* rename MergeResourceHelper
* javadoc
* split merge validation service out from merge service
* split merge validation service out from merge service
* split merge validation service out from merge service
* review feedback
* review feedback
* rename param constants
* rename param constants
* remove IdentifierUtil for visibility
* remove IdentifierUtil for visibility
* final review of hapi side
* review feedback
* review feedback
* fix checkstyle errors, rename MergeOperationInputParameters and add Msg.code
* fix replace reference parameter type, and some copyright headers
* review feedback
* review feedback
* review feedback
* review feedback
* review feedback
* review feedback
* review feedback
* review feedback
* move $merge into JPA R4
* move $merge into JPA R4
* still need to return 412
* still need to return 412
* return 412
* moar tests
* moar tests
* fix async batch size
* fix async batch size
* fix async batch size
* exception code
* exception code
* fix bean wiring
* fix bean wiring
* fix test
* fix test
* fix test
* fix test
* fix test
* bump pom versions
---------
Co-authored-by: Ken Stevens <ken@smiledigitalhealth.com>