いつも記事をいろいろと参考にさせていただいております!

本記事の内容において、RESTのデバッグを実行してみたところ
ブレイクポイントでは止まっているように見えるのですが、ソースがコンパイルされたルーチンに
切り替わり先頭のところから動かない状態となっております。
(ステップオーバーやステップインをしてもクラスファイル上のソースで動かない)

設定等でなにか不足なものや確認するべき点はありますでしょうか?

環境
 OS:Windows 11
 IRIS:IRIS for Windows (x86-64) 2023.1.5 (Build 697U) Thu Oct 3 2024 13:47:51 EDT [Health:5.1.0-4.m2023.1.5]
 VSCode:バージョン: 1.101.2 (system setup)
 Extension類:InterSystems ObjectScript - 3.0.4

 

@Toshihiko Minamoto 

minamotoさん

早々のご対応ありがとうございます。
OutputToDevice / OutputToStream において、想定している通りの
JSONが出力できることが確認できました。

OutputToDynamicObject においては処理内で$char(0)を付加している影響か
Nul制御文字が付与されてしまっているようです。

{"intData":-123.4567,"decimal":"\u0000-123.457","decimalDataList":["\u0000-123","\u0000-123.457"],"numData":["\u0000-123.46","\u0000-123.457",-123.4567],"floatData":[-123.4567,"\u0000-123.457"],"doubleData":[-123.4567,"\u0000-123.457"]}

Minamoto さん

早々のご確認・ご対応ありがとうございました。
SCALEにより、小数部が指定された桁数になることは確認できました。

ただ、やはり今回についてはダブルクォーテションが付与されてしまうことが
問題となっております。
FHIRの要素型上、Decimalで定義されているものになってしまうので
ダブルクォーテーションがついてしまうと、バリデータ側でのエラーにかかってしまいます。

やはり、%DynamicObject を使用している限りこちらの問題は難しいという認識でよろしいでしょうか?

FHIRリソースを生成するにあたり、JSONTemplateを活用させていただいております!

このJSONTemplateを利用している中で、1点困っていることがあります。
Decimal型(DoubleやFloatでも)において、小数部が0になるときにおいて
本来であれば
 "decimalVal" : 180.0
のように出力してほしいところ
 "decimalVal" : 180
と、小数部が省略されて出力されてしまいます。
IRISにおいては、数値をキャノニック形式で表示しているためこのような現象が起きえているのかと
想定しています。

ただ、今回のJSONTemplateを利用した形式ではなく、%JSON.Adapter を継承したクラスにおいて
%JSONExportToString を実行すると意図した値で出力できるため何かしらの解決策はあるのではないかと
おもっておりますが、現状行き詰っている状態です。