Specifications need to explicitly address the changes to EHR control objects property values, such as EHR_STATUS.is_modifiable.
In ehr_im.pdf file, page 28, last paragraph, it says "...In a normal implementation, the EHR Status and EHR Access objects would normally be created and committed in a Contribution, just as any Composition would be."
EHR_STATUS.is_modifiable: "True if the EHR is allowed to be written to". In another word, if EHR_STATUS.is_modifiable is false, this EHR doesn't allow contributions committed. It also implicitly implies that once EHR_STATUS.is_modifable is set to false, this value cannot be reset back to true through contribution. This is a problem since EHR_STATUS.is_modifiable should be set to either true or false when it is required.
(Associated email messages can be found in comments.)
Chunlan Ma wrote:
We currently cannot modify an EhrStatus.IsModifiable value back to true once this value is false.
This is because as a general principle, if EhrStatus.IsModifiable is false, all contributions to this EHR are not allowed. Modifying EhrStatus is done through contribution. Consequently, we can change EhrStatus.IsModifiable from true to false, but cannot do the opposite direction.
I guess this is a reasonable requirement to set EhrStatus.IsModifiable from false to true, but it violates the general principle specified above.
The EHR as a whole can always be added to, otherwise the control objects (EHR_STATUS, EHR_ACCESS and EHR) can't be modified. But the specs proabbly don't say this clearly. Can you please raise an issue on SPECPR on openEHR.org?
This problem doesn't appear to have much practical impact. The correct approach here is probably to document the semantics better, to indicate that the EHR_STATUS object is special in that it can always be written to.