Skip to content

Instantly share code, notes, and snippets.

@Ruxton
Created November 7, 2017 08:12
Show Gist options
  • Save Ruxton/7d43a5dac4aff765ee9ddf1a29f1f524 to your computer and use it in GitHub Desktop.
Save Ruxton/7d43a5dac4aff765ee9ddf1a29f1f524 to your computer and use it in GitHub Desktop.
package main
import (
"github.com/grailbio/go-dicom"
"github.com/grailbio/go-dicom/dicomtag"
"github.com/grailbio/go-netdicom"
"github.com/grailbio/go-netdicom/dimse"
"github.com/grailbio/go-netdicom/sopclass"
"github.com/ruxton/term"
"fmt"
"log"
newflag "github.com/juju/gnuflag"
"flag"
"v.io/x/lib/vlog"
)
var aeTitleFlag = newflag.String("aetitle","DCM4CHEE","")
var remoteAETitleFlag = newflag.String("remoteaetitle","Greg","")
var serverFlag = newflag.String("server","192.168.99.100:11112","")
var su *netdicom.ServiceUser
var sopClasses = append(sopclass.QRFindClasses,sopclass.QRGetClasses...)
func newServiceUser(sopClasses []string) *netdicom.ServiceUser {
su, err := netdicom.NewServiceUser(netdicom.ServiceUserParams{
CalledAETitle: *aeTitleFlag,
CallingAETitle: *remoteAETitleFlag,
SOPClasses: sopClasses,
})
if err != nil {
log.Fatal(err)
}
log.Printf("Connecting to %s\n", *serverFlag)
su.Connect(*serverFlag)
return su
}
func getStudy(StudyInstanceUID string) {
term.OutputMessage(fmt.Sprintf(term.Green+"Study - %s\n"+term.Reset,StudyInstanceUID))
cgetCallback := func(transferSyntaxUID, SOPClassUID, sopInstanceUID string, data []byte) (dimse.Status) {
log.Println("CALLBACK")
log.Println(transferSyntaxUID)
log.Println(sopInstanceUID)
return dimse.Success
}
args := []*dicom.Element{
dicom.MustNewElement(dicomtag.StudyInstanceUID, StudyInstanceUID),
}
err := su.CGet(netdicom.QRLevelStudy, args, cgetCallback)
if(err != nil) {
term.OutputErrorf("Unable to fetch Sudy - %s", err.Error())
}
}
func main() {
su = newServiceUser(sopClasses)
newflag.Parse(false)
flag.Parse()
vlog.ConfigureLibraryLoggerFromFlags()
getStudy("1.3.46.670589.6.1.0.22521044.2013081908062602")
su.Release()
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment