2

小児患者用の約 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 からの更新中は避けたいと思います。今回はそれを正しく行う方がよいでしょう。

この醜いデータ構造を解析する方法を教えてください。

ありがとうございました

4

1 に答える 1

0

JSONリーダーの拡張についてはよく知らないので、推測ですが、「読み取り」メソッドをオーバーライドすることになっているのではないでしょうか? その後、必要に応じて JSON を

調べることができます。また、JSON を制御できる場合は、JSON を変更することを検討する必要があります。
通常、JSON のキーは、配列内のすべての項目で同じでなければなりません。
キーはデータではなく、メタデータです。
したがって、異なる薬物間で異なる特性がある場合は、次のようなものが解決策になる可能性があります。

[{

名前: 'プロポフォール 1%',
プロパティ: [

{タイトル: '誘導', 値: '22-56g'},
{タイトル: '鎮静', 値: '22'},
など.
]},
{名前: 'nextDrug'}
など..

于 2012-05-16T19:20:50.410 に答える