2

ユーザーが入力した数値を読み取るソフトウェアを設計しています。次に、医療レポートで使用される文を生成します。文章間に非常に多くの差異があり、差異の種類ごとに設定を作成することは耐え難いほど長く、おそらく非生産的であるという事実により、少し複雑になります。

私が苦労している例を挙げましょう:

診断は人間の神経に依存しているとしましょう。

次の神経を考えてみましょう:正中、尺骨、橈骨。

さて、ユーザーがソフトウェアに数値を入力して、どの神経が異常であるかを生成したとしましょう。

次のステートメントを検討してください。

左正中神経の神経障害の徴候。

両側尺骨神経の神経障害の徴候。

右橈骨神経の神経障害の徴候。

各ステートメントは一連のステートメントによって生成され、これらのステートメントを組み合わせて各バリアントを持つことができます。バリアントビーイング -

左 (L)、右 (R)、両側 (B) - 正中、尺骨、橈骨。

したがって、分散は 3^3 = 27 になります。

しかし、より多くの神経がある場合、分散は指数関数的に上昇します。神経が 5 つある場合、3^5 になります。

問題は、次の文を生成するようにソフトウェアをどのように設計できるかです。

左正中神経、両側尺骨神経、および右橈骨神経の神経障害の徴候。実際には、これらのステートメントのすべての組み合わせと、それぞれの条件ステートメントはありません。

さまざまなステートメントで機能する必要があります: 文の分散の例を挙げると:

左脛骨神経の神経伝達速度の低下。

左腓骨神経の神経伝達速度の低下。

コンバイン - 左脛骨神経と腓骨神経の神経伝達速度の低下。

要約すると、ソフトウェアはさまざまなタイプの文を作成します。ユーザーが適切な類似文を選択すると、プログラムがそれらを結合します。

4

3 に答える 3

0

考えられる診断ごとにコレクションを作成し、問題を計算する際にそれらに神経 (?文字列) を追加できます。次に、診断ごとに、一致するコレクションを繰り返し処理し、各神経を組み合わせて代表的なステートメント (「左脛骨神経と腓骨神経の神経伝導速度の低下」) を組み合わせて、文を作成します。これはおそらく私のアプローチです。

また、反対のアプローチを行って、各診断のプロパティを持つ Nerve クラスを作成することもできます。これらのプロパティを変更してから、さまざまな診断を繰り返し、特定のプロパティを持つ神経を検索することができますが、これは遅く見えます (2 回の繰り返し)。

于 2012-08-06T15:11:24.123 に答える
0

いくつかの条件が必要になる可能性がありますが、理想的には、何らかのテンプレートを使用する必要があります。シンプルなテンプレート アプローチは String.Format() です。例えば:

String.Format("{0} {1}.", getSymptom(userSymptomNumber), getLocation(userLocationNumber));

この非常に単純なシナリオでは、getSymptom は「神経障害の徴候」を返し、getLocation はある種のデータ ストアから「左正中神経」を返します。より複雑なテンプレートでは、コレクションを含めることができます。利用可能な C# テンプレート エンジンのいくつかを確認するか、String.Format に似た独自の軽量テンプレート コードを展開することができます。核となる条件文によって、文がどのように形成されるかが決まります。そこから、ユーザー入力でバリエーションを埋めるだけです。何千もの完全な文をそのまま並べるべきではありません。

于 2012-08-06T16:44:32.170 に答える
0

私は数年前に同じようなことをして、何人かのユーザーが繰り返しテキストを何度も入力する時間を節約しました。ユーザーがチェックする一連のチェックボックスを作成しました。これは、データソース (sql?) からテキストを読み込み、それらをテキストボックスに連結します。これにより、ユーザーはテキストを編集して読みやすく、独自の解釈を加えることができますが、テンプレート化されたテキストを自動的に挿入すると、入力する時間が節約されます。それらは異なるカテゴリを持っていたので、チェックボックスのセットを変更するコンボボックスを追加しました.

体の部位 (ドロップダウン): 腕、脚 ユーザーが「腕」を選択すると、指、手首、肘などのリストが表示されます。「脚」を選択すると、腕のチェックボックスが非表示になり、脚の膝、かかとなどが表示されます。

ボックスのチェックを外すと、テキストボックス内のテキストが検索され、削除されます。

また、グリッドに似たものをもう 1 つ作成しました。ユーザーは [行の追加] をクリックして行を追加しました。各行には一連のコンボボックスがあり、最初にカテゴリを選択し、次にサブカテゴリを選択し、最後にテンプレート化されたアイテムの名前を選択します。たとえば、「両側尺骨神経」などです。

これが役に立てば幸いです-必要なものに応じてサンプルコードを提供できます。

于 2012-08-06T15:11:55.480 に答える