セキュア問診票 問診票の定義方法

問診票定義マニュアル

問診票は、ユーザー自身でご自由に定義していくつでも用意して運用することが可能です。 Emuyn LLC が用意しているいくつかのサンプルをコピーして適宜目的に沿う形に変更していただくのがよろしいかと思います。 以下に、記述方法を解説させていただきます。

問診票の名称は、ユーザー様ごとに一意である必要があり、重複していると登録できません(上書き保存されます)。

動作定義や装飾定義項目、質問内容を定義する Fields からなります。

項目名説明デフォルト注意事項
titleタイトル問診票の表題
logoロゴ問診票画面に表示
base64 形式の png (もしくは jpg)
省略の場合は ご施設のロゴになります
description内容説明html tag を使用でき配列要素が <br> で接続されます
responsible_person責任者配列
staffs担当者配列
dept_in_charge責任部署
contact問い合わせ先
submit_button_title送信ボタンの表記
messageメッセージ問診票ごとの 送信完了メッセージ。プロファイルで設定された 送信後メッセージ の代わりに表示されます。
mail_notification通知メールfalse問診票への回答が送信されたら ユーザー名 (ログインID) のメールアドレス宛てに通知を送信します。 コンソールアプリのプロファイル画面からも設定できますが、個々の問診票の設定が優先されます。
welcomemessage開始時メッセージ問診票ごと 開始時メッセージ。プロファイルで設定された 問診票の挨拶文 の代わりに表示されます。
disable_welcomemessage開始時メッセージの 表示を抑制false繰り返し 送信させる場合など、 開始時メッセージの表示が 煩わしい状況で true に設定します。
disable_privacyitems患者情報の 取得を しないfalse患者情報の取得をしない 特別な問診票において true に設定します。
disable_privacyitem_requirement患者情報の 必須入力設定 を無効にするfalse患者情報の取得を 必須としない 特別な問診票において true に設定します。
translate自動翻訳設定空白"all": 全言語, "major": 主要言語(後述), その他言語コード指定
_commentコメントプレビューでは 別枠表示されるが、 問診表アプリでは 無視されます

質問項目の配列です。 記述した順に問診票に展開されます。 radio, checkbox による選択結果に応じて表示するかどうかを決めることができます。 すなわち、「発熱がある」と答えた方に対してのみ、「いつからですか」「最高何度でしたか」の追加質問をしたい時などに使えます。

Type: フィールドのタイプ

入力フィールドだけでなく、区切り表示もフィールドの一つとして設定します。

type意味内容注意事項
textテキストボックス一行入力
textareaテキストエリア複数行入力
radioラジオボタン一つを選択
checkboxチェックボックス複数を選択
date日付
time時刻
scaleスケール
painscale痛みスケール0 ~ 10scale の派生。入力なければ -1 を返す
bodytemp体温34.0 ~ 41.0scale の派生。入力なければ 0 を返す
bloodpressure血圧40 ~ 240scale の派生。入力なければ 0-0 を返す
getphoto写真3枚まで取得可能
figure編集可能な図src に画像データ (base64 フォーマット) またはファイル URL を指定
svgsrcに svg ファイルの内容を直接記述
2枚まで指定可能
clipartクリップアート編集不可の図src に画像データ (base64 フォーマット) またはファイル URL を指定
svgsrcに svg ファイルの内容を直接記述
note挿入文文書description に表示したい内容を markdown にて記述します。
embed資料埋め込みGoogle ドキュメント, YouTube, その他動画やスライドを参考資料として埋め込み表示します。
src にファイルの embed 用アドレスを 指定します。
Google ドキュメントの場合は、リンクを指定すれば自動変換します。
signpad署名手書き署名欄通常は required に true を設定します。
dispname には "署名"、 description には "回答したら署名をお願いします" などを設定します。
section区切りグループ分けするための区切り
subsection小区切りグループ分けするための小区切り。
eval 項目の手前に表示なしの subsection を設置すると結果が見やすくなります。
separator区切り線横線
eval式評価formula に評価式を指定
記述方法は 式評価の記述 (formula) 項のとおりです。
warning論理式評価警告対象検知用formula に結果が論理値 (true/false) となるような評価式を指定
特殊項目であり、true の場合は一覧表上で 黄色に表示されます。
もし同時に指定された emergencytrue の場合はそちらが優先されます。
emergency論理式評価警告対象検知用formula に結果が論理値 (true/false) となるような評価式を指定
特殊項目であり、true の場合は一覧表上で 赤色に表示されます。
  • getphoto, figure では通信量が大きくなりすぎないよう、送信前にサイズの縮小処理をしています。
  • figure の画像の指定は、srcもしくはsvgsrcのいずれかにて指定します。
    • svgsrcには、ベクタ形式の画像形式である svg ファイルの内容を直接記述できます。このとき、json で文法エラーを生じないために "\" にエスケープして記述する必要があります。
    • srcには、jpg, png, gif, svg ファイルを指定します。インターネット上に存在する画像であれば、その URL を以下のように指定します。ローカルの PC 内の jpg, png, gif 画像ファイルであれば base64 に変換して以下のように記載できます。変換にはツールを利用する必要がありますが、 https://lab.syncer.jp/Tool/Base64-encode/ など便利です。

