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 }