Missing values cause the IF statement processing to abort

The following code is used to create a lifestyle plan from an electronic medical record; values such as HbA1c are incorporated into the IF statement and used within the run command so that they can be changed later.
If there is a missing value for HbA1c, the entire IF statement stops, and I want to check if HbA1c or other values are missing and continue the process, but it does not work.

{formtoggle: name=Hypertension; default=no}{endformtoggle}
{formtoggle: name=Dyslipidemia; default=yes}{endformtoggle}
{formtoggle: name=Diabetes; default=yes}{endformtoggle}

// These values are originally extracted from the medical record
{BMI=25}BMI: {=BMI}
{sbp=145}SBP: {=sbp}
{ldl=165}LDL: {=ldl}
{hba1c=6}HbA1c: {=hba1c}%
HbA1c: "{=hba1c}"

{run:
Not yet achieved=no
Mostly achieved=no
Fully achieved=no

if (Hypertension=yes and sbp > 160) or (Diabetes=yes and (BMI > 30 or hba1c > 8)) or (Dyslipidemia=yes and (BMI > 30 or ldl > 160))
Not yet achieved=yes
Mostly achieved=no
Fully achieved=no
elseif (Hypertension=yes and (sbp <= 159 and sbp > 135)) or (Diabetes=yes and (BMI > 26 or hba1c >7)) or (Dyslipidemia=yes and (BMI > 26 or ldl > 120))
Not yet achieved=no
Mostly achieved=yes
Fully achieved=no
else
Not yet achieved=no
Mostly achieved=no
Fully achieved=yes
endif
}
{formtoggle: name=Not yet achieved}{Mostly achieved=no}{Fully achieved=no}{endformtoggle}
{formtoggle: name=Mostly achieved}{Not yet achieved=no}{Fully achieved=no}{endformtoggle}
{formtoggle: name=Fully achieved}{Not yet achieved=no}{Mostly achieved=no}{endformtoggle}

Hi @N_Saito

Maybe you can initialize your variables to some initial default values before extracting them from the report, for example:

{hba1c=0}
// then extract hba1c from the medical report

If that doesn't help, can you please share with me the full context on how do you extract the values from the medical report?

