日本語で投稿してくださってありがとうございます!
とてもシンプルにFHIRアプリケーションのイメージが理解できます。
- コメントを投稿するにはログインしてください
日本語で投稿してくださってありがとうございます!
とてもシンプルにFHIRアプリケーションのイメージが理解できます。
@Akio Hashimoto
橋本さん、貴重な情報ありがとうございます。
クラス定義の場合は発生しませんが、ルーチンの場合に現象が起きるようです。
KURAUCHIさん、こんにちは。
私の知る限り既存のものはありませんので、簡単に自作してみました。
方針としては、UNICODEでカナ→ローマ字のコードに規則性はありませんので、面倒ですがテーブルを作成して変換するしかないと思います。
サンプルでは、促音や拗音にできる限り対処したつもりですが、抜けがあるかもしれません。
もし、このメソッドをSample.Utilsクラスに保存したとすれば、次のように実行できます。
ClassMethod cvtKanaToRomaji(inStr As %String) As %String
{
// カナテーブル
Set kanaTbl = $lb("ア", "イ", "ウ", "エ", "オ", "カ", "キ", "ク", "ケ", "コ", "サ", "シ", "ス", "セ", "ソ")
Set kanaTbl = kanaTbl_$lb("タ", "チ", "ツ", "テ", "ト", "ナ", "ニ", "ヌ", "ネ", "ノ", "ハ", "ヒ", "フ", "ヘ", "ホ")
Set kanaTbl = kanaTbl_$lb("マ", "ミ", "ム", "メ", "モ", "ヤ", "ユ", "ヨ", "ラ", "リ", "ル", "レ", "ロ", "ワ", "ヲ", "ン")
Set kanaTbl = kanaTbl_$lb("ガ", "ギ", "グ", "ゲ", "ゴ", "ザ", "ジ", "ズ", "ゼ", "ゾ", "ダ", "ヂ", "ヅ", "デ", "ド")
Set kanaTbl = kanaTbl_$lb("バ", "ビ", "ブ", "ベ", "ボ", "パ", "ピ", "プ", "ペ", "ポ", "ー")
// ローマ字テーブル
Set romajiTbl = $lb("a", "i", "u", "e", "o", "ka", "ki", "ku", "ke", "ko", "sa", "shi", "su", "se", "so")
Set romajiTbl = romajiTbl_$lb("ta", "chi", "tsu", "te", "to", "na", "ni", "nu", "ne", "no", "ha", "hi", "fu", "he", "ho")
Set romajiTbl = romajiTbl_$lb("ma", "mi", "mu", "me", "mo", "ya", "yu", "yo", "ra", "ri", "ru", "re", "ro", "wa", "wo", "n")
Set romajiTbl = romajiTbl_$lb("ga", "gi", "gu", "ge", "go", "za", "ji", "zu", "ze", "zo", "da", "di", "du", "de", "do")
Set romajiTbl = romajiTbl_$lb("ba", "bi", "bu", "be", "bo", "pa", "pi", "pu", "pe", "po", "h")
// 拗音用カナテーブル
Set kanaTbl = kanaTbl_$lb("キャ", "キュ", "キョ", "シャ", "シュ", "ショ", "チャ", "チュ", "チョ")
Set kanaTbl = kanaTbl_$lb("ニャ", "ニュ", "ニョ", "ヒャ", "ヒュ", "ヒョ", "ミャ", "ミュ", "ミョ", "リャ", "リュ", "リョ")
Set kanaTbl = kanaTbl_$lb("ギャ", "ギュ", "ギョ", "ジャ", "ジュ", "ジョ", "ヂャ", "ヂュ", "ヂョ", "ビャ", "ビュ", "ビョ", "ピャ", "ピュ", "ピョ")
// 拗音用ローマ字テーブル
Set romajiTbl = romajiTbl_$lb("kya", "kyu", "kyo", "sha", "shu", "sho", "cha", "chu", "cho")
Set romajiTbl = romajiTbl_$lb("nya", "nyu", "nyo", "hya", "hyu", "hyo", "mya", "myu", "myo", "rya", "ryu", "ryo")
Set romajiTbl = romajiTbl_$lb("gya", "gyu", "gyo", "ja", "ju", "jo", "dya", "dyu", "dyo", "bya", "byu", "byo", "pya", "pyu", "pyo")
Set outStr = ""
Set sokuonFlag = 0
For i = 1:1:$l(inStr) {
Set ch = $e(inStr, i)
// 促音
if ch = "ッ" {
Set sokuonFlag = 1
Continue
}
// 次に拗音がくれば、くっつける
Set nxtch = $e(inStr, i + 1)
if (nxtch = "ャ") || (nxtch = "ュ") || (nxtch = "ョ") {
Set ch = ch_nxtch
Set i = i + 1
}
// カナテーブルにある文字であれば、対応するローマ字を出力
Set idx = $lf(kanaTbl, ch)
if idx > 0 {
Set och = $li(romajiTbl, idx)
// 促音の次であれば子音を重ねる
if (sokuonFlag = 1) && ($l(och) > 1) {
Set och = $e(och, 1)_och
}
} Else {
Set och = ch
}
Set outStr = outStr_och
Set sokuonFlag = 0
}
Quit outStr
}ご参考になれば幸いです。
鳥飼先生、
貴重なご投稿ありがとうございます。これからDockerに取り組もうとしているコミュニティの方々に大変役に立つ記事だと思います。
さて、すでにご存知かもしれませんが、1点念のためにお伝えした方が良いと思い、返信します。
docker環境でのシステムデータベースや設定ファイルは、コンテナの内部に作成されますので、docker rm コマンドでコンテナを削除すれば、コンテナstartから更新された設定などもなくなってしまいます。また、dockerコンテナ内のファイルとして作成したデータベースも同様です。
システムデータベースをコンテナの外部に構築し、コンテナのライフサイクルを越えてシステムデータベースや各種設定を維持するには、"Durable %SYS"と呼ばれる仕組みを使います。
具体的には、
sudo docker run --name iris --detach --publish 52773:52773 --volume /home/usr/docker/iris2020.3:/external --env ISC_DATA_DIRECTORY=/external/iris intersystems/irishealth-ml:2020.3.0.304.0 --key /external/iris.key
と ISC_DATA_DIRECTORY環境変数に外部ファイルシステムのディレクトリを指定します。そうすると、コンテナをrmした場合や、イメージを更新して新たにコンテナを作成した場合も、システムデータベースや設定ファイルの内容はが引き継がれます。
自分でデーターベースを作成する際に、/externalファイルシステムに作成すると、そのデータベースもコンテナのライフサイクルを越えて保持されます。
以上、念のためご確認ください。
素晴らしいです! 日本語の記事もどんどん増えてきているので、もっともっと盛り上げていきましょう!
@Megumi Kakechi さん、役に立つ記事ありがとうございます!
細かい点ですが、クラスメソッドから、同じクラスの別のクラスメソッドを呼ぶときに、
のように呼んでますが、クラス名を繰り返さずに、
で呼べるようです。(参考:英語のコミュティティ記事)
Pythonなら、clsという変数で自分のクラスへの参照が入って欲しいのですが、これは将来の改善を待たないといけないみたいです。
Hello @Tomomi Yamano -san,
I'm not an expert here, but I have not heard so much about SNOMED CT in the field in Japan. As far as I know, ICD10 is more popular, or at least more mentioned among healthcare IT professionals and researchers.
Hope this helps.
@Yuji Ohata さん、
リンクしていただいた回答が、現状対応できる方法だと思います。
PythonでObjectScriptと同じレベルのことができるように開発を続けているようですので、今後の拡張に期待しつつ、現在はこの方法でお願いできたらと思います。
2023.1では、Embedded Pythonでネームスペースを変更する関数が実装されているようです。
iris.system.Process.SetNamespace(ネームスペース) です。変更に成功した場合、変更後のネームスペース名の文字列を返すようです。(変更前を返してくれた方が良い気もしますが、、)
>>> iris.system.Process.SetNamespace("WORK")'WORK'あったらいいなと思ってました!
@Yuji Ohata さん、試して頂きありがとうございます。
私は、RESTサーバの作り方を質問してみたら、それなりに答えが返ってきました。
https://jp.community.intersystems.com/ask-dc-ai?question_id=185265
情報源となっている記事を見ると、Killコマンドのものは日本語訳がなく、RESTサーバのものは日本語訳があるので、学習は言語別に分けられている可能性がありますね。