Сейчас я работаю с dcm4chee, и у меня есть требование добавить некоторые пользовательские поля, например номер удостоверения личности пациента, номер мобильного телефона и адрес. После того, как я перешел к какой-то связанной информации, я все еще смущен и не знаю, что делать. Кто-нибудь когда-либо делал это?Добавить теги на dcm4chee
ответ
Как уже указывал @ 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) для измененного объекта.
Посмотрите на эти поля Dicom:
Other Patient IDs (0010,1000)
Other Patient IDs Sequence (0010,1002)
Может быть, вам не нужно добавлять пользовательские поля (по крайней мере, для пациента удостоверение личности), а просто использовать некоторые из уже существующих.
Я сделал это в некоторых других случаях. В моем случае я должен изменить существующий тег на новое значение. Вот код, надеюсь, он даст вам некоторый указатель.
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();
}
}
Последний комментарий: Элемент данных, содержащий номер телефона пациента, имеет значение множественности (ВМ) «1-n». Таким образом, вы можете хранить как домашний телефон, так и мобильный телефон. – jap1968