フィールドの設定項目

各質問項目の表記や動作を指定するための設定項目です。

項目名使用 フィールド意味注意事項
name項目名症状必須
required入力必須truedefault は false です。
dispname項目名表記症状
type項目の種類text必須 各々の説明は下記
description説明説明文になります
or
[
 "説明文一行目",
 "説明文二行目"
]
表示したい文字列を記述します。複数行にわたる場合は文字列の配列で指定します。Markdown の記法で記述できます。
parentname親となる項目大分類radio, checkbox を指定
parentselフィールド が表示されるための 親の選択肢分類2, "分類1|分類2"
or
[
 "分類1",
 "分類2"
]
parentname において parentsel で指定した項目 が選択されてなければ、
フィールド自体が 非表示となる。
parentsel を複数指定する場合は | で接続するか、 配列で指定する。
srcfigure,
clipart,
embed
画像ソース,
参考資料 URL (embed)
"data:image... "
svg ソース
画像ファイル URL
base64 形式の png/jpg/gif
svg ソースコード
画像ファイルへのリンク (*1)
Google ドキュメントや YouTube の埋め込み用 URL
styleclipart画像スタイル"width: 30%"<img> タグの style を指定
inlineradio,
checkbox
行内表示指定true/falseデフォルトは false
selectorradio,
checkbox
選択枝"分類1|分類2|その他"
or
[
 "分類1",
 "分類2",
 "その他"
]
選択肢を | で接続したもの
または、 選択肢の配列
selectoridxradio,
checkbox
選択枝インデックス"1|2"選択肢インデックスを | で接続したもの。
selectoridx を指定しない場合は、 "0|1| ..." が暗黙下に設定される。
rowstextarea枠の行数5textarea の高さ
prefixtext前置語
postfixtext,
extarea
後置語kg
inputmodescale入力モードnumeric で数値text, tel, url, email, numeric, decimal のいずれか
minscale最小値0
maxscale最大値100
starttagscale最小表記最小
endtagscale最大表記最大
valuescale-1一般的には、取り得ない値を 設定しておくのが安全
stepscaleステップ1
disprangescale範囲の表示true/falsetrue にする場合には min/max を必ず指定してください
unitscale単位
formatdate,
time
日付表示/入力フォーマットYYYY/MM/DD, YYYY, HH:mm
formattext複数の入力項目を 持たせる場合に使用喫煙 %d 本 x %d 年間, 発症 およそ
%d %l(時間|日|週|月|年)前
%s: 文字列、%d: 数値、%l(リスト1|2|3)、%r(ラジオボタン1|2|3) で指定する。
選択枝に半角の()は使えません。
formulaevaleval, waring, emergency での 評価式{{体重}}/{{身長}}* {{身長}}セキュリティのため、複文と代入はできません。 3項演算子は利用可能。
noreportevaleval の結果を 回答内容に表示するかどうかtruetrue で非表示。 中間変数などで表示が必要ないものに設定します。 default は false
instanttexttextareaテキストエリアに インスタント入力 できる文字列[
 "文1",
 "文2",
 "文3"
]
数が多いと スマホの場合は 画面が見づらくなるので 注意してください

式評価の記述 (formula)

表記意味値が得られない場合
%%フィールド名%%値 (無変換)空白文字列 "" を返します。
{{フィールド名}}文字列値空白文字列 "" を返します。
[[フィールド名]]整数値整数 0 を返します。
((フィールド名))浮動小数点値浮動小数 0.0 を返します。

ここで、単一選択肢フィールド (radio) に対して フィールド名 ではなく フィールド名.index と記載した場合、 選択された選択肢の番号 (selectoridx があればそこで設定された値、なければ 0 から始まる整数値) が値として得られますので、 順序や重みづけのある選択項目の場合に有用です。

すなわち、例えば、"痛み" フィールドの selector"痛くない|少し痛い|痛い" である場合に "少し痛い" が選択されたとき、

  • {{痛み}} は "少し痛い" を返し、
  • {{痛み.index}}selectoridx"A|B|C" であれば文字列の "B" を返し、 selectoridx がなければ文字列の "1" を返します。
  • [[痛み.index]]selectoridx"A|B|C" であれば整数の 0 を返し ("B" は数値でないので 0 と解釈される)、 selectoridx がなければ整数の 1 を返します。

フィールド名.index はしばしば warningemegency にて警告表示を設定する場合に利用できます。 例えば、selectoridx がない場合の上の例では、 warningformula[[痛み.index]] > 0 とし、 emegencyformula[[0痛み.index]] > 1 とすることで、 痛みが少しでもあれば warning、痛みがはっきりあれば emergency として扱うことができるようになります。 回答内容の一覧表の画面において、warning は黄色emergency は赤色で表示されるのですぐに気付くことができます。

なお、formula では標準の javascript 関数が使えます。 さらに、下表の組み込み関数が使えます。

組み込み関数返値引数
average(...args)args (個数は自由) の平均値空白や数値ではない値は無視します。例:average("1", 2.0, "x") = 1.5
{{フィールド名}}{{フィールド名.index}} の形式で渡す場合が多いです。
sum(...args)args (個数は自由) の合計空白や数値ではない値は無視します。例:sum("1", 2.0, "x") = 3.0
{{フィールド名}}{{フィールド名.index}} の形式で渡す場合が多いです。
yearsSince(from, to)from から to (省略の場合現在) までの年数date フィールド値 もしくは 文字列 (YYYY-MM-DD 形式)
monthsSince(from, to)from から to (省略の場合現在) までの月数date フィールド値 もしくは 文字列 (YYYY-MM-DD 形式)
weeksSince(from, to)from から to (省略の場合現在) までの週数date フィールド値 もしくは 文字列 (YYYY-MM-DD 形式)
daysSince(from, to)from から to (省略の場合現在) までの日数date フィールド値 もしくは 文字列 (YYYY-MM-DD 形式)

例えば、daysSince({{発症日}}) 発症日からの経過日数を表します。

日付表示/入力フォーマット (format)

指定文字取得対象
YYYY
MM
DD
HH時(24 時間表記)
hh時(12 時間表記)
mm
ss

資料埋め込み (embed)

問診票の内部に、参考資料として Google ドキュメントや、YouTube 動画を表示することができます。

Google ドキュメント を埋め込む場合

埋め込みたい Google ドキュメント を開き、右上の「共有」ボタンを押してください。

回答者からファイルが見えるようにするために、「リンクを知っている全員に変更」に設定を変更してください。
「リンクをコピー」を押しますと、そのファイルのリンクがクリップボードにコピーされます。
問診票定義は以下のように記述し、リンクを src の部分に貼り付けます。 height は横長の資料ですと通常 60% 程度が適当ですが、適宜調整してください。

  "fields": [
    ...
    {
      "description": "この資料をご覧になってから、下の質問にお答えください。",
      "dispname": "スライド",
      "height": "60%",
      "name": "スライド",
      "src": "https://docs.google.com/presentation/d/1AxojlYB8597i07oBezHdylwjPl0DkI1P22Qlkje1eSA/edit?usp=sharing",
      "type": "embed"
    },
    ...
  ]

この例のようなスライドの他、表計算シート・ワード文書・動画・静止画などを埋め込むことも可能です (ファイルサイズなどの制約により表示できない場合もあります)。

YouTube 動画を埋め込む場合

YouTube の再生画面上で右クリックして「埋め込みコードをコピー」すると、 次のようなコードがクリップボードにコピーされます。

<iframe
  width="1280"
  height="720"
  src="https://www.youtube.com/embed/M7lc1UVf-VE"
  title="YouTube video player"
  frameborder="0"
  allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"
  allowfullscreen
>
</iframe>

その src の部分を使用して、問診票定義に以下のように記述します。 height は横長の資料ですと通常 60% 程度が適当ですが、適宜調整してください。

  "fields": [
    ...
    {
      "description": "この資料をご覧になってから、下の質問にお答えください。",
      "dispname": "YouTube 動画",
      "height": "60%",
      "name": "Youtube",
      "src": "https://www.youtube.com/embed/M7lc1UVf-VE",
      "type": "embed"
    },
    ...
  ]
SlideShare スライドを埋め込む場合

スライド表示画面のスライド右下の Share ボタンを押すと、Embed のコードが取得できます。

<iframe src="//www.slideshare.net/slideshow/embed_code/key/17X5LCb4Pgydjo" ...> </iframe>

その src の部分を使用して、問診票定義に以下のように記述します。

  "fields": [
    ...
    {
      "description": "この資料をご覧になってから、下の質問にお答えください。",
      "dispname": "SlideShare スライド",
      "height": "60%",
      "name": "SlideShare",
      "src": "https://www.slideshare.net/slideshow/embed_code/key/17X5LCb4Pgydjo",
      "type": "embed"
    },
    ...
  ]

「セキュア問診票」では、問診票ごとに自動翻訳による言語設定が可能です。 2021/10 現在、世界 108 言語に対応しています。 日本語の問診票を用意するだけで、外国人受診者に対応することができます。 外国語で入力された内容は、日本語に自動翻訳した結果とともに送信されます。

動作定義の "translate" を設定することで、自動翻訳により問診票を外国語対応とすることができます。 2021/10 現在サポートしている言語コードは以下の通りです。

言語コードの部分に

  • "all" を指定すると、全ての言語が対象となります。
  • "major" を指定すると、主要言語である Chinese (中国語), English (英語), French (フランス語), German (ドイツ語), Korean (韓国語), Portuguese (ポルトガル語), Russian (ロシア語) が対象となります。
  • 言語コードを "," で接続することで、複数の言語を指定できます。
    • "da,nl": デンマーク語とオランダ語
    • "major,ne": 上記主要言語 + ネパール語
