This problem affects the following products:
- HealthShare Unified Care Record: all versions up to and including 2021.1
Consumer languages of JSON that use IEEE 754 standard double precision floats for holding numeric values while parsing (such as JavaScript) are incapable of processing values larger than 2^53-1 (9007199254740991) and may encounter overflow or underflow errors when encountering such a data stream.
As a result, Zen applications in the HealthShare 2021.1 and earlier releases may improperly represent numeric values greater than 9007199254740991 or lower than -9007199254740991.
In subsequent versions of HealthShare, the Zen jsonProvider engine automatically converts such large integers to string representations rather than raw numeric values in the JSON serialization. This enables applications that use such data to separately parse the value as appropriate for the language in question.
For example, in JavaScript, a numeric string whose value exceeds Number.MAX_SAFE_VALUE in magnitude can be parsed into an instance of BigInt rather than integer for processing within the JavaScript VM. This change has no bearing on the behavior of %DynamicAbstractObject's native %ToJSON() method, where the projection data type of scalars may be explicitly set using %DynamicObject.%Set().
This has been corrected as of version 2021.2.
Customers on HealthShare 2021.1 and earlier releases can r
equest an ad hoc patch from the Worldwide Response Center (WRC) and refer DP-13783.