@Abdalla_Mahmoud
Thank you for your help.
I am using Text Blaze to create patient care plans and have the chart content read by
{chart={site: text; selector=.css-8u2jis; page=https://karte.medley.life/*; select=ifneeded}} H

HbA1c test values, etc. are read from the medical record at

{hba1c_all=extractregex({=chart}, "HbA1c NGSP.*%")}{hba1c=extractregex({=hba1c_all},"\d+. \d+“); trim=yes}{target_hba1c_value_num=extractregex(target_hba1c_value,”\d+. \d+")}HbA1c: {=hba1c} %{if: hba1c > target_hba1c_value_num} high value! {endif} {endif} We only extract if it is described as

.
We want to use it in a semi-definite statement if it is mentioned, and we want to change it later, so we want to use it in the {run} syntax. We want the IF statement to work only when there is a value.

It is not very desirable to define HbA1c = 0 at the beginning.

{note: preview=no}{run: 高血圧= testregex(chart,"(#|#|♯)\s高血圧|HT|若年性高血圧")
脂質異常症=testregex(chart,"(#|#|♯)\s
(高コレステロール血症|脂質異常|脂質代謝異常|高トリグリセライド血症|高TG血症|家族性高コレステロール血症|高脂血症)")
糖尿病=testregex(chart,"(#|#|♯)\s*(糖尿病|1型糖尿病|2型糖尿病|境界型糖尿病|DM|Diabetes)")
冠動脈疾患=testregex(chart,"(#|#|♯)\s*(冠動脈疾患|狭心症|心筋梗塞|冠攣縮性狭心症|冠動脈狭窄|(不安定)?\s狭心症|(陳旧性)?\s心筋梗塞|冠動脈硬化)")
脳血管疾患=testregex(chart, "(#|#|♯)\s*(脳血管疾患|脳梗塞|一過性脳虚血発作|脳卒中|陳旧性脳梗塞|脳梗塞後遺症)")
慢性腎臓病=testregex(chart, "(#|#|♯)\s*(慢性腎臓病|CKD|慢性腎不全|腎機能低下|糖尿病性腎症|慢性腎障害)")
喫煙= testregex(chart,"(#|#|♯)\s喫煙|タバコ|禁煙できない")
運動習慣がある= testregex(chart, "運動{0,10}している|ジム.{0,10}いっている|歩くようにしている|散歩|通勤で自転車|ジョギング|筋トレ|なるべく歩く|水泳")
食生活に気をつけている= testregex(chart, "食べすぎないようにしている|食事.{0,10}気をつけている")
家庭血圧を測定している= testregex(chart, "家庭血圧.{0,10}mmHg|家庭血圧.{0,10}測定している|自宅での血圧|家庭血圧.{0,10}くらい")
飲酒= testregex(chart,"(#|#|♯)\s
飲酒|お酒|アルコール")
height=extractregex(chart, "身長\D{0,8}([0-9]{1,5}(?:\.[0-9]{1,2})?)", "i")
weight=extractregex(chart, "体重\D{0,8}([0-9]{1,5}(?:\.[0-9]{1,2})?)", "i")}{run: まだまだ達成できてない=no
概ね達成できている=no
完全に達成できている=no
if (高血圧=yes and (sbp > 180 or dbp > 110 or BMI > 30)) or (糖尿病=yes and BMI > 30) or (脂質異常症=yes and BMI > 30 )
まだまだ達成できてない=yes
概ね達成できている=no
完全に達成できている=no
elseif (高血圧=yes and (sbp <= 179 and sbp >= 135)) or (糖尿病=yes and BMI > 26) or (脂質異常症=yes and BMI > 26)
まだまだ達成できてない=no
概ね達成できている=yes
完全に達成できている=no
else
まだまだ達成できてない=no
概ね達成できている=no
完全に達成できている=yes
endif
}{endnote}{note}{chart={site: text; selector=.css-8u2jis; page=https://karte.medley.life/; select=ifneeded}}(別紙様式9) {site: text; page=https://karte.medley.life/; select=ifneeded; selector=.header-logo-name}{endnote}
生活習慣病 療養計画書 継続用 {note}お渡し日:{time: YYYY-MM-DD}

{site: text; page=https://karte.medley.life/; select=ifneeded; selector=.names-name} {site: text; page=https://karte.medley.life/; select=ifneeded; selector=.names-age_sex}
主病:{formtoggle: name=高血圧}{食塩・調味料を控える=yes}{endformtoggle}{formtoggle: name=脂質異常症}{油を使った料理(揚げ物や炒め物等)の摂取を減らす=yes}{endformtoggle}{formtoggle: name=糖尿病}{食事時間: 朝食、昼食、夕食を規則正しくとる=yes}{endformtoggle}{if: 高血圧=yes and 脂質異常症=yes and 糖尿病=yes} {main_d="高血圧, 脂質異常症, 糖尿病"}{elseif: 高血圧=yes and 脂質異常症=yes and 糖尿病=no} {main_d="高血圧, 脂質異常症"}{elseif: 高血圧=yes and 脂質異常症=no and 糖尿病=yes} {main_d="高血圧, 糖尿病"}{elseif: 高血圧=yes and 脂質異常症=no and 糖尿病=no} {main_d="高血圧"}{elseif: 高血圧=no and 脂質異常症=yes and 糖尿病=yes} {main_d="脂質異常症, 糖尿病"}{elseif: 高血圧=no and 脂質異常症=yes and 糖尿病=no} {main_d="脂質異常症"}{elseif: 高血圧=no and 脂質異常症=no and 糖尿病=yes} {main_d="糖尿病"}{else} {main_d=""}{endif} 合併疾患:{formtoggle: name=冠動脈疾患}{target_ldl_value=70}{endformtoggle}{formtoggle: name=脳血管疾患}{target_ldl_value=70}{endformtoggle}{formtoggle: name=慢性腎臓病}{endformtoggle}{age=extractregex({site: text; selector=.names-age_sex; page=https://karte.medley.life/; select=ifneeded},"(\d{1,3})歳")} {if: age < 75 or 糖尿病 == yes or 慢性腎臓病 == yes or 冠動脈疾患 == yes or 脳血管疾患 == yes} {homebp_target_sbp=125}{homebp_target_dbp=75}{officebp_target_sbp=130}{officebp_target_dbp=80}{else}{homebp_target_sbp=130}{homebp_target_dbp=80}{officebp_target_sbp=135}{officebp_target_dbp=85}{endif}
【現状】身長: {formtext: name=height; default=; cols=5}㎝、体重: {formtext: name=weight; default=; cols=5}kg{if: height > 0 and weight > 0}BMI: {=weight / (height/100)^2; format=,.1f}{else}{endif} {if: BMI >= 40; trim=right}肥満(4度){others_bw="高度肥満、"}{目標体重=yes}{elseif: BMI>=35; trim=right}肥満(3度){others_bw="高度肥満、"}{目標体重=yes}{elseif: BMI>=30; trim=right}肥満(2度){others_bw="肥満、"}{目標体重=yes}{elseif: BMI>=25; trim=right}肥満(1度){others_bw="肥満あり、"}{目標体重=yes}{elseif: BMI>=18.5; trim=right}標準体重{others_bw="体重は標準、"}{elseif: BMI<18.5; trim=right}やせ{others_bw="やせ気味、"}{else}{others_bw=""}{endif} {bp_measure=testregex({=chart}, "[mM][mM][hH][gG]")}{if: bp_measure}{p=extractregex({=chart},"\d\d+/\d\d+")}{pressure=splitregex({=p}, "/") }{sbp=pressure[1]}{dbp=pressure[2]}{ps=splitregex({=extractregex({=chart},"\d\d+/\d\d+")}, "/") } 血圧(診察室): {formtext: name=sbp; cols=3; default=}/{formtext: name=dbp; cols=3; default=}mmHg{else}血圧(診察室): {formtext: name=sbp; cols=3; default=}/{formtext: name=dbp; cols=3; default=}mmHg{endif}{if: sbp- officebp_target_sbp>10 or dbp-officebp_target_dbp>10} 高値{others_bp="クリニックで測定した血圧高めです"}{else}{others_bp="血圧は正常"}{endif}
{bmi=weight/height/height
10000}{ideal_weight_22=heightheight22/10000}{ideal_weight_25=heightheight25/10000}【生活習慣】{formtoggle: name=喫煙; default=no}{endformtoggle}{formtoggle: name=飲酒; default=no}{endformtoggle}{formtoggle: name=運動習慣がある; default=no}{endformtoggle}{formtoggle: name=食生活に気を付けている; default=no}{endformtoggle}{formtoggle: name=家庭血圧を測定している; default=no}{endformtoggle}
運動強度:{formtoggle: name=軽い労作(大部分が座位); default=no}{cal=25}{普通の労作(通勤・家事、軽い運動)=no}{重い労作(力仕事、活発な運動)=no}{endformtoggle}{formtoggle: name=普通の労作(通勤・家事、軽い運動); default=yes}{cal=30}{軽い労作(大部分が座位)=no}{重い労作(力仕事、活発な運動)=no}{endformtoggle}{formtoggle: name=重い労作(力仕事、活発な運動); default=no}{cal=35}{普通の労作(通勤・家事、軽い運動)=no}{軽い労作(大部分が座位)=no}{endformtoggle}

ねらい:検査結果を理解できること・自分の生活上の問題点を抽出し、目標を設定できること

目標 【目標】 {formtoggle: name=目標体重; default=no}{endformtoggle}: {=ideal_weight_22; format=,.1f}kg(BMI 22)~{=ideal_weight_25; format=,.1f}kg (BMI25) {目標血圧=no}{if: 高血圧= yes or 糖尿病=yes}{目標血圧=yes}{endif}{formtoggle: name=目標血圧; default=}{endformtoggle}: 診察室: {=officebp_target_sbp}/{=officebp_target_dbp} mmHg 家庭: {=homebp_target_sbp}/{=homebp_target_dbp} mmHg {目標HbA1c=no}{if: 糖尿病=yes}{目標HbA1c=yes}{endif}{formtoggle: name=目標HbA1c; default=}{endformtoggle}: {formmenu: 6.0%; default=7.0%; 8.0%; name=target_hba1c_value} {目標LDL=no}{if: 脂質異常症= yes}{目標LDL=yes}{endif}{formtoggle: name=目標LDL; default=}{endformtoggle}:{formtext: name=target_ldl_value; default=120; cols=5}未満 {目標TG(中性脂肪)=no}{if: 脂質異常症=yes}{目標TG(中性脂肪)=yes}{endif}{formtoggle: name=目標TG(中性脂肪); default=no}{endformtoggle}:{formtext: name=target_ldl_value; default=150; cols=5}未満
主病:{=main_d}
【①目標の達成状況】:{formtoggle: name=まだまだ達成できてない; default=no}{概ね達成できている=no}{完全に達成できている=no}{endformtoggle}{formtoggle: name=概ね達成できている; default=no}{まだまだ達成できてない=no}{完全に達成できている=no}{endformtoggle}{formtoggle: name=完全に達成できている; default=no}{まだまだ達成できてない=no}{概ね達成できている=no}{endformtoggle}
{if: 高血圧 == yes}{target_bp_text="、目標血圧(家庭) " & {=homebp_target_sbp} & "/" & {=homebp_target_dbp} & " mmHgを達成する"}{else}{target_bp_text=""}{endif}{if: 糖尿病 == yes}{食事摂取量を適正にする=yes}{target_hba1c_text="、HbA1cを" & {=target_hba1c_value} & "%未満"}{else}{target_hba1c_text=""}{endif}{if: 脂質異常症 == yes}{target_ldl_text="、LDLコレステロールを" & {=target_ldl_value} & " mg/dL未満にする"}{else}{target_ldl_text=""}{endif}{if: BMI >= 25}{食事摂取量を適正にする=yes}{適切なエネルギー量=yes}{weight_goal_text="、体重目標を" & {=ideal_weight_22; format=,.1f} & "kg (BMI 22)にする"}{else}{weight_goal_text=""}{endif}{if: 喫煙 == yes}{smoking_goal_text="、禁煙"}{else}{smoking_goal_text=""}{endif}{if: 飲酒 == yes}{alcohol_goal_text="、適切な飲酒量 (アルコール換算20g)"}{else}{alcohol_goal_text=""}{endif}{if: 運動習慣がある == no}{exercise_goal_text="、日常生活での運動"}{else}{exercise_goal_text=""}{endif}{if: 食生活に気を付けている == no}{diet_goal_text="、食生活に気をつける"}{else}{diet_goal_text=""}{endif}{goal_text=""}{goal_text={=main_d} & "改善のため目標を達成する" &{=goal_text} & {=target_bp_text} & {=target_hba1c_text} & {=target_ldl_text} & {=weight_goal_text} & {=smoking_goal_text} & {=alcohol_goal_text} & {=exercise_goal_text} & {=diet_goal_text}}{if: goal_text == ""}{goal_text="目標を設定する"}{endif}【②達成目標】:患者と相談した目標{formparagraph: name=goal_text; cols=100; rows=2}{if: 運動習慣がある == no}{exercise_action_goal="適切な運動を行う"}{else}{exercise_action_goal=""}{endif}{if: 食生活に気を付けている == no}{diet_action_goal="、食生活の改善を行う"}{else}{diet_action_goal=""}{endif}{if: 喫煙 == yes}{smoking_action_goal="、禁煙する"}{else}{smoking_action_goal=""}{endif}{if: 飲酒 == yes}{alcohol_action_goal="、適切な摂取量を守る"}{else}{alcohol_action_goal=""}{endif}{if: 高血圧 == yes and 家庭血圧を測定している == no}{home_bp_action_goal="、家庭血圧を測りましょう"}{else}{home_bp_action_goal=""}{endif}{action_goal_text=""}{action_goal_text={=main_d} & "改善のため適切な運動、食生活を行う" & {=exercise_action_goal} & {=diet_action_goal} & {=smoking_action_goal} & {=alcohol_action_goal} & {=home_bp_action_goal}}{if: action_goal_text == ""}{action_goal_text="規則正しい生活習慣を維持する"}{endif}
【③行動目標】:患者と相談した目標{formparagraph: name=action_goal_text; cols=100; rows=2}
重点を置く領域と指導項目 {formtoggle: name=【食事】; default=yes}{endformtoggle}
{formtoggle: name=食事摂取量を適正にする; default=no}{endformtoggle}{formtoggle: name=食塩・調味料を控える; default=no}{endformtoggle}{formtoggle: name=野菜・きのこ・海藻など食物繊維の摂取を増やす; default=no}{endformtoggle} {formtoggle: name=外食の際の注意事項; default=no}{endformtoggle}{formtext: name=restaurant; cols=30; default=塩分・脂分の多い食事を避ける}{formtoggle: name=油を使った料理(揚げ物や炒め物等)の摂取を減らす; default=no} {formtoggle: name=間食:〔減らす〕; default=no}{endformtoggle}{formtoggle: name=食べ方:(ゆっくり食べる・その他); default=no}{endformtoggle}{formtoggle: name=食事時間: 朝食、昼食、夕食を規則正しくとる; default=no}{endformtoggle}{formtoggle: name=適切なエネルギー量; default=no}{endformtoggle}: {={=cal}{=ideal_weight_22; format=,.0f}}~{={=cal}{=ideal_weight_25; format=,.0f}} kcal/日{formtoggle: name=その他食事指導; default=no}{endformtoggle}{formtext: name=others; cols=40}
{formtoggle: name=【運動】; default=yes}{endformtoggle}
{formtoggle: name=運動処方; default=yes}{formmenu: default=散歩; ジョギング; 自転車; ジム; 水泳; cols=40; multiple=yes}{formmenu: default=20-30分; 1時間以上; name=時間}{formmenu: default=週3回; 毎日; その他; name=頻度; cols=20}{formmenu: default=息が弾む程度; 会話が可能な強さ; ある程度きつく; きつく; name=強度; cols=20}
{formtoggle: name=日常生活の活動量増加; default=yes}{endformtoggle}
{formtext: name=other_ex; default=1日6000~1万歩、あるいは30分~1時間歩く; cols=100} {formtoggle: name=運動時の注意事項など; default=yes}{endformtoggle}
{formtext: name=ex_caution_detail; default=暑い時期は脱水に注意、胸部症状、不整脈等あれば受診; cols=100}
{【嗜好品】=no}{if: 喫煙=yes or 飲酒=yes}{【嗜好品】=yes}{endif}{formtoggle: name=【嗜好品】; default=}{endformtoggle}{formtoggle: name=喫煙; default=no}{endformtoggle}{if: 喫煙=yes}禁煙は必須です、禁煙外来について説明{endif}{formtoggle: name=飲酒; default=no}{endformtoggle}{if: 飲酒=yes}適量(アルコール換算20g: ビール1本/日本酒1合/ワイン2杯、週2回は休肝日を){endif}
【その他】{歯科定期受診の推奨=no}{if: 糖尿病=yes}{歯科定期受診の推奨=yes}{endif}{formtoggle: name=歯科定期受診の推奨; default=no}{endformtoggle}{眼科定期受診の推奨=no}{if: 糖尿病=yes}{眼科定期受診の推奨=yes}{endif}{formtoggle: name=眼科定期受診の推奨; default=no}{endformtoggle} {formtoggle: name=仕事; default=no}{endformtoggle}{formtoggle: name=余暇; default=no}{endformtoggle}{formtoggle: name=睡眠; default=no}{endformtoggle}{if: bmi>=25}{減量=yes}{endif}{formtoggle: name=減量; default=no}{endformtoggle}{formparagraph: name=その他指導; cols=100; rows=2; default=不明点は気軽に相談ください。定期的に通院。}
検査 【血液検査項目】{if: {=testregex({=chart}, "LDLコレステロール.\d+\sMG/DL") }}{ldl_all=extractregex({=chart},"LDLコレステロール(.) ")}{ldl=extractregex({=ldl_all},"\d+"); trim=yes}LDL(悪玉): {=ldl} mg/dl{if: ldl > target_ldl_value} 高値!!{endif} {endif}{if: {=testregex({=chart}, "HDLコレステロール(.) ") }}{hdl_all=extractregex({=chart},"HDLコレステロール.\d+\sMG/DL")}{hdl=extractregex({=hdl_all},"\d+"); trim=yes}HDL(善玉): {=hdl} mg/dl {endif}{if: {=testregex({=chart}, "中性脂肪.\d+\sMG/DL") }}{tg_all=extractregex({=chart},"中性脂肪(.) MG/DL")}{tg=extractregex({=tg_all},"\d+"); trim=yes}中性脂肪: {=tg} mg/dl{if: tg > 149} 高値!!{endif} {endif}{if: {=testregex({=chart}, "HbA1c NGSP(.)%") }}{hba1c_all=extractregex({=chart},"HbA1c NGSP.*%")}{hba1c=extractregex({=hba1c_all},"\d+.\d+"); trim=yes}{target_hba1c_value_num=extractregex(target_hba1c_value, "\d+.\d+")}HbA1c: {=hba1c} %{if: hba1c > target_hba1c_value_num} 高値!!{endif} {endif}
※当院では血液検査結果を別紙でお渡ししています
【その他】{formtext: cols=90; name=others}{others=""}{others={=others_bw} & {=others_bp} }{if: others == ""}{others="その他は異常なし"}{endif}

※実施項目は、□にチェック、( )内には具体的に記入{endnote}
※記載項目をもとに{=main_d}対してに生活指導{note}を行いました

記入日:{time: YYYY-MM-DD} 患者署名:{site: text; page=https://karte.medley.life/; select=ifneeded; selector=.names-name}/_____________________ 医師氏名: {site: text; selector=[data-testid="header-staff_dropdown"]; page=https://karte.medley.life/; select=ifneeded}
{formtoggle: default=yes}{endformtoggle}療養計画書の内容について説明を受けた上で十分に理解したことを確認した。(なお、上記項目に担当医がチェックした場合については患者署名を省略して差し支えない)※療養計画書はスキャン後に院内で保管{endnote}