/
main.go
53 lines (43 loc) · 1.02 KB
/
main.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
package main
import (
"flag"
"fmt"
"log"
"github.com/suyashkumar/dicom"
"github.com/suyashkumar/dicom/pkg/tag"
)
type info struct {
studyDate, name, id string
}
func (i *info) loadInfo(data dicom.Dataset) {
for _, elem := range data.Elements {
if elem.Tag == tag.PatientName {
i.name = fmt.Sprintf("%v", elem.Value)
} else if elem.Tag == tag.PatientID {
i.id = fmt.Sprintf("%v", elem.Value)
} else if elem.Tag == tag.StudyDate {
i.studyDate = fmt.Sprintf("%v", elem.Value)
}
}
}
func main() {
showHeader := true
flag.BoolVar(&showHeader, "header", false, "Show header information")
flag.Parse()
if len(flag.Args()) != 1 {
log.Println("Must pass a parameter - the file to extract information")
return
}
path := flag.Arg(0)
data, err := dicom.ParseFile(path, nil)
if err != nil {
log.Println("Error parsing " + path)
return
}
info := &info{}
info.loadInfo(data)
if showHeader {
fmt.Printf("PatientId,PatientName,StudyDate\n")
}
fmt.Printf("%s,%s,%s\n", info.id, info.name, info.studyDate)
}