grailbio / go-netdicom Goto Github PK
View Code? Open in Web Editor NEWDICOM network protocol library for golang
License: Apache License 2.0
DICOM network protocol library for golang
License: Apache License 2.0
Currently, ConnectionState
structs are being passed, but is there a reason for this? I actually have a reason for needing a net.Conn object instead.
Hello! When i send cyrillic symbols from Weasis viewer in C-FIND request (ex. "привет") in SCP i receive: 2021/02/09 17:53:42 CFind: filter (0010,0010)[PatientName] PN [??????] <----
How to report to SCU use fo example ISO IR 192?
First of all, thank you for sharing fantastic ideas in here.
I met the issue when I tried to communicate with our existing PACS server.
I think the code should produce .dcm file appropriately but it wasn't.
I used your sample code "sampleserver.go" for test.
I got bytes array from the server and it seems good.
(Which is finely working in python, pynetdicom)
But sadly go-netdicom is not working properly.
I attach the bytes array i got.
Please review this issue.
go version: 1.12.7
repro steps:
package main
import(
"fmt"
"github.com/grailbio/go-netdicom"
"github.com/grailbio/go-netdicom/dimse"
)
func main() {
s, err := netdicom.NewServiceProvider(netdicom.ServiceProviderParams{CEcho: cEcho}, ":3000")
if err != nil {
panic(err)
}
s.Run()
}
func cEcho(conn netdicom.ConnectionState) dimse.Status {
fmt.Println("C-ECHO call")
return dimse.Success
}
go mod init foo
go build .
result:
go: finding github.com/grailbio/go-netdicom latest
go: finding github.com/grailbio/go-netdicom/dimse latest
go: finding github.com/grailbio/go-dicom v0.0.0
go: github.com/grailbio/[email protected]: unknown revision v0.0.0
go: error loading module requirements
For the last few days I've been trying to get C-GET working, without much luck.
I've read both this and your fork of go-dicom pretty solidly and am still having issues.
I'm currently running against DCM4CHEE-ARC, and C-GET using their getscu tool is working correctly against the archive. However the C-GET callback in my app never runs and I now always get failed sub-operations. Any help in where I'm going wrong would be appreciated.
I've tried specifying a tighter group of transfer syntaxes and have similar issues, just without the Abstract syntax rejectio warnings.
CODE: https://gist.github.com/Ruxton/7d43a5dac4aff765ee9ddf1a29f1f524
OUTPUT:
[11:41:23][ruxton@cyclops:dcom] $ go run newmain.go -v=1
2017/11/08 11:42:04 Connecting to 192.168.99.100:11112
Study - 1.3.46.670589.6.1.0.22521044.2013081908062602
E1108 11:42:04.954217 88294 contextmanager.go:215] Abstract syntax 1.2.840.10008.5.1.4.1.1.77.1.1.1[Video Endoscopic Image Storage], transfer syntax 1.2.840.10008.1.2[Implicit VR Little Endian] was rejected by the server: Provider rejection (transfer syntax not supported)
E1108 11:42:04.955475 88294 contextmanager.go:215] Abstract syntax 1.2.840.10008.5.1.4.1.1.77.1.2.1[Video Microscopic Image Storage], transfer syntax 1.2.840.10008.1.2[Implicit VR Little Endian] was rejected by the server: Provider rejection (transfer syntax not supported)
E1108 11:42:04.955541 88294 contextmanager.go:215] Abstract syntax 1.2.840.10008.5.1.4.1.1.77.1.4.1[Video Photographic Image Storage], transfer syntax 1.2.840.10008.1.2[Implicit VR Little Endian] was rejected by the server: Provider rejection (transfer syntax not supported)
E1108 11:42:04.955934 88294 contextmanager.go:215] Abstract syntax 1.2.840.10008.5.1.4.43.1[Generic Implant Template Storage], transfer syntax 1.2.840.10008.1.2[Implicit VR Little Endian] was rejected by the server: Provider rejection (abstract syntax not supported)
E1108 11:42:04.955961 88294 contextmanager.go:215] Abstract syntax 1.2.840.10008.5.1.4.44.1[Implant Assembly Template Storage], transfer syntax 1.2.840.10008.1.2[Implicit VR Little Endian] was rejected by the server: Provider rejection (abstract syntax not supported)
E1108 11:42:04.955972 88294 contextmanager.go:215] Abstract syntax 1.2.840.10008.5.1.4.45.1[Implant Template Group Storage], transfer syntax 1.2.840.10008.1.2[Implicit VR Little Endian] was rejected by the server: Provider rejection (abstract syntax not supported)
I1108 11:42:04.955981 88294 contextmanager.go:247] Received associate response, #contexts:122, maxPDU:16378, implclass:1.2.40.0.13.1.3, version:dcm4che-5.10.5
I1108 11:42:04.956053 88294 servicedispatcher.go:72] Start provider command 124
I1108 11:42:04.956065 88294 servicedispatcher.go:41] Sending DIMSE message: CGetRq{AffectedSOPClassUID:1.2.840.10008.5.1.4.1.2.2.3 MessageID:124 Priority:0 CommandDataSetType:1}} &{0xc420018420 {0 0} map[124:0xc42051e320] map[1:0x135ed0]}
I1108 11:42:04.956169 88294 statemachine.go:329] Send DIMSE msg: CGetRq{AffectedSOPClassUID:1.2.840.10008.5.1.4.1.2.2.3 MessageID:124 Priority:0 CommandDataSetType:1}}
I1108 11:42:04.956268 88294 statemachine.go:335] Send DIMSE data of 68b, command: CGetRq{AffectedSOPClassUID:1.2.840.10008.5.1.4.1.2.2.3 MessageID:124 Priority:0 CommandDataSetType:1}}
I1108 11:42:04.993592 88294 servicedispatcher.go:113] Forwarding command to existing command: CGetRsp{AffectedSOPClassUID:1.2.840.10008.5.1.4.1.2.2.3 MessageIDBeingRespondedTo:124 CommandDataSetType:257 NumberOfRemainingSuboperations:8 NumberOfCompletedSuboperations:0 NumberOfFailedSuboperations:0 NumberOfWarningSuboperations:0 Status:{65280 }}}%!(EXTRA *netdicom.serviceCommandState=&{0xc420290cc0 124 {11 1.2.840.10008.5.1.4.1.2.2.3 1.2.840.10008.1.2 0} 0xc4202ac000 0xc4202c8000})
I1108 11:42:04.993763 88294 servicedispatcher.go:115] Done forwarding command to existing command: CGetRsp{AffectedSOPClassUID:1.2.840.10008.5.1.4.1.2.2.3 MessageIDBeingRespondedTo:124 CommandDataSetType:257 NumberOfRemainingSuboperations:8 NumberOfCompletedSuboperations:0 NumberOfFailedSuboperations:0 NumberOfWarningSuboperations:0 Status:{65280 }}}%!(EXTRA *netdicom.serviceCommandState=&{0xc420290cc0 124 {11 1.2.840.10008.5.1.4.1.2.2.3 1.2.840.10008.1.2 0} 0xc4202ac000 0xc4202c8000})
I1108 11:42:05.013633 88294 servicedispatcher.go:113] Forwarding command to existing command: CGetRsp{AffectedSOPClassUID:1.2.840.10008.5.1.4.1.2.2.3 MessageIDBeingRespondedTo:124 CommandDataSetType:0 NumberOfRemainingSuboperations:0 NumberOfCompletedSuboperations:0 NumberOfFailedSuboperations:8 NumberOfWarningSuboperations:0 Status:{42754 }}}%!(EXTRA *netdicom.serviceCommandState=&{0xc420290cc0 124 {11 1.2.840.10008.5.1.4.1.2.2.3 1.2.840.10008.1.2 0} 0xc4202ac000 0xc4202c8000})
I1108 11:42:05.013680 88294 servicedispatcher.go:115] Done forwarding command to existing command: CGetRsp{AffectedSOPClassUID:1.2.840.10008.5.1.4.1.2.2.3 MessageIDBeingRespondedTo:124 CommandDataSetType:0 NumberOfRemainingSuboperations:0 NumberOfCompletedSuboperations:0 NumberOfFailedSuboperations:8 NumberOfWarningSuboperations:0 Status:{42754 }}}%!(EXTRA *netdicom.serviceCommandState=&{0xc420290cc0 124 {11 1.2.840.10008.5.1.4.1.2.2.3 1.2.840.10008.1.2 0} 0xc4202ac000 0xc4202c8000})
I1108 11:42:05.013719 88294 servicedispatcher.go:78] Finish provider command 124
panic: CGetRsp{AffectedSOPClassUID:1.2.840.10008.5.1.4.1.2.2.3 MessageIDBeingRespondedTo:124 CommandDataSetType:0 NumberOfRemainingSuboperations:0 NumberOfCompletedSuboperations:0 NumberOfFailedSuboperations:8 NumberOfWarningSuboperations:0 Status:{42754 }}}
goroutine 1 [running]:
panic(0x364c40, 0xc42032e0f0)
/usr/local/Cellar/go/1.7.4_1/libexec/src/runtime/panic.go:500 +0x1a1
github.com/grailbio/go-netdicom.(*ServiceUser).CGet(0xc420011500, 0x1, 0xc420175e50, 0x1, 0x1, 0xf7c380, 0x0, 0x0)
/Users/ruxton/AppsByGreg/go/src/github.com/grailbio/go-netdicom/serviceuser.go:451 +0x4e9
main.getStudy(0x3c2049, 0x2d)
/Users/ruxton/AppsByGreg/go/src/github.com/***/dcom/newmain.go:55 +0x1e0
main.main()
/Users/ruxton/AppsByGreg/go/src/github.com/***/dcom/newmain.go:66 +0x8b
exit status 2
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.