小児患者用の約 100 種類の麻酔薬に関する多くの変数を保存する JSON を読み込もうとしています。
実際の値は、患者の体重、年齢などから事前に計算されます。
例:
var propofolInductionTitle = propofolName + ' ' + propofol0PercentConcentration + '- Induktion';
var propofol0InductionDosageMG = (Math.round(kg * 2 * 10) / 10) + ' - ' + (Math.round(kg * 5 * 10) / 10);
次に、必要な変数で構成される json のブロックとして薬を作成します。これらの変数は、後で計算された値に置き換えられます。すべての変数が数学ブロックで定義されている場合、英語とフランス語へのローカライズを容易にするために、JSON で文字列を避けるようにしています。
var hypnotikaJSON = {
"thiopentalTitle": [
{"thiopentalBrandName": ""},
{"vialContentTitle": "thiopentalVialContent"},
{"solutionTitle": "thiopentalSolution"},
{"concentrationTitle": "thiopentalConcentration"},
{"dosageString": "thiopentalDosageString"},
{"atWeight": "thiopentalDosageMG"},
{"thiopentalAtConcentration": "thiopentalDosageML"}
],
"propofolInductionTitle": [
{"propofolInductionBrandName": ""},
{"propofolVialContentTitle": "propofolInductionVialContent"},
{"propofolSolutionTitle": "propofolSolution"},
{"propofolConcentrationTitle": "propofolInductionConcentration"},
{"propofolInductionDosageStringTitle": "propofolInductionDosageString"},
{"atWeight": "propofolInductionDosageMG"},
{"propofolAtInductionConcentration": "propofolInductionDosageML"}
],
"propofolSedationTitle": [
{"propofolSedationBrandName":""},
{"propofolVialContentTitle":"propofolSedationVialContent"},
{"propofolSolutionTitle":"propofolSolution"},
{"propofolConcentrationTitle":"propofolSedationConcentration"},
{"propofolSedationDosageStringTitle":"propofolSedationDosageString"},
{"atWeight":"propofolSedationDosageMG"},
{"propofolAtSedationConcentration":"propofolSedationDosageML"}
],
"laryngealMaskTitle": [
{"laryngealMaskSizeTitle":"laryngealMaskSize"},
{"laryngealMaskCuffSizeTitle":"laryngealMaskCuffSize"},
{"laryngealMaskBiggestETTTitle":"laryngealMaskBiggestETT"},
{"laryngealMaskBronchoscopeSizeTitle":"laryngealMaskBronchoscopeSize"}
]
};
私の具体的なニーズは、JSON リーダーが各オブジェクトのキーと値を提供する必要があるということです。テンプレートに入力するには両方が必要だからです。その理由は、薬の分野が部分的に異なるからです。いくつかの追加の投与経路があるため、別の薬にはない別のキーと値のペアがあります。ボーラスと点滴の両方で投与されるものもあれば、そうでないものもあります。したがって、便利な json 構造は不可能です。ここでrdougan の回答を見つけたので、部分的にそれを行うことができました。
モデル:
Ext.define('my.model.Drug', {
extend: 'Ext.data.Model',
config: {
fields: ['name', 'value']
}
});
カスタム Json リーダー:
Ext.define('Ext.data.reader.Custom', {
extend: 'Ext.data.reader.Json',
alias: 'reader.custom',
getRoot: function (data) {
if (this.rootAccessor) {
data = this.rootAccessor.call(this, data);
}
var values = [],
name;
for (name in data) {
values.push({
name: name,
value: data[name]
});
}
return values;
}
});
店:
var store = Ext.create('Ext.data.Store', {
fields: ['name', 'value'],
data: hypnotikaJSON,
autoLoad: true,
proxy: {
type: 'memory',
reader: {
type: 'custom'
}
}
});
パネル:
this.viewport = new Ext.Panel({
fullscreen: true,
layout: 'fit',
items: [{
xtype: 'list',
itemTpl: '<p class="description">{name}</p><p class ="values">{value}</p>',
store: store
}]
});
残念ながら、私は医師であり、プログラマーではありません。たくさん読んだ後、ネストされた JSON にこれを適用する方法がわかりません。カスタム リーダーは、最初のレベルにしか対応していないようです。リーダーがなくても、各エントリの周りに多くのプラン html があるだけのストアがなくても実行できますが、これは非常に遅いことが証明されているので、Sencha Touch 1.1 からの更新中は避けたいと思います。今回はそれを正しく行う方がよいでしょう。
この醜いデータ構造を解析する方法を教えてください。
ありがとうございました