0

コード内に、医療患者のカルテを表すオブジェクトを作成しました。各グラフは 1 人の患者に対応します。各チャート内で、患者は多くの訪問、つまり「出会い」を持つことができます。それぞれの診察の中で、患者はいくつかの補足文書を持つことができます。

最初のインデックス [0] が別の配列である配列をループするのに問題があります。以下のコードでは、型オブジェクトに長さプロパティがないため、(int j = 0; j < chart.DocumentIDs[i].Length; j++) が無効であるとコンパイラが警告しています。ただし、DocumentIDs[i] のインデックスは Int32[] です。

患者のカルテのすべての内容を一覧表示する文字列出力を生成しようとしています。最初は遭遇ごと、次にドキュメント ID ごとに分類されています。以下は私のコードです。誰かが私が間違っているところを指摘できれば。私はそれを感謝します。ありがとう。

public partial class MainWindow : Window
{    
    string ChartOutput = "";
    public MainWindow()
    {
        InitializeComponent();

        //initialize new chart object
        var charts = new[]
        {
            new 
            { 
                  MRN= 745654, 
                  Encounters = new int?[]
                  {
                      10,11,12
                  }, 
                  DocumentIDs = new object []
                  { 
                      new int[]
                      {
                          110, 1101
                      }, null, 112 
                  }, 
                  DocumentTypes = new object[]
                  {
                      new string[]
                      {
                          "Consents", "H&P"
                      }, null, "Intake Questionnaire"
                  }, 
                  DocumentNames = new object[]
                  { 
                      new string[]
                      {
                          "Eartube Surgery", 
                          "Well-Visit Physical"
                      }, null, "Health Survey"
                  } 
              }                        
        };

        foreach (var chart in charts)
        {
            ChartOutput += " Patient MRN#: " +  
                           chart.MRN.ToString() +
                           " Has the following visits: 
                           " + Environment.NewLine + 
                           Environment.NewLine ; 

            for(int i =0; I < chart.Encounters.Length; i++)
            {
                ChartOutput += "Visit Number: " + 
                               chart.Encounters[i].ToString() + 
                               Environment.NewLine;

                if (chart.DocumentIDs[i] != null)
                {  
                    for (int j = 0; j < chart.DocumentIDs[j].Length; j++)
                    {
                        ChartOutput += "  Document ID:" + 
                                          chart.DocumentIDs[j].ToString() + 
                                          Environment.NewLine + 
                                          "  Document Type: " + 
                                          chart.DocumentTypes[j].ToString() +
                                          Environment.NewLine + "  Document Name: " +
                                          chart.DocumentNames[j].ToString() +
                                          Environment.NewLine + Environment.NewLine;
                    }                                        
                }
                else 
                {
                    ChartOutput += "  Has No Documents" + 
                                   Environment.NewLine + 
                                   Environment.NewLine; 
                }
            } 
        }
    }
}




//ChartObject Class

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace CodeTester
{
    public class ChartObject
    {
        public ChartObject()
        {
            RecordClass = "Medical";
        }

        public string RecordClass {get; private set; }
        public int MRN { get; set; }
        public object [] Encounters { get; set; }
        public object [] DocumentIDs { get; set; }
        public object [] DocumentTypes { get; set; }
        public object [] DocumentNames { get; set; }
    }
}

}

4

2 に答える 2

0

DocumentIDsは の配列であるためObject、それにインデックスを付けて取得するものはObjectすべて型になります。特定のプロパティにアクセスするには、型キャストが必要です。Lengthそして、繰り返しによって各要素のプロパティにアクセスしようとするのは危険です: 1 つの要素は でArray、1 つはnullで、もう 1 つは ですInteger: これらのうちの 1 つだけがメソッドを持ってLengthます!

Servy のコメントに同意します。プロパティをObject配列に詰め込むよりも、明示的な型を宣言する方がはるかに良いでしょう。このアプローチは、ほぼ間違いなく、価値がある以上に面倒なことになるでしょう。

于 2013-05-21T20:06:11.627 に答える