837 (Single Claim)
Modify NM108 in loop2010BA to have the value “ZZ” in split claim
atFieldModify(<builtin:document/primary|builtin:key/data/segments|builtin:array|builtin:key/2000B|builtin:array|builtin:key/2010BA|builtin:array|builtin:key/NM108/value>,\"ZZ\")
Get CLM01 from inside loop 2300 which can show up in 3 different places
Notice
The readFieldremains the same while the first argument to atFieldRead is what changes.
getElemAt(flatten(atFieldRead(<builtin:document/primary|builtin:key/data/segments|builtin:array_filter_by_key/2000B|builtin:key/2000B>,
readField(<builtin:array_filter_by_key/2300|builtin:key/2300|builtin:array_filter_by_key/CLM01|builtin:key/CLM01/value>))),0)getElemAt(flatten(atFieldRead(<builtin:document/primary|builtin:key/data/segments|builtin:array_filter_by_key/2000C|builtin:key/2000C>,
readField(<builtin:array_filter_by_key/2300|builtin:key/2300|builtin:array_filter_by_key/CLM01|builtin:key/CLM01/value>))),0)getElemAt(flatten(atFieldRead(<builtin:document/primary|builtin:key/data/segments|builtin:array_filter_by_key/2000B|builtin:key/2000B|builtin:array_filter_by_key/2000C|builtin:key/2000C>,
readField(<builtin:array_filter_by_key/2300|builtin:key/2300|builtin:array_filter_by_key/CLM01|builtin:key/CLM01/value>))),0)Get HCP01 from inside loop 2300 which can show up in 3 different places
getElemAt(flatten(atFieldRead(<builtin:document/primary|builtin:key/data/segments|builtin:array_filter_by_key/2000B|builtin:key/2000B>,
readField(<builtin:array_filter_by_key/2300|builtin:key/2300|builtin:array_filter_by_key/HCP01|builtin:key/HCP01/value>))),0)Modify HCP13 based on value of HCP01
Note
A trickier approach as above will need to be used if Loop 2300 can show up in multiple places.
atFieldModify(<builtin:document/primary|builtin:key/data/segments|builtin:array|builtin:key/2000B|builtin:array|builtin:key/2300|builtin:array>, let hcp01 = readField(<builtin:key/HCP01/value>) in let hcp13 = readField(<builtin:key/HCP13/value>) in atFieldModify(<builtin:key/HCP13/value>, if (eqString(hcp01, \"00\"), \"T1\", hcp13)))
Get Network Claim ID in loop 2300 REF F8
Note
A trickier approach as above will need to be used if Loop 2300 can show up in multiple places.
readField(<builtin:document/primary|builtin:key/data/segments|builtin:array_filter_by_key/2000B|builtin:key/2000B|builtin:array_filter_by_key/2300|builtin:key/2300|builtin:array_filter_by_key_value/REF01/value=F8|builtin:key/REF02/value>)
Set MacroHealth Claim ID in loop 2300 REF F8
Note
A trickier approach as above will need to be used if Loop 2300 can show up in multiple places.
atFieldModify(<builtin:key/context>, let x = readField(<builtin:key/mhClaimId/data/mhClaimId>) in atFieldModify(<builtin:key/primary/data/segments|builtin:array_filter_by_key/2000B|builtin:key/2000B|builtin:array_filter_by_key/2300|builtin:key/2300|builtin:array_filter_by_key_value/REF01/value=F8|builtin:key/REF02/value>, x))
Sprinkling (approximation - confirm before use)
atFieldModify(<builtin:document/primary|builtin:key/data/segments|builtin:array_filter_by_key/2000B|builtin:key/2000B|builtin:array_filter_by_key/2300|builtin:key/2300>, let loop2300HcpSegment = getElemAt(readField(<builtin:array_filter_by_key/HCP01>), 0) in let coveragePercent = divide(getElemAt(readField(<builtin:array_filter_by_key/HCP02|builtin:key/HCP02/value>), 0), getElemAt(readField(<builtin:array_filter_by_key/CLM02|builtin:key/CLM02/value>), 0)) in atFieldModify(<builtin:array_filter_by_key/2400|builtin:key/2400>, if(eqString(getElemAt(readField(<builtin:array_filter_by_key/HCP02|builtin:key/HCP02/value>), 0), null), insertIntoLoop(getContext(), let newHcp02 = multiply(getElemAt(readField(<builtin:array_filter_by_key/SV203|builtin:key/SV203/value>), 0), coveragePercent) in upsertJsonKey(upsertJsonKey(upsertJsonKey(loop2300HcpSegment, "HCP02", newHcp02), "HCP03", subtract(getElemAt(readField(<builtin:array_filter_by_key/SV203|builtin:key/SV203/value>), 0), newHcp02)), "position", 24920)), getContext())))