|
@@ -0,0 +1,80 @@
|
|
|
+package service
|
|
|
+
|
|
|
+import (
|
|
|
+ "context"
|
|
|
+ "log/slog"
|
|
|
+)
|
|
|
+import (
|
|
|
+ "google.golang.org/grpc"
|
|
|
+ "google.golang.org/grpc/credentials/insecure"
|
|
|
+)
|
|
|
+
|
|
|
+import (
|
|
|
+ "auth-server/common"
|
|
|
+ pb "auth-server/rpc_idl/dr_dcmtk_pb"
|
|
|
+)
|
|
|
+
|
|
|
+var DcmtkService *Dcmtk
|
|
|
+
|
|
|
+func init() {
|
|
|
+ DcmtkService = new(Dcmtk)
|
|
|
+}
|
|
|
+
|
|
|
+type Dcmtk struct {
|
|
|
+ basicClient pb.BasicClient
|
|
|
+ dcmClient pb.DcmClient
|
|
|
+}
|
|
|
+
|
|
|
+func (s *Dcmtk) Setup() {
|
|
|
+ conn, err := grpc.NewClient(common.ServerConfig.Dcmtk, grpc.WithTransportCredentials(insecure.NewCredentials()))
|
|
|
+ if err != nil {
|
|
|
+ slog.Error("NewClient failed:", err)
|
|
|
+ panic(err)
|
|
|
+ }
|
|
|
+ slog.Info("dcmtk conn success", "conn", conn.GetState())
|
|
|
+
|
|
|
+ s.basicClient = pb.NewBasicClient(conn)
|
|
|
+ s.dcmClient = pb.NewDcmClient(conn)
|
|
|
+}
|
|
|
+
|
|
|
+func (s *Dcmtk) GetSoftwareInfo() *pb.SoftwareInfoReply {
|
|
|
+ slog.Info("[rpc]SoftwareInfo...")
|
|
|
+ r, err := s.basicClient.SoftwareInfo(context.Background(), &pb.EmptyRequest{})
|
|
|
+ if err != nil {
|
|
|
+ slog.Error("[rpc]SoftwareInfo failed:", err)
|
|
|
+ return &pb.SoftwareInfoReply{
|
|
|
+ Module: "",
|
|
|
+ Desc: "",
|
|
|
+ Build: "",
|
|
|
+ Version: "",
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return r
|
|
|
+}
|
|
|
+
|
|
|
+func (s *Dcmtk) GenerateUniqueIdentifier(ctx context.Context, flag string, number int32) (*pb.UidReply, error) {
|
|
|
+ slog.Info("[rpc]GenerateUniqueIdentifier...")
|
|
|
+ SiteUidRoot := "1.2.276.0.1000000.5"
|
|
|
+ uidRoot := SiteUidRoot
|
|
|
+ switch flag {
|
|
|
+ case "study":
|
|
|
+ uidRoot += ".1.2"
|
|
|
+ case "series":
|
|
|
+ uidRoot += ".1.3"
|
|
|
+ case "sop":
|
|
|
+ uidRoot += ".1.4"
|
|
|
+ default:
|
|
|
+ return nil, common.InvalidParam.Desc("invalid param 'flag'")
|
|
|
+ }
|
|
|
+ if number < 1 || number > 10 {
|
|
|
+ return nil, common.InvalidParam.Desc("number must be between 1 and 10")
|
|
|
+ }
|
|
|
+ r, err := s.dcmClient.GenerateUniqueIdentifier(ctx, &pb.UidRootRequest{
|
|
|
+ UidRoot: uidRoot,
|
|
|
+ Number: number,
|
|
|
+ })
|
|
|
+ if err != nil {
|
|
|
+ slog.Error("[rpc]GenerateUniqueIdentifier failed:", err)
|
|
|
+ }
|
|
|
+ return r, err
|
|
|
+}
|