shao 5 päivää sitten
vanhempi
commit
5efb772b59

+ 37 - 2
dr_protocol_idl.proto

@@ -20,6 +20,7 @@ message SoftwareInfoReply {
 service Protocol {
   rpc GetPatientType (PatientTypeRequest) returns (PatientTypeReply) {}
   rpc GetBodyPart (BodyPartRequest) returns (BodyPartReply) {}
+  rpc GetProcedure (ProcedureRequest) returns (ProcedureReply) {}
 }
 
 message PatientTypeRequest {
@@ -45,7 +46,7 @@ message PatientTypeReply {
 
 message BodyPartRequest {
   optional string patient_type = 1;
-  optional string category = 2;
+  optional string modality = 2;
   optional bool is_enabled = 3;
   optional bool is_pre_install = 4;
 }
@@ -57,7 +58,7 @@ message BodyPart {
   string body_part_local = 4;
   string body_part_description = 5;
   string patient_type = 6;
-  string category = 7;
+  string modality = 7;
   int32  sort = 8;
   bool   is_enabled = 9;
   string product = 10;
@@ -67,4 +68,38 @@ message BodyPart {
 
 message BodyPartReply {
   repeated BodyPart body_part_list = 1;
+}
+
+message ProcedureRequest {
+  optional string patient_type = 1;
+  optional string body_part_id = 2;
+  optional string modality = 3;
+  optional bool is_enabled = 4;
+  optional bool is_pre_install = 5;
+}
+
+message Procedure {
+  uint64 id = 1;
+  string procedure_id = 2;
+  string procedure_code = 3;
+  string procedure_name = 4;
+  string procedure_name_local = 5;
+  string procedure_other_name = 6;
+  string procedure_description = 7;
+  string procedure_description_local = 8;
+  string patient_type = 9;
+  string body_part_id = 10;
+  string procedure_type = 11;
+  bool fast_search = 12;
+  string protocol_laterality = 13;
+  string procedure_category = 14;
+  string modality = 15;
+  int32 sort = 16;
+  bool is_enabled = 17;
+  string product = 18;
+  bool is_pre_install = 19;
+}
+
+message ProcedureReply {
+  repeated Procedure procedure_list = 1;
 }

+ 383 - 28
dr_protocol_pb/dr_protocol_idl.pb.go

@@ -332,7 +332,7 @@ func (x *PatientTypeReply) GetPatientTypeList() []*PatientType {
 type BodyPartRequest struct {
 	state         protoimpl.MessageState `protogen:"open.v1"`
 	PatientType   *string                `protobuf:"bytes,1,opt,name=patient_type,json=patientType,proto3,oneof" json:"patient_type,omitempty"`
-	Category      *string                `protobuf:"bytes,2,opt,name=category,proto3,oneof" json:"category,omitempty"`
+	Modality      *string                `protobuf:"bytes,2,opt,name=modality,proto3,oneof" json:"modality,omitempty"`
 	IsEnabled     *bool                  `protobuf:"varint,3,opt,name=is_enabled,json=isEnabled,proto3,oneof" json:"is_enabled,omitempty"`
 	IsPreInstall  *bool                  `protobuf:"varint,4,opt,name=is_pre_install,json=isPreInstall,proto3,oneof" json:"is_pre_install,omitempty"`
 	unknownFields protoimpl.UnknownFields
@@ -376,9 +376,9 @@ func (x *BodyPartRequest) GetPatientType() string {
 	return ""
 }
 
-func (x *BodyPartRequest) GetCategory() string {
-	if x != nil && x.Category != nil {
-		return *x.Category
+func (x *BodyPartRequest) GetModality() string {
+	if x != nil && x.Modality != nil {
+		return *x.Modality
 	}
 	return ""
 }
@@ -405,7 +405,7 @@ type BodyPart struct {
 	BodyPartLocal       string                 `protobuf:"bytes,4,opt,name=body_part_local,json=bodyPartLocal,proto3" json:"body_part_local,omitempty"`
 	BodyPartDescription string                 `protobuf:"bytes,5,opt,name=body_part_description,json=bodyPartDescription,proto3" json:"body_part_description,omitempty"`
 	PatientType         string                 `protobuf:"bytes,6,opt,name=patient_type,json=patientType,proto3" json:"patient_type,omitempty"`
-	Category            string                 `protobuf:"bytes,7,opt,name=category,proto3" json:"category,omitempty"`
+	Modality            string                 `protobuf:"bytes,7,opt,name=modality,proto3" json:"modality,omitempty"`
 	Sort                int32                  `protobuf:"varint,8,opt,name=sort,proto3" json:"sort,omitempty"`
 	IsEnabled           bool                   `protobuf:"varint,9,opt,name=is_enabled,json=isEnabled,proto3" json:"is_enabled,omitempty"`
 	Product             string                 `protobuf:"bytes,10,opt,name=product,proto3" json:"product,omitempty"`
@@ -486,9 +486,9 @@ func (x *BodyPart) GetPatientType() string {
 	return ""
 }
 
-func (x *BodyPart) GetCategory() string {
+func (x *BodyPart) GetModality() string {
 	if x != nil {
-		return x.Category
+		return x.Modality
 	}
 	return ""
 }
@@ -565,6 +565,314 @@ func (x *BodyPartReply) GetBodyPartList() []*BodyPart {
 	return nil
 }
 
+type ProcedureRequest struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	PatientType   *string                `protobuf:"bytes,1,opt,name=patient_type,json=patientType,proto3,oneof" json:"patient_type,omitempty"`
+	BodyPartId    *string                `protobuf:"bytes,2,opt,name=body_part_id,json=bodyPartId,proto3,oneof" json:"body_part_id,omitempty"`
+	Modality      *string                `protobuf:"bytes,3,opt,name=modality,proto3,oneof" json:"modality,omitempty"`
+	IsEnabled     *bool                  `protobuf:"varint,4,opt,name=is_enabled,json=isEnabled,proto3,oneof" json:"is_enabled,omitempty"`
+	IsPreInstall  *bool                  `protobuf:"varint,5,opt,name=is_pre_install,json=isPreInstall,proto3,oneof" json:"is_pre_install,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *ProcedureRequest) Reset() {
+	*x = ProcedureRequest{}
+	mi := &file_dr_protocol_idl_proto_msgTypes[8]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *ProcedureRequest) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ProcedureRequest) ProtoMessage() {}
+
+func (x *ProcedureRequest) ProtoReflect() protoreflect.Message {
+	mi := &file_dr_protocol_idl_proto_msgTypes[8]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use ProcedureRequest.ProtoReflect.Descriptor instead.
+func (*ProcedureRequest) Descriptor() ([]byte, []int) {
+	return file_dr_protocol_idl_proto_rawDescGZIP(), []int{8}
+}
+
+func (x *ProcedureRequest) GetPatientType() string {
+	if x != nil && x.PatientType != nil {
+		return *x.PatientType
+	}
+	return ""
+}
+
+func (x *ProcedureRequest) GetBodyPartId() string {
+	if x != nil && x.BodyPartId != nil {
+		return *x.BodyPartId
+	}
+	return ""
+}
+
+func (x *ProcedureRequest) GetModality() string {
+	if x != nil && x.Modality != nil {
+		return *x.Modality
+	}
+	return ""
+}
+
+func (x *ProcedureRequest) GetIsEnabled() bool {
+	if x != nil && x.IsEnabled != nil {
+		return *x.IsEnabled
+	}
+	return false
+}
+
+func (x *ProcedureRequest) GetIsPreInstall() bool {
+	if x != nil && x.IsPreInstall != nil {
+		return *x.IsPreInstall
+	}
+	return false
+}
+
+type Procedure struct {
+	state                     protoimpl.MessageState `protogen:"open.v1"`
+	Id                        uint64                 `protobuf:"varint,1,opt,name=id,proto3" json:"id,omitempty"`
+	ProcedureId               string                 `protobuf:"bytes,2,opt,name=procedure_id,json=procedureId,proto3" json:"procedure_id,omitempty"`
+	ProcedureCode             string                 `protobuf:"bytes,3,opt,name=procedure_code,json=procedureCode,proto3" json:"procedure_code,omitempty"`
+	ProcedureName             string                 `protobuf:"bytes,4,opt,name=procedure_name,json=procedureName,proto3" json:"procedure_name,omitempty"`
+	ProcedureNameLocal        string                 `protobuf:"bytes,5,opt,name=procedure_name_local,json=procedureNameLocal,proto3" json:"procedure_name_local,omitempty"`
+	ProcedureOtherName        string                 `protobuf:"bytes,6,opt,name=procedure_other_name,json=procedureOtherName,proto3" json:"procedure_other_name,omitempty"`
+	ProcedureDescription      string                 `protobuf:"bytes,7,opt,name=procedure_description,json=procedureDescription,proto3" json:"procedure_description,omitempty"`
+	ProcedureDescriptionLocal string                 `protobuf:"bytes,8,opt,name=procedure_description_local,json=procedureDescriptionLocal,proto3" json:"procedure_description_local,omitempty"`
+	PatientType               string                 `protobuf:"bytes,9,opt,name=patient_type,json=patientType,proto3" json:"patient_type,omitempty"`
+	BodyPartId                string                 `protobuf:"bytes,10,opt,name=body_part_id,json=bodyPartId,proto3" json:"body_part_id,omitempty"`
+	ProcedureType             string                 `protobuf:"bytes,11,opt,name=procedure_type,json=procedureType,proto3" json:"procedure_type,omitempty"`
+	FastSearch                bool                   `protobuf:"varint,12,opt,name=fast_search,json=fastSearch,proto3" json:"fast_search,omitempty"`
+	ProtocolLaterality        string                 `protobuf:"bytes,13,opt,name=protocol_laterality,json=protocolLaterality,proto3" json:"protocol_laterality,omitempty"`
+	ProcedureCategory         string                 `protobuf:"bytes,14,opt,name=procedure_category,json=procedureCategory,proto3" json:"procedure_category,omitempty"`
+	Modality                  string                 `protobuf:"bytes,15,opt,name=modality,proto3" json:"modality,omitempty"`
+	Sort                      int32                  `protobuf:"varint,16,opt,name=sort,proto3" json:"sort,omitempty"`
+	IsEnabled                 bool                   `protobuf:"varint,17,opt,name=is_enabled,json=isEnabled,proto3" json:"is_enabled,omitempty"`
+	Product                   string                 `protobuf:"bytes,18,opt,name=product,proto3" json:"product,omitempty"`
+	IsPreInstall              bool                   `protobuf:"varint,19,opt,name=is_pre_install,json=isPreInstall,proto3" json:"is_pre_install,omitempty"`
+	unknownFields             protoimpl.UnknownFields
+	sizeCache                 protoimpl.SizeCache
+}
+
+func (x *Procedure) Reset() {
+	*x = Procedure{}
+	mi := &file_dr_protocol_idl_proto_msgTypes[9]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *Procedure) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*Procedure) ProtoMessage() {}
+
+func (x *Procedure) ProtoReflect() protoreflect.Message {
+	mi := &file_dr_protocol_idl_proto_msgTypes[9]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use Procedure.ProtoReflect.Descriptor instead.
+func (*Procedure) Descriptor() ([]byte, []int) {
+	return file_dr_protocol_idl_proto_rawDescGZIP(), []int{9}
+}
+
+func (x *Procedure) GetId() uint64 {
+	if x != nil {
+		return x.Id
+	}
+	return 0
+}
+
+func (x *Procedure) GetProcedureId() string {
+	if x != nil {
+		return x.ProcedureId
+	}
+	return ""
+}
+
+func (x *Procedure) GetProcedureCode() string {
+	if x != nil {
+		return x.ProcedureCode
+	}
+	return ""
+}
+
+func (x *Procedure) GetProcedureName() string {
+	if x != nil {
+		return x.ProcedureName
+	}
+	return ""
+}
+
+func (x *Procedure) GetProcedureNameLocal() string {
+	if x != nil {
+		return x.ProcedureNameLocal
+	}
+	return ""
+}
+
+func (x *Procedure) GetProcedureOtherName() string {
+	if x != nil {
+		return x.ProcedureOtherName
+	}
+	return ""
+}
+
+func (x *Procedure) GetProcedureDescription() string {
+	if x != nil {
+		return x.ProcedureDescription
+	}
+	return ""
+}
+
+func (x *Procedure) GetProcedureDescriptionLocal() string {
+	if x != nil {
+		return x.ProcedureDescriptionLocal
+	}
+	return ""
+}
+
+func (x *Procedure) GetPatientType() string {
+	if x != nil {
+		return x.PatientType
+	}
+	return ""
+}
+
+func (x *Procedure) GetBodyPartId() string {
+	if x != nil {
+		return x.BodyPartId
+	}
+	return ""
+}
+
+func (x *Procedure) GetProcedureType() string {
+	if x != nil {
+		return x.ProcedureType
+	}
+	return ""
+}
+
+func (x *Procedure) GetFastSearch() bool {
+	if x != nil {
+		return x.FastSearch
+	}
+	return false
+}
+
+func (x *Procedure) GetProtocolLaterality() string {
+	if x != nil {
+		return x.ProtocolLaterality
+	}
+	return ""
+}
+
+func (x *Procedure) GetProcedureCategory() string {
+	if x != nil {
+		return x.ProcedureCategory
+	}
+	return ""
+}
+
+func (x *Procedure) GetModality() string {
+	if x != nil {
+		return x.Modality
+	}
+	return ""
+}
+
+func (x *Procedure) GetSort() int32 {
+	if x != nil {
+		return x.Sort
+	}
+	return 0
+}
+
+func (x *Procedure) GetIsEnabled() bool {
+	if x != nil {
+		return x.IsEnabled
+	}
+	return false
+}
+
+func (x *Procedure) GetProduct() string {
+	if x != nil {
+		return x.Product
+	}
+	return ""
+}
+
+func (x *Procedure) GetIsPreInstall() bool {
+	if x != nil {
+		return x.IsPreInstall
+	}
+	return false
+}
+
+type ProcedureReply struct {
+	state         protoimpl.MessageState `protogen:"open.v1"`
+	ProcedureList []*Procedure           `protobuf:"bytes,1,rep,name=procedure_list,json=procedureList,proto3" json:"procedure_list,omitempty"`
+	unknownFields protoimpl.UnknownFields
+	sizeCache     protoimpl.SizeCache
+}
+
+func (x *ProcedureReply) Reset() {
+	*x = ProcedureReply{}
+	mi := &file_dr_protocol_idl_proto_msgTypes[10]
+	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+	ms.StoreMessageInfo(mi)
+}
+
+func (x *ProcedureReply) String() string {
+	return protoimpl.X.MessageStringOf(x)
+}
+
+func (*ProcedureReply) ProtoMessage() {}
+
+func (x *ProcedureReply) ProtoReflect() protoreflect.Message {
+	mi := &file_dr_protocol_idl_proto_msgTypes[10]
+	if x != nil {
+		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
+		if ms.LoadMessageInfo() == nil {
+			ms.StoreMessageInfo(mi)
+		}
+		return ms
+	}
+	return mi.MessageOf(x)
+}
+
+// Deprecated: Use ProcedureReply.ProtoReflect.Descriptor instead.
+func (*ProcedureReply) Descriptor() ([]byte, []int) {
+	return file_dr_protocol_idl_proto_rawDescGZIP(), []int{10}
+}
+
+func (x *ProcedureReply) GetProcedureList() []*Procedure {
+	if x != nil {
+		return x.ProcedureList
+	}
+	return nil
+}
+
 var File_dr_protocol_idl_proto protoreflect.FileDescriptor
 
 const file_dr_protocol_idl_proto_rawDesc = "" +
@@ -597,12 +905,12 @@ const file_dr_protocol_idl_proto_rawDesc = "" +
 	"\x11patient_type_list\x18\x01 \x03(\v2\x18.dr.protocol.PatientTypeR\x0fpatientTypeList\"\xe9\x01\n" +
 	"\x0fBodyPartRequest\x12&\n" +
 	"\fpatient_type\x18\x01 \x01(\tH\x00R\vpatientType\x88\x01\x01\x12\x1f\n" +
-	"\bcategory\x18\x02 \x01(\tH\x01R\bcategory\x88\x01\x01\x12\"\n" +
+	"\bmodality\x18\x02 \x01(\tH\x01R\bmodality\x88\x01\x01\x12\"\n" +
 	"\n" +
 	"is_enabled\x18\x03 \x01(\bH\x02R\tisEnabled\x88\x01\x01\x12)\n" +
 	"\x0eis_pre_install\x18\x04 \x01(\bH\x03R\fisPreInstall\x88\x01\x01B\x0f\n" +
 	"\r_patient_typeB\v\n" +
-	"\t_categoryB\r\n" +
+	"\t_modalityB\r\n" +
 	"\v_is_enabledB\x11\n" +
 	"\x0f_is_pre_install\"\xf0\x02\n" +
 	"\bBodyPart\x12\x0e\n" +
@@ -613,7 +921,7 @@ const file_dr_protocol_idl_proto_rawDesc = "" +
 	"\x0fbody_part_local\x18\x04 \x01(\tR\rbodyPartLocal\x122\n" +
 	"\x15body_part_description\x18\x05 \x01(\tR\x13bodyPartDescription\x12!\n" +
 	"\fpatient_type\x18\x06 \x01(\tR\vpatientType\x12\x1a\n" +
-	"\bcategory\x18\a \x01(\tR\bcategory\x12\x12\n" +
+	"\bmodality\x18\a \x01(\tR\bmodality\x12\x12\n" +
 	"\x04sort\x18\b \x01(\x05R\x04sort\x12\x1d\n" +
 	"\n" +
 	"is_enabled\x18\t \x01(\bR\tisEnabled\x12\x18\n" +
@@ -621,12 +929,52 @@ const file_dr_protocol_idl_proto_rawDesc = "" +
 	" \x01(\tR\aproduct\x12$\n" +
 	"\x0eis_pre_install\x18\v \x01(\bR\fisPreInstall\"L\n" +
 	"\rBodyPartReply\x12;\n" +
-	"\x0ebody_part_list\x18\x01 \x03(\v2\x15.dr.protocol.BodyPartR\fbodyPartList2T\n" +
+	"\x0ebody_part_list\x18\x01 \x03(\v2\x15.dr.protocol.BodyPartR\fbodyPartList\"\xa2\x02\n" +
+	"\x10ProcedureRequest\x12&\n" +
+	"\fpatient_type\x18\x01 \x01(\tH\x00R\vpatientType\x88\x01\x01\x12%\n" +
+	"\fbody_part_id\x18\x02 \x01(\tH\x01R\n" +
+	"bodyPartId\x88\x01\x01\x12\x1f\n" +
+	"\bmodality\x18\x03 \x01(\tH\x02R\bmodality\x88\x01\x01\x12\"\n" +
+	"\n" +
+	"is_enabled\x18\x04 \x01(\bH\x03R\tisEnabled\x88\x01\x01\x12)\n" +
+	"\x0eis_pre_install\x18\x05 \x01(\bH\x04R\fisPreInstall\x88\x01\x01B\x0f\n" +
+	"\r_patient_typeB\x0f\n" +
+	"\r_body_part_idB\v\n" +
+	"\t_modalityB\r\n" +
+	"\v_is_enabledB\x11\n" +
+	"\x0f_is_pre_install\"\xe1\x05\n" +
+	"\tProcedure\x12\x0e\n" +
+	"\x02id\x18\x01 \x01(\x04R\x02id\x12!\n" +
+	"\fprocedure_id\x18\x02 \x01(\tR\vprocedureId\x12%\n" +
+	"\x0eprocedure_code\x18\x03 \x01(\tR\rprocedureCode\x12%\n" +
+	"\x0eprocedure_name\x18\x04 \x01(\tR\rprocedureName\x120\n" +
+	"\x14procedure_name_local\x18\x05 \x01(\tR\x12procedureNameLocal\x120\n" +
+	"\x14procedure_other_name\x18\x06 \x01(\tR\x12procedureOtherName\x123\n" +
+	"\x15procedure_description\x18\a \x01(\tR\x14procedureDescription\x12>\n" +
+	"\x1bprocedure_description_local\x18\b \x01(\tR\x19procedureDescriptionLocal\x12!\n" +
+	"\fpatient_type\x18\t \x01(\tR\vpatientType\x12 \n" +
+	"\fbody_part_id\x18\n" +
+	" \x01(\tR\n" +
+	"bodyPartId\x12%\n" +
+	"\x0eprocedure_type\x18\v \x01(\tR\rprocedureType\x12\x1f\n" +
+	"\vfast_search\x18\f \x01(\bR\n" +
+	"fastSearch\x12/\n" +
+	"\x13protocol_laterality\x18\r \x01(\tR\x12protocolLaterality\x12-\n" +
+	"\x12procedure_category\x18\x0e \x01(\tR\x11procedureCategory\x12\x1a\n" +
+	"\bmodality\x18\x0f \x01(\tR\bmodality\x12\x12\n" +
+	"\x04sort\x18\x10 \x01(\x05R\x04sort\x12\x1d\n" +
+	"\n" +
+	"is_enabled\x18\x11 \x01(\bR\tisEnabled\x12\x18\n" +
+	"\aproduct\x18\x12 \x01(\tR\aproduct\x12$\n" +
+	"\x0eis_pre_install\x18\x13 \x01(\bR\fisPreInstall\"O\n" +
+	"\x0eProcedureReply\x12=\n" +
+	"\x0eprocedure_list\x18\x01 \x03(\v2\x16.dr.protocol.ProcedureR\rprocedureList2T\n" +
 	"\x05Basic\x12K\n" +
-	"\fSoftwareInfo\x12\x19.dr.protocol.EmptyRequest\x1a\x1e.dr.protocol.SoftwareInfoReply\"\x002\xa9\x01\n" +
+	"\fSoftwareInfo\x12\x19.dr.protocol.EmptyRequest\x1a\x1e.dr.protocol.SoftwareInfoReply\"\x002\xf7\x01\n" +
 	"\bProtocol\x12R\n" +
 	"\x0eGetPatientType\x12\x1f.dr.protocol.PatientTypeRequest\x1a\x1d.dr.protocol.PatientTypeReply\"\x00\x12I\n" +
-	"\vGetBodyPart\x12\x1c.dr.protocol.BodyPartRequest\x1a\x1a.dr.protocol.BodyPartReply\"\x00B\x11Z\x0fdr_protocol_pb/b\x06proto3"
+	"\vGetBodyPart\x12\x1c.dr.protocol.BodyPartRequest\x1a\x1a.dr.protocol.BodyPartReply\"\x00\x12L\n" +
+	"\fGetProcedure\x12\x1d.dr.protocol.ProcedureRequest\x1a\x1b.dr.protocol.ProcedureReply\"\x00B\x11Z\x0fdr_protocol_pb/b\x06proto3"
 
 var (
 	file_dr_protocol_idl_proto_rawDescOnce sync.Once
@@ -640,7 +988,7 @@ func file_dr_protocol_idl_proto_rawDescGZIP() []byte {
 	return file_dr_protocol_idl_proto_rawDescData
 }
 
-var file_dr_protocol_idl_proto_msgTypes = make([]protoimpl.MessageInfo, 8)
+var file_dr_protocol_idl_proto_msgTypes = make([]protoimpl.MessageInfo, 11)
 var file_dr_protocol_idl_proto_goTypes = []any{
 	(*EmptyRequest)(nil),       // 0: dr.protocol.EmptyRequest
 	(*SoftwareInfoReply)(nil),  // 1: dr.protocol.SoftwareInfoReply
@@ -650,21 +998,27 @@ var file_dr_protocol_idl_proto_goTypes = []any{
 	(*BodyPartRequest)(nil),    // 5: dr.protocol.BodyPartRequest
 	(*BodyPart)(nil),           // 6: dr.protocol.BodyPart
 	(*BodyPartReply)(nil),      // 7: dr.protocol.BodyPartReply
+	(*ProcedureRequest)(nil),   // 8: dr.protocol.ProcedureRequest
+	(*Procedure)(nil),          // 9: dr.protocol.Procedure
+	(*ProcedureReply)(nil),     // 10: dr.protocol.ProcedureReply
 }
 var file_dr_protocol_idl_proto_depIdxs = []int32{
-	3, // 0: dr.protocol.PatientTypeReply.patient_type_list:type_name -> dr.protocol.PatientType
-	6, // 1: dr.protocol.BodyPartReply.body_part_list:type_name -> dr.protocol.BodyPart
-	0, // 2: dr.protocol.Basic.SoftwareInfo:input_type -> dr.protocol.EmptyRequest
-	2, // 3: dr.protocol.Protocol.GetPatientType:input_type -> dr.protocol.PatientTypeRequest
-	5, // 4: dr.protocol.Protocol.GetBodyPart:input_type -> dr.protocol.BodyPartRequest
-	1, // 5: dr.protocol.Basic.SoftwareInfo:output_type -> dr.protocol.SoftwareInfoReply
-	4, // 6: dr.protocol.Protocol.GetPatientType:output_type -> dr.protocol.PatientTypeReply
-	7, // 7: dr.protocol.Protocol.GetBodyPart:output_type -> dr.protocol.BodyPartReply
-	5, // [5:8] is the sub-list for method output_type
-	2, // [2:5] is the sub-list for method input_type
-	2, // [2:2] is the sub-list for extension type_name
-	2, // [2:2] is the sub-list for extension extendee
-	0, // [0:2] is the sub-list for field type_name
+	3,  // 0: dr.protocol.PatientTypeReply.patient_type_list:type_name -> dr.protocol.PatientType
+	6,  // 1: dr.protocol.BodyPartReply.body_part_list:type_name -> dr.protocol.BodyPart
+	9,  // 2: dr.protocol.ProcedureReply.procedure_list:type_name -> dr.protocol.Procedure
+	0,  // 3: dr.protocol.Basic.SoftwareInfo:input_type -> dr.protocol.EmptyRequest
+	2,  // 4: dr.protocol.Protocol.GetPatientType:input_type -> dr.protocol.PatientTypeRequest
+	5,  // 5: dr.protocol.Protocol.GetBodyPart:input_type -> dr.protocol.BodyPartRequest
+	8,  // 6: dr.protocol.Protocol.GetProcedure:input_type -> dr.protocol.ProcedureRequest
+	1,  // 7: dr.protocol.Basic.SoftwareInfo:output_type -> dr.protocol.SoftwareInfoReply
+	4,  // 8: dr.protocol.Protocol.GetPatientType:output_type -> dr.protocol.PatientTypeReply
+	7,  // 9: dr.protocol.Protocol.GetBodyPart:output_type -> dr.protocol.BodyPartReply
+	10, // 10: dr.protocol.Protocol.GetProcedure:output_type -> dr.protocol.ProcedureReply
+	7,  // [7:11] is the sub-list for method output_type
+	3,  // [3:7] is the sub-list for method input_type
+	3,  // [3:3] is the sub-list for extension type_name
+	3,  // [3:3] is the sub-list for extension extendee
+	0,  // [0:3] is the sub-list for field type_name
 }
 
 func init() { file_dr_protocol_idl_proto_init() }
@@ -674,13 +1028,14 @@ func file_dr_protocol_idl_proto_init() {
 	}
 	file_dr_protocol_idl_proto_msgTypes[2].OneofWrappers = []any{}
 	file_dr_protocol_idl_proto_msgTypes[5].OneofWrappers = []any{}
+	file_dr_protocol_idl_proto_msgTypes[8].OneofWrappers = []any{}
 	type x struct{}
 	out := protoimpl.TypeBuilder{
 		File: protoimpl.DescBuilder{
 			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
 			RawDescriptor: unsafe.Slice(unsafe.StringData(file_dr_protocol_idl_proto_rawDesc), len(file_dr_protocol_idl_proto_rawDesc)),
 			NumEnums:      0,
-			NumMessages:   8,
+			NumMessages:   11,
 			NumExtensions: 0,
 			NumServices:   2,
 		},

+ 38 - 0
dr_protocol_pb/dr_protocol_idl_grpc.pb.go

@@ -123,6 +123,7 @@ var Basic_ServiceDesc = grpc.ServiceDesc{
 const (
 	Protocol_GetPatientType_FullMethodName = "/dr.protocol.Protocol/GetPatientType"
 	Protocol_GetBodyPart_FullMethodName    = "/dr.protocol.Protocol/GetBodyPart"
+	Protocol_GetProcedure_FullMethodName   = "/dr.protocol.Protocol/GetProcedure"
 )
 
 // ProtocolClient is the client API for Protocol service.
@@ -131,6 +132,7 @@ const (
 type ProtocolClient interface {
 	GetPatientType(ctx context.Context, in *PatientTypeRequest, opts ...grpc.CallOption) (*PatientTypeReply, error)
 	GetBodyPart(ctx context.Context, in *BodyPartRequest, opts ...grpc.CallOption) (*BodyPartReply, error)
+	GetProcedure(ctx context.Context, in *ProcedureRequest, opts ...grpc.CallOption) (*ProcedureReply, error)
 }
 
 type protocolClient struct {
@@ -161,12 +163,23 @@ func (c *protocolClient) GetBodyPart(ctx context.Context, in *BodyPartRequest, o
 	return out, nil
 }
 
+func (c *protocolClient) GetProcedure(ctx context.Context, in *ProcedureRequest, opts ...grpc.CallOption) (*ProcedureReply, error) {
+	cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...)
+	out := new(ProcedureReply)
+	err := c.cc.Invoke(ctx, Protocol_GetProcedure_FullMethodName, in, out, cOpts...)
+	if err != nil {
+		return nil, err
+	}
+	return out, nil
+}
+
 // ProtocolServer is the server API for Protocol service.
 // All implementations must embed UnimplementedProtocolServer
 // for forward compatibility.
 type ProtocolServer interface {
 	GetPatientType(context.Context, *PatientTypeRequest) (*PatientTypeReply, error)
 	GetBodyPart(context.Context, *BodyPartRequest) (*BodyPartReply, error)
+	GetProcedure(context.Context, *ProcedureRequest) (*ProcedureReply, error)
 	mustEmbedUnimplementedProtocolServer()
 }
 
@@ -183,6 +196,9 @@ func (UnimplementedProtocolServer) GetPatientType(context.Context, *PatientTypeR
 func (UnimplementedProtocolServer) GetBodyPart(context.Context, *BodyPartRequest) (*BodyPartReply, error) {
 	return nil, status.Errorf(codes.Unimplemented, "method GetBodyPart not implemented")
 }
+func (UnimplementedProtocolServer) GetProcedure(context.Context, *ProcedureRequest) (*ProcedureReply, error) {
+	return nil, status.Errorf(codes.Unimplemented, "method GetProcedure not implemented")
+}
 func (UnimplementedProtocolServer) mustEmbedUnimplementedProtocolServer() {}
 func (UnimplementedProtocolServer) testEmbeddedByValue()                  {}
 
@@ -240,6 +256,24 @@ func _Protocol_GetBodyPart_Handler(srv interface{}, ctx context.Context, dec fun
 	return interceptor(ctx, in, info, handler)
 }
 
+func _Protocol_GetProcedure_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) {
+	in := new(ProcedureRequest)
+	if err := dec(in); err != nil {
+		return nil, err
+	}
+	if interceptor == nil {
+		return srv.(ProtocolServer).GetProcedure(ctx, in)
+	}
+	info := &grpc.UnaryServerInfo{
+		Server:     srv,
+		FullMethod: Protocol_GetProcedure_FullMethodName,
+	}
+	handler := func(ctx context.Context, req interface{}) (interface{}, error) {
+		return srv.(ProtocolServer).GetProcedure(ctx, req.(*ProcedureRequest))
+	}
+	return interceptor(ctx, in, info, handler)
+}
+
 // Protocol_ServiceDesc is the grpc.ServiceDesc for Protocol service.
 // It's only intended for direct use with grpc.RegisterService,
 // and not to be introspected or modified (even as a copy)
@@ -255,6 +289,10 @@ var Protocol_ServiceDesc = grpc.ServiceDesc{
 			MethodName: "GetBodyPart",
 			Handler:    _Protocol_GetBodyPart_Handler,
 		},
+		{
+			MethodName: "GetProcedure",
+			Handler:    _Protocol_GetProcedure_Handler,
+		},
 	},
 	Streams:  []grpc.StreamDesc{},
 	Metadata: "dr_protocol_idl.proto",