As Initializer has evolved, various domains have emerged that have overlapping responsibilities. For example, the metadatasharing, ocl and concepts domains are all commonly used to load Concepts into a system, and some implementations choose to make use of more than one of these at at time. Similarly, the location and locationtagmaps domain both take responsibilities over assigning location tags to locations.
In these scenarios, unexpected results can arise when an upstream domain has new changes but a downstream domain does not. As an example, a distribution may bring in most of it's Concepts via ocl or metadatasharing, but also allows for some concepts to be managed via the concepts domain (eg. diagnosis lists, drug lists, etc). In the typical way this is set up, the ocl or metadatasharing domain is expected to be installed first, and then the concepts domain is expected to be installed second, and this knowledge may be leveraged in order for the concepts domain to make some country-specific tweaks to a shared, global concept package (eg. some custom mappings, or custom name translations).
However, in this scenario, if an update is later made to the ocl or metadatasharing domain but not in the concepts domain, then the upstream concept definitions will be applied to the server, and the downstream customizations will not re-run, leaving metadata in an unexpected and likely problematic state.
It would be helpful if Initializer could provide a solution to this problem. This could potentially be something in the runtime configuration, where an implementation could define a list of domains that should reload if a given domain changes. For example:
initializer.domain.metadatasharing.dependencies=concepts,conceptsets
initializer.domain.ocl.dependencies=concepts,conceptsets
The result is that any time the metadatasharing or ocl domains change, Initializer will also force an update (eg. delete existing checksums) of the specified domains in the list, even if there are no changes to the files in those domains.
@mogoodrich / @mks-d / @ibacher / @Ruhanga interested in feedback.
As Initializer has evolved, various domains have emerged that have overlapping responsibilities. For example, the
metadatasharing,oclandconceptsdomains are all commonly used to load Concepts into a system, and some implementations choose to make use of more than one of these at at time. Similarly, thelocationandlocationtagmapsdomain both take responsibilities over assigning location tags to locations.In these scenarios, unexpected results can arise when an
upstreamdomain has new changes but adownstreamdomain does not. As an example, a distribution may bring in most of it's Concepts viaoclormetadatasharing, but also allows for some concepts to be managed via theconceptsdomain (eg. diagnosis lists, drug lists, etc). In the typical way this is set up, theoclormetadatasharingdomain is expected to be installed first, and then theconceptsdomain is expected to be installed second, and this knowledge may be leveraged in order for the concepts domain to make some country-specific tweaks to a shared, global concept package (eg. some custom mappings, or custom name translations).However, in this scenario, if an update is later made to the
oclormetadatasharingdomain but not in theconceptsdomain, then the upstream concept definitions will be applied to the server, and the downstream customizations will not re-run, leaving metadata in an unexpected and likely problematic state.It would be helpful if Initializer could provide a solution to this problem. This could potentially be something in the runtime configuration, where an implementation could define a list of domains that should reload if a given domain changes. For example:
The result is that any time the
metadatasharingorocldomains change, Initializer will also force an update (eg. delete existing checksums) of the specified domains in the list, even if there are no changes to the files in those domains.@mogoodrich / @mks-d / @ibacher / @Ruhanga interested in feedback.