Don't know if you're still looking for an answer but there are a few errors. Entity Health returns a value from 0-1, so you want to subtract 0.5 not 50. The way your "Under half health" check is accidentally is backwards, so it gives regen when above half and exits under. I used the formula:
abs( (health - .5) * -1) + (health - .5) * -1)
to set value range from -.5 to .5, and clamp lower bound to 0 (basically, if number is negative, make it 0). Then you can feed that into Trick: Die to exit while health is above half.
This is my version, which im sure can be refined further.
{modsRequired:[{modName:"psi",modVersion:"2.0.0"}],spellList:[{data:{constantValue:"0.5",key:"psi:constant_number"},x:3,y:0},{data:{key:"psi:operator_subtract",params:{number1:2,number2:1,number3:0}},x:3,y:1},{data:{key:"psi:operator_entity_health",params:{target:2}},x:3,y:2},{data:{key:"psi:selector_caster"},x:3,y:3},{data:{key:"psi:connector",params:{target:1}},x:3,y:4},{data:{constantValue:"-1",key:"psi:constant_number"},x:4,y:0},{data:{key:"psi:operator_multiply",params:{number1:3,number2:1,number3:0}},x:4,y:1},{data:{key:"psi:operator_absolute",params:{target:1}},x:4,y:2},{data:{constantValue:"2",key:"psi:constant_number"},x:4,y:3},{data:{key:"psi:trick_regeneration",params:{power:1,target:3,time:4}},x:4,y:4},{data:{key:"psi:connector",params:{target:3}},x:5,y:1},{data:{key:"psi:operator_sum",params:{number1:3,number2:1,number3:0}},x:5,y:2},{data:{key:"psi:trick_die",params:{_target:1}},x:5,y:3},{data:{constantValue:"5",key:"psi:constant_number"},x:5,y:4}],spellName:"restore",uuidLeast:-6046423472713233001L,uuidMost:4162735087678082634L,validSpell:1b}