言語コード言語名言語名(日本語)言語名(原語)
afAfrikaansアフリカーンス語Afrikaans
sqAlbanianアルバニア語Shqiptare
amAmharicアムハラ語አማርኛ
arArabic lettersアラビア文字حروف عربية
hyArmenianアルメニア語հայերեն
azAzerbaijaniアゼルバイジャン語Azərbaycanca
euBasqueバスク語Euskara
beBelarusianベラルーシ語Беларуская
bnBengali lettersベンガル文字বাংলা অক্ষর
bsBosnianボスニア語Bosanski
bgBulgarianブルガリア語български
caCatalanカタロニア語Català
cebCebuセブ語Cebu
zhChinese中国語中國
zh-CNChinese (Simplified)中国語(簡体)简体中文
zh-TWChinese (traditional)中国語(繁体)中國(傳統的)
coCorsicanコルシカ語Corsu
hrCroatianクロアチア語Hrvatski
csCzech languageチェコ語Český jazyk
daDanishデンマーク語dansk
nlDutchオランダ語Nederlands
enEnglish英語English
eoEsperantoエスペラント語Esperanto
etEstonianエストニア語Eestlane
fiFinnishフィンランド語Suomalainen
frFrenchフランス語français
fyFrisianフリジア語Frysk
glGalicianガリシア語Galego
kaGeorgianグルジア語ქართული
deGermanドイツ語Deutsch
elGreek languageギリシャ語ελληνική γλώσσα
guGujaratiグジャラト語ગુજરાતી
htCreole (Haiti)クレオール語(ハイチ)Kreyòl (Ayiti)
haHausaハウサ語Hausa
hawHawaiianハワイ語Ōlelo Hawaiʻi
heHebrewヘブライ語עִברִית
hiHindiヒンディー語हिंदी
hmnMon languageモン語Lus Mev
huHungarianハンガリー語Magyar
isIcelandicアイスランド語Íslensku
igIgboイボ語Igbo
idIndonesianインドネシア語bahasa Indonesia
gaIrishアイルランド語Gaeilge
itItalianイタリア語italiano
jaJapanese日本語日本語
jvJavaneseジャワ語Wong jawa
knKannadaカンナダ語ಕನ್ನಡ
kkKazakhカザフ語Қазақша
kmKhmerクメール語ខ្មែរ
rwKinyarwandaキニヤルワンダ語Kinyarwanda
koKorean韓国語한국
kuKurdishクルド語Kurdî
kyKyrgyzキルギス語Кыргызча
loLaoラオ語ພາສາລາວ
lvLatvianラトビア語Latvietis
ltLithuanianリトアニア語Lietuvių
lbLuxembourgishルクセンブルク語Lëtzebuergesch
mkMacedonianマケドニア語Македонски
mgMalagasiマラガシ語Malagasi
msMalayマレー語Bahasa Melayu
mlMalayalam scriptマラヤーラム文字മലയാളം ലിപി
mtMalteseマルタ語Malti
miMaoriマオリ語Maori
mrMarathiマラーティー語मराठी
mnMongolianモンゴル語Монгол
myMyanmar (Burmese)ミャンマー語(ビルマ語)မြန်မာ (ဗမာ)
neNepaliネパール語नेपाली
noNorwegianノルウェー語norsk
nyNyanja (Chewa)ニャンジャ語(チェワ語)Nyanja (Chewa)
orOdiaオリヤ語ଓଡିଆ
psPashtoパシュト語پښتو
faPersianペルシャ語فارسی
plPolish languageポーランド語Język polski
ptPortugueseポルトガル語português
pt-PTPortuguese (Portugal)ポルトガル語(ポルトガル)Portugues (portugal)
pt-BRPortuguese (Brazil)ポルトガル語(ブラジル)Portugues (brasil)
paPunjabiパンジャブ語ਪੰਜਾਬੀ
roRomanianルーマニア語Română
ruRussianロシア語русский
smSamoanサモア語Faasamoa
gdScottish Gaelicスコットランド ゲール語Gàidhlig na h-Alba
srSerbianセルビア語Српски
stSesothoセソト語Sesotho
snShonaショナ語Shona
sdSindhiシンド語سنڌي
siSinhalaシンハラ語සිංහල
skSlovakスロバキア語Slovenský
slSlovenianスロベニア語Slovenščina
soSomaliソマリ語Soomaali
esSpanishスペイン語Español
suSundaneseスンダ語Sundanis
swSwahiliスワヒリ語Kiswahili
svSwedishスウェーデン語svenska
tlTagalog (Filipino)タガログ語(フィリピン語)Tagalog (Filipino)
tgTajikタジク語Тоҷикӣ
taTamilタミル語தமிழ்
ttTatarタタール語Татар
teTeluguテルグ語తెలుగు
thThaiタイ語ไทย
trTurkish languageトルコ語Türk Dili
tkTurkmenトルクメン語Türkmenler
ukUkrainianウクライナ語Українська
urUrduウルドゥー語اردو
ugUyghurウイグル語ئۇيغۇر
uzUzbekウズベク語O'zbek
viVietnameseベトナム語Tiếng Việt
cyWelshウェールズ語Cymraeg
xhXhosaコーサ語isiXhosa
yiYiddishイディッシュ語יידיש
yoYorubaヨルバ語Yoruba
zuZuluズールー語Zulu
  • 患者氏名や住所などのフィールドを設定せず、個人情報を入力させない問診票においてはどうやって回答者を特定するのですか?
    • 回答時に、端末画面に6桁の「回答番号」が表示されます。これを回答者にメモしておいていただくことで特定が可能です。
  • 回答者が入力した個人情報は、本システムの管理会社である Emuyn LLC はどのように管理するのでしょうか?
    • 本システムでは、入力内容は高度に暗号化され、その解読用パスコードは各利用者様の PC の内部に保管されています。そのため、Emuyn LLC は、その内容を読みだすことはできません。暗号化されたデータは、Google のセキュアなサーバーに保管されます。
    • 回答者の個人情報をマーケティングにに利用する業者が多い中、Emuyn LLC はそもそも個人情報を保持しないという立場を貫きます。
  • 回答ページを分ける機能はないのですか?
    • 本システムでは、問診票はすべて単一ページに表示され、スクロールしながら入力する形式となります。そうしている理由は、回答する立場で考えると質問の全体像が把握しやすく安心感につながるためです。
    • よくあるのが、延々と続くページにいつまで入力させられるのか不安になったり、最後のページに「入力したくない必須項目」が現れて回答者の不満につながることですが、これらを回避できます。
  • radio/checkbox の結果による表示制御の深さは何段まで可能ですか?
    • 制限はありません。