tasknet
Goto Top

DICOM Ordner automatisch umbennenen

Hallo,

ein Kunde erhält auf einem gemappten Laufwerk direkt Daten aus einer Radiologie.
Die Radiologie legt die Daten im DICOM Format auf dem Laufwerk ab.

Leider schafft es die IT des Radiologen nicht, dass der Patientenname mit übergeben wird.
Die Ordner mit den DICOM Daten heissen z.B:

JiveX_2014-02-26_11-58-46
JiveX_2014-02-26_10-57-25
JiveX_2014-02-26_10-46-43
JiveX_2014-02-26_09-54-21
JiveX_2014-02-26_07-35-05

In den einzelnen Ordnern liegen dann die Daten im DICOM Format.

Ich bräuchte jetzt ein Tool mit dem die Datei "DICOMDIR" ausgelesen wird und den o.g. Ordnernamen mit dem Patietennamen ersetzt.

In der DICOMDIR Datei ist der Name des Patienten in Klartext abgelegt. Vor dem Patientennamen steht grundsätzlich immer die Variabel: "PN" gefolgt von einem Steuerzeichen was ich hier nicht darstellen kann face-smile
Dann kommt der Patientennachname[ESCAPEZEICHEN]Patientenvorname[3x ESCAPEZEICHEN]

Kennt da jemand ein Tool für oder kann man das per Batchdatei realisieren?


So sieht diese DICOMDIR DAtei aus:

