2017-10-25 81 views
0

DICOMファイルとして保存されている放射線治療計画から情報を抽出した後、今の問題は別のものになりました。でも順番にDicomTagsを扱うfo-dicomを使用したDicomシーケンスの作成

私は(例えば)と既存のプランにアイテムを追加または更新することができますことを、知っている

file.Dataset.AddOrUpdate(Dicom.DicomTag.PatientAge,23); 

file.Dataset.Get<Dicom.DicomSequence>(Dicom.DicomTag.BeamSequence).Items[1]. 
      Get<Dicom.DicomSequence>(Dicom.DicomTag.ControlPointSequence).Items[0]. 
      Get<Dicom.DicomSequence>(Dicom.DicomTag.BeamLimitingDevicePositionSequence).Items[2]. 
      AddOrUpdate(Dicom.DicomTag.LeafJawPositions, "-30\\30"); 

(例えば)の問題ではありませんしかし、今では、完全な新しいシーケンスを作成してその中に情報を格納することが可能かどうか疑問に思っていますか? 私は、これが私に、ただ一つのアイテムだけでなく、このアイテムを作成するより多くの情報を作成させることを強く望んでいることを知っています。

fo-dicom API documentation私はDicom.IO.Writer名前空間を見つけました。私は見て回ったが、私が見たいものは見つけられなかった。私の最初の本能に続いて、私が書かれているだろう、この

string filename = "output.dcm"; 
DicomWriter file = new DicomWriter(@filename); 
... trying to create TagElements 

コンストラクタはオプションのみを受信したいので、また、他のコマンドラインDicomFileWriter file = new DicomFileWriter(...);は動作しません。他のDicomWriter()コンストラクタはこれに似ています。

また、新しいタグを書く可能性はありますが、それには成功していません。file.Datasetだから私は間違った一歩を踏んだヒントをあなたの一人が私に与えてくれることを願っています。

答えて

1

これはそれを行うための一つの方法です:

string filename = "output.dcm"; 

DicomDataset ds = new DicomDataset(); //Main dataset 
ds.Add(DicomTag.SpecificCharacterSet, "ISO_IR 100"); //Add some items 
ds.Add(DicomTag.PatientID, "191212121212"); 

DicomDataset sqContent = new DicomDataset(); //Content of the sequence 
sqContent.Add(DicomTag.Modality, "US"); 
sqContent.Add(DicomTag.ScheduledProcedureStepStartDate, DateTime.Now.Date); 

DicomSequence sq = new DicomSequence(DicomTag.ScheduledProcedureStepSequence, sqContent); // Create sequence, add content 
ds.Add(sq); //Add sequence to main dataset 

DicomFile file = new DicomFile(); 
file.Dataset.Add(ds); //Add main dataset to DicomFile 
file.FileMetaInfo.TransferSyntax = DicomTransferSyntax.ImplicitVRLittleEndian; //Specify transfer syntax 
file.Save(filename); //Save file to disk 
関連する問題