2013-05-14 2 views
0

Сейчас я работаю с dcm4chee, и у меня есть требование добавить некоторые пользовательские поля, например номер удостоверения личности пациента, номер мобильного телефона и адрес. После того, как я перешел к какой-то связанной информации, я все еще смущен и не знаю, что делать. Кто-нибудь когда-либо делал это?Добавить теги на dcm4chee

ответ

1

Как уже указывал @ jap1968, вы можете добавить

Other Patient IDs (0010,1000) 

включать любые дополнительные идентификационные номера пациента. Этот атрибут является частью Модуль идентификации пациента, которые обычно ожидаются в большинстве объектов DICOM.

Из пациента демографического модуля, который обычно представляет собой необязательный набор атрибутов, вы можете, например, повторно использовать эти атрибуты:

Patient’s Telephone Numbers (0010,2154) 
Patient’s Address (0010,1040) 

В зависимости от DICOM инструментария, который используется для обработки ваших объектов DICOM , будут применены различные методы вставки атрибутов. В dcm4che вы можете использовать один из доступных методов DicomObject.put..., чтобы вставить новое значение в объект DICOM. Просто запомните это для правильности, вы должны обновить SOP Instance UID (и, возможно, другие UID: s) для измененного объекта.

+1

Последний комментарий: Элемент данных, содержащий номер телефона пациента, имеет значение множественности (ВМ) «1-n». Таким образом, вы можете хранить как домашний телефон, так и мобильный телефон. – jap1968

0

Посмотрите на эти поля Dicom:

Other Patient IDs (0010,1000) 
Other Patient IDs Sequence (0010,1002) 

Может быть, вам не нужно добавлять пользовательские поля (по крайней мере, для пациента удостоверение личности), а просто использовать некоторые из уже существующих.

1

Я сделал это в некоторых других случаях. В моем случае я должен изменить существующий тег на новое значение. Вот код, надеюсь, он даст вам некоторый указатель.

public static void changementTag(File file, int tagChooser, String aModify, VR vr, String newString) 
    { 
     try 
     { 
      DicomInputStream dis = new DicomInputStream(file); 
      DicomObject dio = dis.readDicomObject(); 
      dis.close(); 

     String fileName = file.getAbsolutePath() + ".ori"; 
     File originFile = new File(fileName); 
     file.renameTo(originFile); 

     boolean change = false; 
     dio.putString(tagChooser, vr, newString); 
     change = true; 

     if(change) 
     { 
      FileOutputStream fos = new FileOutputStream(new File(file.getParent()+ "/" + file.getName())); 
      BufferedOutputStream bos = new BufferedOutputStream(fos); 
      DicomOutputStream dos = new DicomOutputStream(bos); 
      dos.writeDicomFile(dio); 
      dos.close(); 
      originFile.delete(); 
     } 
    } 
    catch(IOException ex) 
    { 
     ex.printStackTrace(); 
    } 
}