[code]
DICM UL ¶   OB    UI 1.2.840.10008.1.3.10  UI2 1.2.276.0.50.192168010025.8628342.9508224.91.90.90  UI 1.2.840.10008.1.2.1   UI 1.2.276.0.50.20100301.4.6   SH
JIVEX_TK4.6  0CS JIVEX  ACS VISUS  UL   UL   US  SQ ÿÿÿÿþÿ àÿÿÿÿ UL  US ÿÿ UL (  0CS PATIENT   CS
ISO_IR 100  PN Mustename^Mustervorname^^^ LO
19751202/5 0 DA 19751202 @ CS M þÿ
à þÿ àÿÿÿÿ UL  US ÿÿ UL   0CS STUDY   CS
ISO_IR 100 DA 20140210 0 TM 172450.671000  P SH 515046 0LO Thorax
UI. 1.2.276.0.50.192168015165.2581031.1265592.1304  SH TEMP1070863884þÿ
à þÿ àÿÿÿÿ UL ‚  US ÿÿ UL L  0CS SERIES  CS
ISO_IR 100 ! DA 20140210 1 TM 172534.000000  ` CS CR € LO, Praxisgem. f. Radiologie und Nuklearmedizin   ST Blabla 8, 10000 Musterstadt  PPN Dr. B. Blubb  CS CHEST  UI6 1.3.46.670589.30.1.6.1.172136281264557.1392049694515.1  IS 1 þÿ
à þÿ àÿÿÿÿ UL  US ÿÿ UL  0CS IMAGE  CS* DICOM\PA000001\ST000001\SE000001\IM000001  UI 1.2.840.10008.5.1.4.1.1.1  UI6 1.3.46.670589.30.1.6.1.172136281264557.1392049694390.2 UI 1.2.840.10008.1.2   CS
ISO_IR 100  CS ORIGINAL\PRIMARY\  IS 1 (  US à(  US \þÿ
à þÿ àÿÿÿÿ UL  US ÿÿ UL Æ  0CS SERIES  CS
ISO_IR 100 ! DA 20140210 1 TM 172703.000000  ` CS CR € LO, Praxisgem. f. Radiologie und Nuklearmedizin   ST Blabla 8, 10000 Musterstadt  PPN Dr. B. Blubb  CS CHEST  UI6 1.3.46.670589.30.1.6.1.172136281264557.1392049695546.1  IS 2 þÿ
à þÿ àÿÿÿÿ UL  US ÿÿ UL  0CS IMAGE  CS* DICOM\PA000001\ST000001\SE000002\IM000001  UI 1.2.840.10008.5.1.4.1.1.1  UI6 1.3.46.670589.30.1.6.1.172136281264557.1392049694453.2 UI 1.2.840.10008.1.2   CS
ISO_IR 100  CS ORIGINAL\PRIMARY\  IS 1 (  US ù(  US ¿þÿ
à þÿÝà   CS
ISO_IR 100
[/code]

Freue mich auf Eure Hilfe und sage schon einmal Danke!!!!

tasknet
Kommentar vom Moderator Biber am 26.02.2014 um 21:28:45 Uhr
DICOM Ordner automatisch umbennenen
set /a rgc+=1
#887

Den einen bis zur nächsten Schnapszahl schaffen wir noch im Februar.

Content-ID: 231087

Url: https://administrator.de/contentid/231087

Ausgedruckt am: 22.11.2024 um 16:11 Uhr

n.o.b.o.d.y
n.o.b.o.d.y 26.02.2014 um 16:17:47 Uhr
Goto Top
Hallo,

Einen konkreten Ansatz habe ich nicht zur Hand, aber schau mal hier: http://dicom.offis.de
Dort stehen eine Reihe von DICOM Tools zu Verfügung, mit denen du ggf. dein Problem lösen kannst.
TASKnet
TASKnet 26.02.2014 um 16:21:18 Uhr
Goto Top
Herzlichen Dank, aber die Seite habe ich schon durchforstet und keinen brauchbaren Ansatz gefunden face-sad
colinardo
Lösung colinardo 26.02.2014, aktualisiert am 28.02.2014 um 14:53:22 Uhr
Goto Top
Hallo tasknet,
könnte man folgendes Powershell-Script für hernehmen: (Vorausgesetzt wenn die Zeichen hier stimmen ... ansonsten mal eine Beispiel-Datei irgendwo hochladen oder den Link dazu via PM schicken)
In Zeile 1 muss der Ordner angegeben werden dem die Ordner untergeordnet sind. Die Ordner werden dann im Format Nachname, Vorname_Datum umbenannt wobei das JiveX durch den Namen ersetzt wird.
$path = "C:\Ordner"  
$folders = dir $path | ?{$_.PSIsContainer}
$illegalChars = '(\<|\>|:|\"|\/|\\|\||\?|\*|\^)'  
foreach($folder in $folders){
    $dircomContent = gc "$($folder.FullName)\DICOMDIR.DAT" -ErrorAction SilentlyContinue | out-string  
    $regex = [regex] 'PN.\x00(.+?)\^(.+?)\x00'  
    $match = $regex.Match($dircomContent)
    if ($match.Success){
        $name = ($match.Groups[1].Value).Trim()
        $vorname = ($match.Groups[2].Value).Trim()
        $foldername = "$name, $vorname"  
        $foldername = $foldername -Replace $illegalChars,""  
        $foldername = $folder.Name.Replace("JiveX",$foldername)  
        echo "Benenne Ordner: '$($folder.Name)' um in '$foldername'"  
        Rename-Item $folder.FullName $foldername
    }else{
        echo "Keine Namen in '$($folder.FullName)' gefunden / oder Regex Pattern passt nicht"  
    }
}
Grüße Uwe
Tobisfr
Tobisfr 27.02.2014 um 21:30:49 Uhr
Goto Top
Hi, die offis Tools kann man schon nutzen. Das Tool dicomdump kann einzelne tags ( Name ist 0010,0010) ausgeben - da braucht man sich ja nur eine Batch schreiben http://support.dcmtk.org/docs/dcmdump.html

Ich bin mir aber nicht sicher ob es mit dicomdirs geht, falls nicht einfach die erste dicom Datei im Ordner verwenden.

Bei der ganzen Geschichte aber bitte ein paar fallstricke beachten - je nach dem was ihr da vor habt:
- in einem dicomdir können mehrere unterschiedliche Patienten gelistet sein- das ist nicht auf einen Patienten beschränkt
- da doppelte Namen oft vorkommen würde ich die ordnerbezeichnung noch um id und Geburtsdatum erweitern, sonst gibts Vermischungen
TASKnet
TASKnet 28.02.2014 um 10:54:57 Uhr
Goto Top
Hallo Uwe,

bei der Ausführung des Scripts bekomme ich diese Fehlermeldung:

PS D:\ir> .\dicom.ps1
Rename-Item : Illegales Zeichen im Pfad.
Bei D:\ir\dicom.ps1:10 Zeichen:20

back-to-topRename-Item <<<< $folder.FullName "$name $vorname"

+ CategoryInfo : NotSpecified: (face-smile [Rename-Item], ArgumentException
+ FullyQualifiedErrorId : System.ArgumentException,Microsoft.PowerShell.Commands.RenameItemCommand
colinardo
colinardo 28.02.2014 aktualisiert um 11:03:32 Uhr
Goto Top
dann stimmt die Extraktion noch nicht (Zeichen stimmen noch nicht / hatte ja nur deinen Text der auch noch ohne Tags gepostet wurde), und das Regex hat ein Zeichen gematcht was in einem Dateinamen nicht vorkommen darf ...(sagt ja schon die Fehlermeldung: Illegales Zeichen im Pfad.) Wie @Tobisfr schon sagt ist es besser hier auf andere Tools auszuweichen die den Namen extrahieren oder du stellst mal eine Demo-Datei zur Verfügung ! Sonst wird das hier eine Odysee, denn es kommt hier sehr auf Details an!

Grüße Uwe
colinardo
colinardo 28.02.2014 um 11:46:54 Uhr
Goto Top
Hab den Code anhand deiner Datei mal aktualisiert, s.o.
TASKnet
TASKnet 28.02.2014 um 12:15:23 Uhr
Goto Top
Super, herzlichen Dank, funktioniert.