package service import ( "encoding/json" "log/slog" ) import ( "google.golang.org/protobuf/types/known/structpb" "gorm.io/datatypes" ) import ( "protocol-server/models" pb "protocol-server/rpc_idl/dr_protocol_pb" ) func json2Struct(o *datatypes.JSON) *structpb.Struct { var tempMap map[string]interface{} err := json.Unmarshal(*o, &tempMap) if err != nil { slog.Error("Error unmarshalling datatypes.JSON to map", "err", err) return nilStruct } protoStruct, err := structpb.NewStruct(tempMap) if err != nil { slog.Error("Error creating proto struct", "err", err) return nilStruct } return protoStruct } func view2pb(view *models.View) *pb.View { return &pb.View{ InternalId: view.InternalID, ViewId: view.ViewID, ViewName: view.ViewName, ViewNameLocal: view.ViewNameLocal, ViewOtherName: view.ViewOtherName, ViewDescription: view.ViewDescription, ViewPosition: view.ViewPosition, Application: view.Application, AnatomicRegion: view.AnatomicRegion, PatientType: view.PatientType, BodyPartId: view.BodyPartID, ViewIconName: view.ViewIconName, ViewBigIconName: view.ViewBigIconName, ViewCoachName: view.ViewCoachName, Modality: view.Modality, WorkStationId: int32(view.WorkStationId), AprId: view.AprId, ImgProcId: view.ImgProcId, ConfigObject: json2Struct(&view.ConfigObject), Sort: int32(view.Sort), IsEnabled: view.IsEnabled, Product: view.Product, IsPreInstall: view.IsPreInstall, } } func apr2pb(apr *models.Apr) *pb.AprReply { return &pb.AprReply{ AprId: apr.AprID, AprName: apr.AprName, AprDescription: apr.AprDescription, PatientType: apr.PatientType, BodyPartId: apr.BodyPartID, ViewPosition: apr.ViewPosition, Category: apr.Category, Modality: apr.Modality, Sub: []*pb.AprSub{}, Sort: int32(apr.Sort), IsEnabled: apr.IsEnabled, Product: apr.Product, IsPreInstall: apr.IsPreInstall, } } func aprSub2pb(apr *models.AprSub) *pb.AprSub { return &pb.AprSub{ WorkStationId: int32(apr.WorkStationID), PatientSize: apr.PatientSize, ConfigObject: json2Struct(&apr.ConfigObject), } }