From 48d7cbf16fac4fdc11d59f49250d24c1b1494d17 Mon Sep 17 00:00:00 2001 From: Kathurima <41376826+KathurimaKimathi@users.noreply.github.com> Date: Wed, 21 Feb 2024 12:32:44 +0300 Subject: [PATCH] feat: patient segmentation (#369) Signed-off-by: Kathurima Kimathi --- .github/workflows/ci.yml | 1 + .github/workflows/staging_multitenant.yaml | 1 + .../charts/clinical/templates/deployment.yaml | 3 + deploy/deploy.sh | 1 + pkg/clinical/application/common/defaults.go | 3 + pkg/clinical/application/dto/advantage.go | 8 + pkg/clinical/application/dto/enums.go | 45 ++++++ pkg/clinical/application/dto/enums_test.go | 149 ++++++++++++++++++ pkg/clinical/infrastructure/infrastructure.go | 14 +- .../advantage/mock/auth_client_mock.go | 28 ++++ .../services/advantage/mock/service_mock.go | 26 +++ .../services/advantage/service.go | 79 ++++++++++ .../services/advantage/service_test.go | 64 ++++++++ .../services/pubsub/mock/service_mock.go | 9 ++ .../services/pubsub/publisher.go | 5 + .../infrastructure/services/pubsub/service.go | 2 + pkg/clinical/presentation/config.go | 31 ++-- pkg/clinical/presentation/rest/handlers.go | 37 ++++- .../presentation/rest/handlers_test.go | 67 +++++++- .../usecases/clinical/allergy_test.go | 17 +- .../usecases/clinical/composition_test.go | 10 +- .../usecases/clinical/condition_test.go | 7 +- .../usecases/clinical/consent_test.go | 4 +- .../clinical/diagnostic_report_test.go | 11 +- .../usecases/clinical/encounter_test.go | 16 +- .../usecases/clinical/episode_of_care_test.go | 13 +- pkg/clinical/usecases/clinical/media_test.go | 7 +- .../usecases/clinical/observation_test.go | 143 +++++++++++------ .../usecases/clinical/organization_test.go | 7 +- .../usecases/clinical/patient_unit_test.go | 13 +- pkg/clinical/usecases/clinical/pubsub_test.go | 25 ++- .../clinical/questionnaire_response.go | 21 +++ .../clinical/questionnaire_response_test.go | 35 +++- .../usecases/clinical/questionnaire_test.go | 7 +- .../usecases/clinical/riskassessment_test.go | 4 +- .../usecases/clinical/timeline_test.go | 7 +- pkg/clinical/usecases/clinical/utils_test.go | 35 ++-- 37 files changed, 823 insertions(+), 132 deletions(-) create mode 100644 pkg/clinical/application/dto/advantage.go create mode 100644 pkg/clinical/application/dto/enums_test.go create mode 100644 pkg/clinical/infrastructure/services/advantage/mock/auth_client_mock.go create mode 100644 pkg/clinical/infrastructure/services/advantage/mock/service_mock.go create mode 100644 pkg/clinical/infrastructure/services/advantage/service.go create mode 100644 pkg/clinical/infrastructure/services/advantage/service_test.go diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 4ba7e8a8..11aba6e2 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -30,6 +30,7 @@ env: MYCAREHUB_INTROSPECT_URL: ${{ secrets.MYCAREHUB_INTROSPECT_URL }} CLINICAL_BUCKET_NAME: ${{ secrets.CLINICAL_BUCKET_NAME }} SENTRY_TRACE_SAMPLE_RATE: ${{ secrets.SENTRY_TRACE_SAMPLE_RATE }} + ADVANTAGE_BASE_URL: ${{ secrets.ADVANTAGE_BASE_URL }} jobs: golangci: diff --git a/.github/workflows/staging_multitenant.yaml b/.github/workflows/staging_multitenant.yaml index 389fceac..e84d0fd2 100644 --- a/.github/workflows/staging_multitenant.yaml +++ b/.github/workflows/staging_multitenant.yaml @@ -37,6 +37,7 @@ env: MYCAREHUB_INTROSPECT_URL: ${{ secrets.MYCAREHUB_INTROSPECT_URL }} CLINICAL_BUCKET_NAME: ${{ secrets.CLINICAL_BUCKET_NAME }} SENTRY_TRACE_SAMPLE_RATE: ${{ secrets.SENTRY_TRACE_SAMPLE_RATE }} + ADVANTAGE_BASE_URL: ${{ secrets.ADVANTAGE_BASE_URL }} jobs: deploy_to_multitenant_staging: diff --git a/deploy/charts/clinical/templates/deployment.yaml b/deploy/charts/clinical/templates/deployment.yaml index f9b0dbe4..a1f9cac5 100644 --- a/deploy/charts/clinical/templates/deployment.yaml +++ b/deploy/charts/clinical/templates/deployment.yaml @@ -118,6 +118,9 @@ spec: - name: SENTRY_TRACE_SAMPLE_RATE value: {{ .Values.app.container.env.defaultSentryTraceSampleRate | quote }} + - name: ADVANTAGE_BASE_URL + value: {{.Values.app.container.env.advantageBaseURL | quote }} + volumeMounts: - name: {{ .Values.app.container.env.googleApplicationCredentialsSecret.name }} mountPath: {{ .Values.app.container.env.googleApplicationCredentialsSecret.mountPath }} diff --git a/deploy/deploy.sh b/deploy/deploy.sh index 52ee1abe..76481c67 100644 --- a/deploy/deploy.sh +++ b/deploy/deploy.sh @@ -51,6 +51,7 @@ helm upgrade \ --set networking.issuer.privateKeySecretRef="letsencrypt-prod"\ --set networking.ingress.host="${APP_DOMAIN}"\ --set app.container.env.defaultSentryTraceSampleRate="${SENTRY_TRACE_SAMPLE_RATE}"\ + --set app.container.env.advantageBaseURL="${ADVANTAGE_BASE_URL}"\ --wait \ --timeout 300s \ -f ./charts/clinical/values.yaml \ diff --git a/pkg/clinical/application/common/defaults.go b/pkg/clinical/application/common/defaults.go index 03cab215..ef00990b 100644 --- a/pkg/clinical/application/common/defaults.go +++ b/pkg/clinical/application/common/defaults.go @@ -41,6 +41,9 @@ const ( // TenantTopicName is the topic where program is registered in clinical as a tenant TenantTopicName = "mycarehub.tenant.create" + // SegmentationTopicName topic sends patient segmentation information to slade advantage + SegmentationTopicName = "patient.segmentation.create" + // MedicalDataCount is the count of medical records MedicalDataCount = "3" diff --git a/pkg/clinical/application/dto/advantage.go b/pkg/clinical/application/dto/advantage.go new file mode 100644 index 00000000..7a625312 --- /dev/null +++ b/pkg/clinical/application/dto/advantage.go @@ -0,0 +1,8 @@ +package dto + +// SegmentationPayload is used to stratify clients in advantage EMR. +type SegmentationPayload struct { + // ClinicalID represents the patient's ID in this service + ClinicalID string `json:"clinical_id,omitempty"` + SegmentLabel SegmentationCategory `json:"segment_label,omitempty"` +} diff --git a/pkg/clinical/application/dto/enums.go b/pkg/clinical/application/dto/enums.go index ee87f667..560f2ff3 100644 --- a/pkg/clinical/application/dto/enums.go +++ b/pkg/clinical/application/dto/enums.go @@ -474,3 +474,48 @@ func (e *ObservationStatusEnum) UnmarshalGQL(v interface{}) error { func (e ObservationStatusEnum) MarshalGQL(w io.Writer) { fmt.Fprint(w, strconv.Quote(e.String())) } + +// SegmentationCategory models advantage segmentation categories for clients +type SegmentationCategory string + +const ( + SegmentationCategoryNoRisk SegmentationCategory = "CERVICAL_CANCER_TIPS" + SegmentationCategoryLowRisk SegmentationCategory = "CERVICAL_CANCER_LOW_RISK" + SegmentationCategoryHighRiskPositive SegmentationCategory = "CERVICAL_CANCER_POSITIVE" + SegmentationCategoryHighRiskNegative SegmentationCategory = "CERVICAL_CANCER_HIGH_RISK" +) + +// IsValid checks validity of a SegmentationCategory enum +func (c SegmentationCategory) IsValid() bool { + switch c { + case SegmentationCategoryNoRisk, SegmentationCategoryLowRisk, SegmentationCategoryHighRiskPositive, SegmentationCategoryHighRiskNegative: + return true + } + + return false +} + +// String converts segmentation to string +func (c SegmentationCategory) String() string { + return string(c) +} + +// MarshalGQL writes the segmentation as a quoted string +func (c SegmentationCategory) MarshalGQL(w io.Writer) { + fmt.Fprint(w, strconv.Quote(c.String())) +} + +// UnmarshalGQL reads a json and converts it to a segmentation enum +func (c *SegmentationCategory) UnmarshalGQL(v interface{}) error { + str, ok := v.(string) + if !ok { + return fmt.Errorf("enums must be a string") + } + + *c = SegmentationCategory(str) + if !c.IsValid() { + return fmt.Errorf("%s is not a valid SegmentationCategory Enum", str) + } + + return nil +} diff --git a/pkg/clinical/application/dto/enums_test.go b/pkg/clinical/application/dto/enums_test.go new file mode 100644 index 00000000..5cd2f304 --- /dev/null +++ b/pkg/clinical/application/dto/enums_test.go @@ -0,0 +1,149 @@ +package dto + +import ( + "bytes" + "strconv" + "testing" +) + +func TestConsentState_MarshalGQL(t *testing.T) { + tests := []struct { + name string + c SegmentationCategory + wantW string + }{ + { + name: "valid type s", + c: SegmentationCategoryLowRisk, + wantW: strconv.Quote("CERVICAL_CANCER_LOW_RISK"), + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + w := &bytes.Buffer{} + tt.c.MarshalGQL(w) + if gotW := w.String(); gotW != tt.wantW { + t.Errorf("SegmentationCategory.MarshalGQL() = %v, want %v", gotW, tt.wantW) + } + }) + } +} + +func TestSegmentationCategory_String(t *testing.T) { + tests := []struct { + name string + e SegmentationCategory + want string + }{ + { + name: "CERVICAL_CANCER_TIPS", + e: SegmentationCategoryNoRisk, + want: "CERVICAL_CANCER_TIPS", + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if got := tt.e.String(); got != tt.want { + t.Errorf("SegmentationCategory.String() = %v, want %v", got, tt.want) + } + }) + } +} + +func TestSegmentationCategory_IsValid(t *testing.T) { + tests := []struct { + name string + e SegmentationCategory + want bool + }{ + { + name: "valid type", + e: SegmentationCategoryHighRiskNegative, + want: true, + }, + { + name: "invalid type", + e: SegmentationCategory("invalid"), + want: false, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if got := tt.e.IsValid(); got != tt.want { + t.Errorf("SegmentationCategory.IsValid() = %v, want %v", got, tt.want) + } + }) + } +} + +func TestSegmentationCategory_UnmarshalGQL(t *testing.T) { + value := SegmentationCategoryHighRiskNegative + invalid := SegmentationCategory("invalid") + type args struct { + v interface{} + } + tests := []struct { + name string + e *SegmentationCategory + args args + wantErr bool + }{ + { + name: "valid type", + e: &value, + args: args{ + v: "CERVICAL_CANCER_HIGH_RISK", + }, + wantErr: false, + }, + { + name: "invalid type", + e: &invalid, + args: args{ + v: "this is not a valid type", + }, + wantErr: true, + }, + { + name: "non string type", + e: &invalid, + args: args{ + v: 1, + }, + wantErr: true, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + if err := tt.e.UnmarshalGQL(tt.args.v); (err != nil) != tt.wantErr { + t.Errorf("SegmentationCategory.UnmarshalGQL() error = %v, wantErr %v", err, tt.wantErr) + } + }) + } +} + +func TestSegmentationCategory_MarshalGQL(t *testing.T) { + w := &bytes.Buffer{} + tests := []struct { + name string + e SegmentationCategory + b *bytes.Buffer + wantW string + panic bool + }{ + { + name: "valid type enums", + e: SegmentationCategoryHighRiskNegative, + b: w, + wantW: strconv.Quote("CERVICAL_CANCER_HIGH_RISK"), + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + tt.e.MarshalGQL(tt.b) + if gotW := w.String(); gotW != tt.wantW { + t.Errorf("SegmentationCategory.MarshalGQL() = %v, want %v", gotW, tt.wantW) + } + }) + } +} diff --git a/pkg/clinical/infrastructure/infrastructure.go b/pkg/clinical/infrastructure/infrastructure.go index 91993ce8..2711daa0 100644 --- a/pkg/clinical/infrastructure/infrastructure.go +++ b/pkg/clinical/infrastructure/infrastructure.go @@ -8,6 +8,7 @@ import ( "github.com/savannahghi/clinical/pkg/clinical/application/dto" "github.com/savannahghi/clinical/pkg/clinical/domain" + "github.com/savannahghi/clinical/pkg/clinical/infrastructure/services/advantage" pubsubmessaging "github.com/savannahghi/clinical/pkg/clinical/infrastructure/services/pubsub" "github.com/savannahghi/clinical/pkg/clinical/infrastructure/services/upload" "github.com/savannahghi/clinical/pkg/clinical/repository" @@ -53,11 +54,12 @@ type BaseExtension interface { // Infrastructure ... type Infrastructure struct { - FHIR repository.FHIR - OpenConceptLab ServiceOCL - BaseExtension BaseExtension - Upload upload.ServiceUpload - Pubsub pubsubmessaging.ServicePubsub + FHIR repository.FHIR + OpenConceptLab ServiceOCL + BaseExtension BaseExtension + Upload upload.ServiceUpload + Pubsub pubsubmessaging.ServicePubsub + AdvantageService advantage.AdvantageService } // NewInfrastructureInteractor initializes a new Infrastructure @@ -67,6 +69,7 @@ func NewInfrastructureInteractor( openconceptlab ServiceOCL, upload upload.ServiceUpload, pubsub pubsubmessaging.ServicePubsub, + advantage advantage.AdvantageService, ) Infrastructure { return Infrastructure{ fhir, @@ -74,5 +77,6 @@ func NewInfrastructureInteractor( ext, upload, pubsub, + advantage, } } diff --git a/pkg/clinical/infrastructure/services/advantage/mock/auth_client_mock.go b/pkg/clinical/infrastructure/services/advantage/mock/auth_client_mock.go new file mode 100644 index 00000000..0e129114 --- /dev/null +++ b/pkg/clinical/infrastructure/services/advantage/mock/auth_client_mock.go @@ -0,0 +1,28 @@ +package mock + +import "github.com/savannahghi/authutils" + +// AuthClientMock mocks the authentication client methods +type AuthClientMock struct { + MockAuthenticateFn func() (*authutils.OAUTHResponse, error) +} + +// NewAuthUtilsClientMock constructor initializes the auth utils client mock +func NewAuthUtilsClientMock() *AuthClientMock { + return &AuthClientMock{ + MockAuthenticateFn: func() (*authutils.OAUTHResponse, error) { + return &authutils.OAUTHResponse{ + Scope: "", + ExpiresIn: 0, + AccessToken: "token", + RefreshToken: "refresh_token", + TokenType: "Bearer", + }, nil + }, + } +} + +// Authenticate mocks the implementation of the authentication mechanism provided by auth utils +func (a *AuthClientMock) Authenticate() (*authutils.OAUTHResponse, error) { + return a.MockAuthenticateFn() +} diff --git a/pkg/clinical/infrastructure/services/advantage/mock/service_mock.go b/pkg/clinical/infrastructure/services/advantage/mock/service_mock.go new file mode 100644 index 00000000..baa083c9 --- /dev/null +++ b/pkg/clinical/infrastructure/services/advantage/mock/service_mock.go @@ -0,0 +1,26 @@ +package mock + +import ( + "context" + + "github.com/savannahghi/clinical/pkg/clinical/application/dto" +) + +// FakeAdvantage mocks the implementation of advantage API methods +type FakeAdvantage struct { + MockSegmentPatient func(ctx context.Context, payload dto.SegmentationPayload) error +} + +// NewFakeAdvantageMock is the advantage's mock methods constructor +func NewFakeAdvantageMock() *FakeAdvantage { + return &FakeAdvantage{ + MockSegmentPatient: func(ctx context.Context, payload dto.SegmentationPayload) error { + return nil + }, + } +} + +// SegmentPatient mocks the implementation of patient segmentation usecase +func (f *FakeAdvantage) SegmentPatient(ctx context.Context, payload dto.SegmentationPayload) error { + return f.MockSegmentPatient(ctx, payload) +} diff --git a/pkg/clinical/infrastructure/services/advantage/service.go b/pkg/clinical/infrastructure/services/advantage/service.go new file mode 100644 index 00000000..03f20ff6 --- /dev/null +++ b/pkg/clinical/infrastructure/services/advantage/service.go @@ -0,0 +1,79 @@ +package advantage + +import ( + "bytes" + "context" + "encoding/json" + "fmt" + "net/http" + "time" + + "github.com/savannahghi/authutils" + "github.com/savannahghi/clinical/pkg/clinical/application/dto" + "github.com/savannahghi/serverutils" +) + +var ( + AdvantageBaseURL = serverutils.MustGetEnvVar("ADVANTAGE_BASE_URL") + segmentationPath = "/api/segments/segment/clinical/" +) + +// AuthUtilsLib holds the method defined in authutils library +type AuthUtilsLib interface { + Authenticate() (*authutils.OAUTHResponse, error) +} + +// AdvantageService represents methods that can be used to communicate with the advantage server +type AdvantageService interface { + SegmentPatient(ctx context.Context, payload dto.SegmentationPayload) error +} + +// ServiceAdvantageImpl represents advantage server's implementations +type ServiceAdvantageImpl struct { + client AuthUtilsLib +} + +// NewServiceAdvantage is the advantage server's service constructor +func NewServiceAdvantage(authUtils AuthUtilsLib) *ServiceAdvantageImpl { + return &ServiceAdvantageImpl{ + client: authUtils, + } +} + +// SegmentPatient is used to create segmentation information in advantage +func (s *ServiceAdvantageImpl) SegmentPatient(ctx context.Context, payload dto.SegmentationPayload) error { + url := fmt.Sprintf("%s/%s", AdvantageBaseURL, segmentationPath) + + payloadBytes, err := json.Marshal(payload) + if err != nil { + fmt.Println("Error marshaling JSON:", err) + return err + } + + body := bytes.NewReader(payloadBytes) + + req, err := http.NewRequest(http.MethodPost, url, body) + if err != nil { + return err + } + + token, err := s.client.Authenticate() + if err != nil { + return err + } + + req.Header.Set("Accept", "application/json") + req.Header.Set("Content-Type", "application/json") + req.Header.Set("Authorization", fmt.Sprintf("Bearer %s", token.AccessToken)) + + httpClient := &http.Client{Timeout: time.Second * 30} + + resp, err := httpClient.Do(req) + if err != nil { + return err + } + + defer resp.Body.Close() + + return nil +} diff --git a/pkg/clinical/infrastructure/services/advantage/service_test.go b/pkg/clinical/infrastructure/services/advantage/service_test.go new file mode 100644 index 00000000..a8aef69b --- /dev/null +++ b/pkg/clinical/infrastructure/services/advantage/service_test.go @@ -0,0 +1,64 @@ +package advantage_test + +import ( + "context" + "errors" + "testing" + + "github.com/brianvoe/gofakeit" + "github.com/savannahghi/authutils" + "github.com/savannahghi/clinical/pkg/clinical/application/dto" + "github.com/savannahghi/clinical/pkg/clinical/infrastructure/services/advantage" + advantageMock "github.com/savannahghi/clinical/pkg/clinical/infrastructure/services/advantage/mock" +) + +func TestServiceAdvantageImpl_PatientSegmentation(t *testing.T) { + type args struct { + ctx context.Context + payload dto.SegmentationPayload + } + tests := []struct { + name string + args args + wantErr bool + }{ + { + name: "Happy case: segment patients", + args: args{ + ctx: context.Background(), + payload: dto.SegmentationPayload{ + ClinicalID: gofakeit.UUID(), + SegmentLabel: dto.SegmentationCategoryHighRiskPositive, + }, + }, + wantErr: false, + }, + { + name: "Sad case: unable to segment patients", + args: args{ + ctx: context.Background(), + payload: dto.SegmentationPayload{ + ClinicalID: gofakeit.UUID(), + SegmentLabel: dto.SegmentationCategoryHighRiskPositive, + }, + }, + wantErr: true, + }, + } + for _, tt := range tests { + t.Run(tt.name, func(t *testing.T) { + fakeAuthUtils := advantageMock.NewAuthUtilsClientMock() + s := advantage.NewServiceAdvantage(fakeAuthUtils) + + if tt.name == "Sad case: unable to segment patients" { + fakeAuthUtils.MockAuthenticateFn = func() (*authutils.OAUTHResponse, error) { + return nil, errors.New("unable to authenticate") + } + } + + if err := s.SegmentPatient(tt.args.ctx, tt.args.payload); (err != nil) != tt.wantErr { + t.Errorf("ServiceAdvantageImpl.SegmentPatient() error = %v, wantErr %v", err, tt.wantErr) + } + }) + } +} diff --git a/pkg/clinical/infrastructure/services/pubsub/mock/service_mock.go b/pkg/clinical/infrastructure/services/pubsub/mock/service_mock.go index e0bf47d4..6dc97dec 100644 --- a/pkg/clinical/infrastructure/services/pubsub/mock/service_mock.go +++ b/pkg/clinical/infrastructure/services/pubsub/mock/service_mock.go @@ -11,6 +11,7 @@ type FakeServicePubsub struct { MockNotifyPatientFHIRIDUpdatefn func(ctx context.Context, data dto.UpdatePatientFHIRID) error MockNotifyFacilityFHIRIDUpdatefn func(ctx context.Context, data dto.UpdateFacilityFHIRID) error MockNotifyProgramFHIRIDUpdatefn func(ctx context.Context, data dto.UpdateProgramFHIRID) error + MockNotifySegmentationFn func(ctx context.Context, data dto.SegmentationPayload) error } // NewPubSubServiceMock mocks the pubsub service implementation @@ -25,6 +26,9 @@ func NewPubSubServiceMock() *FakeServicePubsub { MockNotifyProgramFHIRIDUpdatefn: func(ctx context.Context, data dto.UpdateProgramFHIRID) error { return nil }, + MockNotifySegmentationFn: func(ctx context.Context, data dto.SegmentationPayload) error { + return nil + }, } } @@ -44,3 +48,8 @@ func (f *FakeServicePubsub) NotifyFacilityFHIRIDUpdate(ctx context.Context, data func (f *FakeServicePubsub) NotifyProgramFHIRIDUpdate(ctx context.Context, data dto.UpdateProgramFHIRID) error { return f.MockNotifyProgramFHIRIDUpdatefn(ctx, data) } + +// NotifySegmentation publishes the mock data used to update the segmentation data in advantage +func (f *FakeServicePubsub) NotifySegmentation(ctx context.Context, data dto.SegmentationPayload) error { + return f.MockNotifySegmentationFn(ctx, data) +} diff --git a/pkg/clinical/infrastructure/services/pubsub/publisher.go b/pkg/clinical/infrastructure/services/pubsub/publisher.go index 0676b381..c016065f 100644 --- a/pkg/clinical/infrastructure/services/pubsub/publisher.go +++ b/pkg/clinical/infrastructure/services/pubsub/publisher.go @@ -43,3 +43,8 @@ func (ps ServicePubSubMessaging) NotifyFacilityFHIRIDUpdate(ctx context.Context, func (ps ServicePubSubMessaging) NotifyProgramFHIRIDUpdate(ctx context.Context, data dto.UpdateProgramFHIRID) error { return ps.newPublish(ctx, data, common.AddFHIRIDToProgram, MyCareHubServiceName) } + +// NotifySegmentation publishes the the data used to update the segmentation data in advantage +func (ps ServicePubSubMessaging) NotifySegmentation(ctx context.Context, data dto.SegmentationPayload) error { + return ps.newPublish(ctx, data, common.SegmentationTopicName, common.ClinicalServiceName) +} diff --git a/pkg/clinical/infrastructure/services/pubsub/service.go b/pkg/clinical/infrastructure/services/pubsub/service.go index 4291caa4..6c56c6ef 100644 --- a/pkg/clinical/infrastructure/services/pubsub/service.go +++ b/pkg/clinical/infrastructure/services/pubsub/service.go @@ -28,6 +28,7 @@ type ServicePubsub interface { NotifyPatientFHIRIDUpdate(ctx context.Context, data dto.UpdatePatientFHIRID) error NotifyFacilityFHIRIDUpdate(ctx context.Context, data dto.UpdateFacilityFHIRID) error NotifyProgramFHIRIDUpdate(ctx context.Context, data dto.UpdateProgramFHIRID) error + NotifySegmentation(ctx context.Context, data dto.SegmentationPayload) error } // ServicePubSubMessaging is used to send and receive pubsub notifications @@ -83,6 +84,7 @@ func (ps ServicePubSubMessaging) TopicIDs() []string { ps.AddPubSubNamespace(common.TestOrderTopicName, common.ClinicalServiceName), ps.AddPubSubNamespace(common.OrganizationTopicName, common.ClinicalServiceName), ps.AddPubSubNamespace(common.TenantTopicName, common.ClinicalServiceName), + ps.AddPubSubNamespace(common.SegmentationTopicName, common.ClinicalServiceName), } } diff --git a/pkg/clinical/presentation/config.go b/pkg/clinical/presentation/config.go index e21def8a..8c06b481 100644 --- a/pkg/clinical/presentation/config.go +++ b/pkg/clinical/presentation/config.go @@ -18,6 +18,7 @@ import ( "github.com/savannahghi/clinical/pkg/clinical/infrastructure" fhir "github.com/savannahghi/clinical/pkg/clinical/infrastructure/datastore/cloudhealthcare" "github.com/savannahghi/clinical/pkg/clinical/infrastructure/datastore/cloudhealthcare/fhirdataset" + "github.com/savannahghi/clinical/pkg/clinical/infrastructure/services/advantage" "github.com/savannahghi/clinical/pkg/clinical/infrastructure/services/openconceptlab" pubsubmessaging "github.com/savannahghi/clinical/pkg/clinical/infrastructure/services/pubsub" "github.com/savannahghi/clinical/pkg/clinical/infrastructure/services/upload" @@ -92,19 +93,6 @@ func StartServer( log.Panicf("unable to initialize new Google Cloud Healthcare Service: %s", err) } - repo := fhirdataset.NewFHIRRepository(ctx, hsv, project, datasetID, datasetLocation, fhirStoreID) - fhir := fhir.NewFHIRStoreImpl(repo) - ocl := openconceptlab.NewServiceOCL() - - upload := upload.NewServiceUpload(ctx) - - pubsubSvc, err := pubsubmessaging.NewServicePubSubMessaging(ctx, pubSubClient) - if err != nil { - serverutils.LogStartupError(ctx, fmt.Errorf("failed to initialize pubsub messaging service: %w", err)) - } - - infrastructure := infrastructure.NewInfrastructureInteractor(baseExtension, fhir, ocl, upload, pubsubSvc) - authServerConfig := authutils.Config{ AuthServerEndpoint: authServerEndpoint, ClientID: clientID, @@ -119,6 +107,21 @@ func StartServer( serverutils.LogStartupError(ctx, err) } + repo := fhirdataset.NewFHIRRepository(ctx, hsv, project, datasetID, datasetLocation, fhirStoreID) + fhir := fhir.NewFHIRStoreImpl(repo) + ocl := openconceptlab.NewServiceOCL() + + upload := upload.NewServiceUpload(ctx) + + pubsubSvc, err := pubsubmessaging.NewServicePubSubMessaging(ctx, pubSubClient) + if err != nil { + serverutils.LogStartupError(ctx, fmt.Errorf("failed to initialize pubsub messaging service: %w", err)) + } + + advantageSvc := advantage.NewServiceAdvantage(authclient) + + infrastructure := infrastructure.NewInfrastructureInteractor(baseExtension, fhir, ocl, upload, pubsubSvc, advantageSvc) + usecases := usecases.NewUsecasesInteractor(infrastructure) r := gin.Default() @@ -162,7 +165,7 @@ func SetupRoutes(r *gin.Engine, cacheStore persist.CacheStore, authclient *authu AllowWebSockets: true, })) - handlers := rest.NewPresentationHandlers(usecases, infra.BaseExtension) + handlers := rest.NewPresentationHandlers(usecases, infra.BaseExtension, infra.AdvantageService) graphQL := r.Group("/graphql") graphQL.Use(rest.AuthenticationGinMiddleware(cacheStore, *authclient)) diff --git a/pkg/clinical/presentation/rest/handlers.go b/pkg/clinical/presentation/rest/handlers.go index 3bf862f6..7867c4e1 100644 --- a/pkg/clinical/presentation/rest/handlers.go +++ b/pkg/clinical/presentation/rest/handlers.go @@ -11,6 +11,7 @@ import ( "github.com/savannahghi/clinical/pkg/clinical/application/dto" "github.com/savannahghi/clinical/pkg/clinical/application/utils" "github.com/savannahghi/clinical/pkg/clinical/domain" + "github.com/savannahghi/clinical/pkg/clinical/infrastructure/services/advantage" "github.com/savannahghi/clinical/pkg/clinical/usecases" "github.com/savannahghi/errorcodeutil" "github.com/savannahghi/pubsubtools" @@ -25,13 +26,18 @@ type BaseExtension interface { // PresentationHandlersImpl represents the usecase implementation object type PresentationHandlersImpl struct { - usecases usecases.Interactor - baseExt BaseExtension + usecases usecases.Interactor + baseExt BaseExtension + advantageService advantage.AdvantageService } // NewPresentationHandlers initializes a new rest handlers usecase -func NewPresentationHandlers(usecases usecases.Interactor, extension BaseExtension) *PresentationHandlersImpl { - return &PresentationHandlersImpl{usecases: usecases, baseExt: extension} +func NewPresentationHandlers(usecases usecases.Interactor, extension BaseExtension, advantageSvc advantage.AdvantageService) *PresentationHandlersImpl { + return &PresentationHandlersImpl{ + usecases: usecases, + baseExt: extension, + advantageService: advantageSvc, + } } // ReceivePubSubPushMessage receives and processes a pubsub message @@ -220,6 +226,29 @@ func (p PresentationHandlersImpl) ReceivePubSubPushMessage(c *gin.Context) { return } + case utils.AddPubSubNamespace(common.SegmentationTopicName, common.ClinicalServiceName): + var data dto.SegmentationPayload + + err := json.Unmarshal(message.Message.Data, &data) + if err != nil { + serverutils.WriteJSONResponse(c.Writer, errorcodeutil.CustomError{ + Err: err, + Message: err.Error(), + }, http.StatusBadRequest) + + return + } + + err = p.advantageService.SegmentPatient(ctx, data) + if err != nil { + serverutils.WriteJSONResponse(c.Writer, errorcodeutil.CustomError{ + Err: err, + Message: err.Error(), + }, http.StatusBadRequest) + + return + } + default: err := fmt.Errorf("unknown topic ID: %v", topicID) diff --git a/pkg/clinical/presentation/rest/handlers_test.go b/pkg/clinical/presentation/rest/handlers_test.go index 737320d8..aeeb9296 100644 --- a/pkg/clinical/presentation/rest/handlers_test.go +++ b/pkg/clinical/presentation/rest/handlers_test.go @@ -21,6 +21,7 @@ import ( "github.com/savannahghi/clinical/pkg/clinical/domain" "github.com/savannahghi/clinical/pkg/clinical/infrastructure" fakeFHIRMock "github.com/savannahghi/clinical/pkg/clinical/infrastructure/datastore/cloudhealthcare/mock" + fakeAdvantageMock "github.com/savannahghi/clinical/pkg/clinical/infrastructure/services/advantage/mock" fakeOCLMock "github.com/savannahghi/clinical/pkg/clinical/infrastructure/services/openconceptlab/mock" fakePubSubMock "github.com/savannahghi/clinical/pkg/clinical/infrastructure/services/pubsub/mock" fakeUploadMock "github.com/savannahghi/clinical/pkg/clinical/infrastructure/services/upload/mock" @@ -198,6 +199,26 @@ func TestPresentationHandlersImpl_ReceivePubSubPushMessage(t *testing.T) { wantStatus: http.StatusBadRequest, wantErr: true, }, + { + name: "happy case: publish patient segmentation", + args: args{ + url: "/pubsub", + httpMethod: http.MethodPost, + body: nil, + }, + wantStatus: http.StatusOK, + wantErr: false, + }, + { + name: "sad case: unable to publish patient segmentation", + args: args{ + url: "/pubsub", + httpMethod: http.MethodPost, + body: nil, + }, + wantStatus: http.StatusBadRequest, + wantErr: true, + }, { name: "sad case: verify pubsub request fails", args: args{ @@ -236,7 +257,8 @@ func TestPresentationHandlersImpl_ReceivePubSubPushMessage(t *testing.T) { fakeOCL := fakeOCLMock.NewFakeOCLMock() fakeUpload := fakeUploadMock.NewFakeUploadMock() fakePubSub := fakePubSubMock.NewPubSubServiceMock() - infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub) + fakeAdvantage := fakeAdvantageMock.NewFakeAdvantageMock() + infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub, fakeAdvantage) usecases := usecases.NewUsecasesInteractor(infra) if tt.name == "happy case: publish create patient message" { @@ -602,6 +624,49 @@ func TestPresentationHandlersImpl_ReceivePubSubPushMessage(t *testing.T) { } } + if tt.name == "happy case: publish patient segmentation" { + message := dto.SegmentationPayload{ + ClinicalID: gofakeit.UUID(), + SegmentLabel: "LOW RISK", + } + + data, _ := json.Marshal(message) + fakeExt.MockVerifyPubSubJWTAndDecodePayloadFn = func(w http.ResponseWriter, r *http.Request) (*pubsubtools.PubSubPayload, error) { + return &pubsubtools.PubSubPayload{ + Message: pubsubtools.PubSubMessage{ + Data: data, + }, + }, nil + } + + fakeExt.MockGetPubSubTopicFn = func(m *pubsubtools.PubSubPayload) (string, error) { + return utils.AddPubSubNamespace(common.SegmentationTopicName, common.ClinicalServiceName), nil + } + } + if tt.name == "sad case: unable to publish patient segmentation" { + message := dto.SegmentationPayload{ + ClinicalID: gofakeit.UUID(), + SegmentLabel: "LOW RISK", + } + + data, _ := json.Marshal(message) + fakeExt.MockVerifyPubSubJWTAndDecodePayloadFn = func(w http.ResponseWriter, r *http.Request) (*pubsubtools.PubSubPayload, error) { + return &pubsubtools.PubSubPayload{ + Message: pubsubtools.PubSubMessage{ + Data: data, + }, + }, nil + } + + fakeExt.MockGetPubSubTopicFn = func(m *pubsubtools.PubSubPayload) (string, error) { + return utils.AddPubSubNamespace(common.SegmentationTopicName, common.ClinicalServiceName), nil + } + + fakeAdvantage.MockSegmentPatient = func(ctx context.Context, payload dto.SegmentationPayload) error { + return fmt.Errorf("failed to segment patient") + } + } + w := httptest.NewRecorder() ctx, engine := gin.CreateTestContext(w) diff --git a/pkg/clinical/usecases/clinical/allergy_test.go b/pkg/clinical/usecases/clinical/allergy_test.go index caa0b6a7..1f5b0949 100644 --- a/pkg/clinical/usecases/clinical/allergy_test.go +++ b/pkg/clinical/usecases/clinical/allergy_test.go @@ -13,6 +13,7 @@ import ( "github.com/savannahghi/clinical/pkg/clinical/domain" "github.com/savannahghi/clinical/pkg/clinical/infrastructure" fakeFHIRMock "github.com/savannahghi/clinical/pkg/clinical/infrastructure/datastore/cloudhealthcare/mock" + fakeAdvantageMock "github.com/savannahghi/clinical/pkg/clinical/infrastructure/services/advantage/mock" fakeOCLMock "github.com/savannahghi/clinical/pkg/clinical/infrastructure/services/openconceptlab/mock" fakePubSubMock "github.com/savannahghi/clinical/pkg/clinical/infrastructure/services/pubsub/mock" fakeUploadMock "github.com/savannahghi/clinical/pkg/clinical/infrastructure/services/upload/mock" @@ -228,7 +229,9 @@ func TestUseCasesClinicalImpl_CreateAllergyIntolerance(t *testing.T) { fakeUpload := fakeUploadMock.NewFakeUploadMock() fakePubSub := fakePubSubMock.NewPubSubServiceMock() - infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub) + fakeAdvantage := fakeAdvantageMock.NewFakeAdvantageMock() + + infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub, fakeAdvantage) c := clinicalUsecase.NewUseCasesClinicalImpl(infra) codingCode := "20" manifestationCodingCode := scalarutils.Code(gofakeit.BS()) @@ -477,7 +480,9 @@ func TestUseCasesClinicalImpl_SearchAllergy(t *testing.T) { fakeUpload := fakeUploadMock.NewFakeUploadMock() fakePubSub := fakePubSubMock.NewPubSubServiceMock() - infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub) + fakeAdvantage := fakeAdvantageMock.NewFakeAdvantageMock() + + infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub, fakeAdvantage) c := clinicalUsecase.NewUseCasesClinicalImpl(infra) if tt.name == "Sad case: unable to search for an allergy" { @@ -537,7 +542,9 @@ func TestUseCasesClinicalImpl_GetAllergyIntolerance(t *testing.T) { fakeUpload := fakeUploadMock.NewFakeUploadMock() fakePubSub := fakePubSubMock.NewPubSubServiceMock() - infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub) + fakeAdvantage := fakeAdvantageMock.NewFakeAdvantageMock() + + infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub, fakeAdvantage) c := clinicalUsecase.NewUseCasesClinicalImpl(infra) if tt.name == "Sad case: unable to get allergy intolerance" { @@ -633,7 +640,9 @@ func TestUseCasesClinicalImpl_GetPatientAllergies(t *testing.T) { fakeUpload := fakeUploadMock.NewFakeUploadMock() fakePubSub := fakePubSubMock.NewPubSubServiceMock() - infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub) + fakeAdvantage := fakeAdvantageMock.NewFakeAdvantageMock() + + infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub, fakeAdvantage) c := clinicalUsecase.NewUseCasesClinicalImpl(infra) if tt.name == "Sad case: unable to get patient allergy intolerances" { diff --git a/pkg/clinical/usecases/clinical/composition_test.go b/pkg/clinical/usecases/clinical/composition_test.go index 8ee8fa5f..3e67594c 100644 --- a/pkg/clinical/usecases/clinical/composition_test.go +++ b/pkg/clinical/usecases/clinical/composition_test.go @@ -13,6 +13,7 @@ import ( "github.com/savannahghi/clinical/pkg/clinical/domain" "github.com/savannahghi/clinical/pkg/clinical/infrastructure" fakeFHIRMock "github.com/savannahghi/clinical/pkg/clinical/infrastructure/datastore/cloudhealthcare/mock" + fakeAdvantageMock "github.com/savannahghi/clinical/pkg/clinical/infrastructure/services/advantage/mock" fakeOCLMock "github.com/savannahghi/clinical/pkg/clinical/infrastructure/services/openconceptlab/mock" fakePubSubMock "github.com/savannahghi/clinical/pkg/clinical/infrastructure/services/pubsub/mock" fakeUploadMock "github.com/savannahghi/clinical/pkg/clinical/infrastructure/services/upload/mock" @@ -221,8 +222,9 @@ func TestUseCasesClinicalImpl_CreateComposition(t *testing.T) { fakePubSub := fakePubSubMock.NewPubSubServiceMock() fakeUpload := fakeUploadMock.NewFakeUploadMock() + fakeAdvantage := fakeAdvantageMock.NewFakeAdvantageMock() - infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub) + infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub, fakeAdvantage) c := clinicalUsecase.NewUseCasesClinicalImpl(infra) if tt.name == "happy case: get encounter" { @@ -493,8 +495,9 @@ func TestUseCasesClinicalImpl_ListPatientCompositions(t *testing.T) { fakeOCL := fakeOCLMock.NewFakeOCLMock() fakeUpload := fakeUploadMock.NewFakeUploadMock() fakePubSub := fakePubSubMock.NewPubSubServiceMock() + fakeAdvantage := fakeAdvantageMock.NewFakeAdvantageMock() - infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub) + infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub, fakeAdvantage) c := clinicalUsecase.NewUseCasesClinicalImpl(infra) if tt.name == "sad case: fail to get identifiers" { @@ -725,8 +728,9 @@ func TestUseCasesClinicalImpl_AppendNoteToComposition(t *testing.T) { fakeOCL := fakeOCLMock.NewFakeOCLMock() fakePubSub := fakePubSubMock.NewPubSubServiceMock() fakeUpload := fakeUploadMock.NewFakeUploadMock() + fakeAdvantage := fakeAdvantageMock.NewFakeAdvantageMock() - infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub) + infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub, fakeAdvantage) u := clinicalUsecase.NewUseCasesClinicalImpl(infra) if tt.name == "Sad Case - Fail to get encounter" { diff --git a/pkg/clinical/usecases/clinical/condition_test.go b/pkg/clinical/usecases/clinical/condition_test.go index 908c3ec2..e5a56464 100644 --- a/pkg/clinical/usecases/clinical/condition_test.go +++ b/pkg/clinical/usecases/clinical/condition_test.go @@ -13,6 +13,7 @@ import ( "github.com/savannahghi/clinical/pkg/clinical/domain" "github.com/savannahghi/clinical/pkg/clinical/infrastructure" fakeFHIRMock "github.com/savannahghi/clinical/pkg/clinical/infrastructure/datastore/cloudhealthcare/mock" + fakeAdvantageMock "github.com/savannahghi/clinical/pkg/clinical/infrastructure/services/advantage/mock" fakeOCLMock "github.com/savannahghi/clinical/pkg/clinical/infrastructure/services/openconceptlab/mock" fakePubSubMock "github.com/savannahghi/clinical/pkg/clinical/infrastructure/services/pubsub/mock" fakeUploadMock "github.com/savannahghi/clinical/pkg/clinical/infrastructure/services/upload/mock" @@ -199,8 +200,9 @@ func TestUseCasesClinicalImpl_CreateCondition(t *testing.T) { fakePubSub := fakePubSubMock.NewPubSubServiceMock() fakeUpload := fakeUploadMock.NewFakeUploadMock() + fakeAdvantage := fakeAdvantageMock.NewFakeAdvantageMock() - infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub) + infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub, fakeAdvantage) c := clinicalUsecase.NewUseCasesClinicalImpl(infra) codingCode := "1234" categoryCode := "ENCOUNTER_DIAGNOSIS" @@ -568,8 +570,9 @@ func TestUseCasesClinicalImpl_ListPatientConditions(t *testing.T) { fakeOCL := fakeOCLMock.NewFakeOCLMock() fakeUpload := fakeUploadMock.NewFakeUploadMock() fakePubSub := fakePubSubMock.NewPubSubServiceMock() + fakeAdvantage := fakeAdvantageMock.NewFakeAdvantageMock() - infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub) + infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub, fakeAdvantage) c := clinicalUsecase.NewUseCasesClinicalImpl(infra) if tt.name == "sad case: fail to get identifiers" { diff --git a/pkg/clinical/usecases/clinical/consent_test.go b/pkg/clinical/usecases/clinical/consent_test.go index 7ae1175c..0cc1b229 100644 --- a/pkg/clinical/usecases/clinical/consent_test.go +++ b/pkg/clinical/usecases/clinical/consent_test.go @@ -11,6 +11,7 @@ import ( "github.com/savannahghi/clinical/pkg/clinical/domain" "github.com/savannahghi/clinical/pkg/clinical/infrastructure" fakeFHIRMock "github.com/savannahghi/clinical/pkg/clinical/infrastructure/datastore/cloudhealthcare/mock" + fakeAdvantageMock "github.com/savannahghi/clinical/pkg/clinical/infrastructure/services/advantage/mock" fakeOCLMock "github.com/savannahghi/clinical/pkg/clinical/infrastructure/services/openconceptlab/mock" fakePubSubMock "github.com/savannahghi/clinical/pkg/clinical/infrastructure/services/pubsub/mock" fakeUploadMock "github.com/savannahghi/clinical/pkg/clinical/infrastructure/services/upload/mock" @@ -90,8 +91,9 @@ func TestUseCasesClinicalImpl_RecordConsent(t *testing.T) { fakePubSub := fakePubSubMock.NewPubSubServiceMock() fakeUpload := fakeUploadMock.NewFakeUploadMock() + fakeAdvantage := fakeAdvantageMock.NewFakeAdvantageMock() - infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub) + infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub, fakeAdvantage) c := clinicalUsecase.NewUseCasesClinicalImpl(infra) if tt.name == "Sad Case: failed to create consent" { diff --git a/pkg/clinical/usecases/clinical/diagnostic_report_test.go b/pkg/clinical/usecases/clinical/diagnostic_report_test.go index b9909154..724b5008 100644 --- a/pkg/clinical/usecases/clinical/diagnostic_report_test.go +++ b/pkg/clinical/usecases/clinical/diagnostic_report_test.go @@ -11,6 +11,7 @@ import ( "github.com/savannahghi/clinical/pkg/clinical/domain" "github.com/savannahghi/clinical/pkg/clinical/infrastructure" fakeFHIRMock "github.com/savannahghi/clinical/pkg/clinical/infrastructure/datastore/cloudhealthcare/mock" + fakeAdvantageMock "github.com/savannahghi/clinical/pkg/clinical/infrastructure/services/advantage/mock" fakeOCLMock "github.com/savannahghi/clinical/pkg/clinical/infrastructure/services/openconceptlab/mock" fakePubSubMock "github.com/savannahghi/clinical/pkg/clinical/infrastructure/services/pubsub/mock" fakeUploadMock "github.com/savannahghi/clinical/pkg/clinical/infrastructure/services/upload/mock" @@ -202,8 +203,9 @@ func TestUseCasesClinicalImpl_RecordMammographyResult(t *testing.T) { fakePubSub := fakePubSubMock.NewPubSubServiceMock() fakeUpload := fakeUploadMock.NewFakeUploadMock() + fakeAdvantage := fakeAdvantageMock.NewFakeAdvantageMock() - infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub) + infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub, fakeAdvantage) u := clinicalUsecase.NewUseCasesClinicalImpl(infra) if tt.name == "Sad case: unable to get encounter" { @@ -372,8 +374,9 @@ func TestUseCasesClinicalImpl_RecordBiopsy(t *testing.T) { fakeOCL := fakeOCLMock.NewFakeOCLMock() fakePubSub := fakePubSubMock.NewPubSubServiceMock() fakeUpload := fakeUploadMock.NewFakeUploadMock() + fakeAdvantage := fakeAdvantageMock.NewFakeAdvantageMock() - infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub) + infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub, fakeAdvantage) u := clinicalUsecase.NewUseCasesClinicalImpl(infra) if tt.name == "Sad case: unable to successfully record biopsy test" { @@ -519,7 +522,9 @@ func TestUseCasesClinicalImpl_RecordMRI(t *testing.T) { fakePubSub := fakePubSubMock.NewPubSubServiceMock() fakeUpload := fakeUploadMock.NewFakeUploadMock() - infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub) + fakeAdvantage := fakeAdvantageMock.NewFakeAdvantageMock() + + infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub, fakeAdvantage) u := clinicalUsecase.NewUseCasesClinicalImpl(infra) if tt.name == "Sad case: unable to successfully record mri results" { diff --git a/pkg/clinical/usecases/clinical/encounter_test.go b/pkg/clinical/usecases/clinical/encounter_test.go index 541e1bdf..b86a160d 100644 --- a/pkg/clinical/usecases/clinical/encounter_test.go +++ b/pkg/clinical/usecases/clinical/encounter_test.go @@ -12,6 +12,7 @@ import ( "github.com/savannahghi/clinical/pkg/clinical/domain" "github.com/savannahghi/clinical/pkg/clinical/infrastructure" fakeFHIRMock "github.com/savannahghi/clinical/pkg/clinical/infrastructure/datastore/cloudhealthcare/mock" + fakeAdvantageMock "github.com/savannahghi/clinical/pkg/clinical/infrastructure/services/advantage/mock" fakeOCLMock "github.com/savannahghi/clinical/pkg/clinical/infrastructure/services/openconceptlab/mock" fakePubSubMock "github.com/savannahghi/clinical/pkg/clinical/infrastructure/services/pubsub/mock" fakeUploadMock "github.com/savannahghi/clinical/pkg/clinical/infrastructure/services/upload/mock" @@ -77,8 +78,9 @@ func TestUseCasesClinicalImpl_StartEncounter(t *testing.T) { fakePubSub := fakePubSubMock.NewPubSubServiceMock() fakeUpload := fakeUploadMock.NewFakeUploadMock() + fakeAdvantage := fakeAdvantageMock.NewFakeAdvantageMock() - infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub) + infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub, fakeAdvantage) u := clinicalUsecase.NewUseCasesClinicalImpl(infra) if tt.name == "Sad Case - Fail to get episode of care" { @@ -177,8 +179,9 @@ func TestUseCasesClinicalImpl_PatchEncounter(t *testing.T) { fakeOCL := fakeOCLMock.NewFakeOCLMock() fakePubSub := fakePubSubMock.NewPubSubServiceMock() fakeUpload := fakeUploadMock.NewFakeUploadMock() + fakeAdvantage := fakeAdvantageMock.NewFakeAdvantageMock() - infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub) + infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub, fakeAdvantage) c := clinicalUsecase.NewUseCasesClinicalImpl(infra) if tt.name == "Sad Case - Unable to get encounter" { @@ -254,8 +257,9 @@ func TestUseCasesClinicalImpl_EndEncounter(t *testing.T) { fakePubSub := fakePubSubMock.NewPubSubServiceMock() fakeUpload := fakeUploadMock.NewFakeUploadMock() + fakeAdvantage := fakeAdvantageMock.NewFakeAdvantageMock() - infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub) + infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub, fakeAdvantage) u := clinicalUsecase.NewUseCasesClinicalImpl(infra) if tt.name == "Sad Case - Fail to end encounter" { @@ -369,8 +373,9 @@ func TestUseCasesClinicalImpl_ListPatientEncounters(t *testing.T) { fakePubSub := fakePubSubMock.NewPubSubServiceMock() fakeUpload := fakeUploadMock.NewFakeUploadMock() + fakeAdvantage := fakeAdvantageMock.NewFakeAdvantageMock() - infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub) + infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub, fakeAdvantage) u := clinicalUsecase.NewUseCasesClinicalImpl(infra) if tt.name == "Sad Case - Fail to get fhir patient" { @@ -442,8 +447,9 @@ func TestUseCasesClinicalImpl_GetEncounterAssociatedResources(t *testing.T) { fakePubSub := fakePubSubMock.NewPubSubServiceMock() fakeUpload := fakeUploadMock.NewFakeUploadMock() + fakeAdvantage := fakeAdvantageMock.NewFakeAdvantageMock() - infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub) + infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub, fakeAdvantage) u := clinicalUsecase.NewUseCasesClinicalImpl(infra) if tt.name == "Sad Case - Missing encounter ID" { diff --git a/pkg/clinical/usecases/clinical/episode_of_care_test.go b/pkg/clinical/usecases/clinical/episode_of_care_test.go index 2f3dd4a4..8b676622 100644 --- a/pkg/clinical/usecases/clinical/episode_of_care_test.go +++ b/pkg/clinical/usecases/clinical/episode_of_care_test.go @@ -13,6 +13,7 @@ import ( "github.com/savannahghi/clinical/pkg/clinical/domain" "github.com/savannahghi/clinical/pkg/clinical/infrastructure" fakeFHIRMock "github.com/savannahghi/clinical/pkg/clinical/infrastructure/datastore/cloudhealthcare/mock" + fakeAdvantageMock "github.com/savannahghi/clinical/pkg/clinical/infrastructure/services/advantage/mock" fakeOCLMock "github.com/savannahghi/clinical/pkg/clinical/infrastructure/services/openconceptlab/mock" fakePubSubMock "github.com/savannahghi/clinical/pkg/clinical/infrastructure/services/pubsub/mock" fakeUploadMock "github.com/savannahghi/clinical/pkg/clinical/infrastructure/services/upload/mock" @@ -144,8 +145,9 @@ func TestUseCasesClinicalImpl_CreateEpisodeOfCare(t *testing.T) { fakePubSub := fakePubSubMock.NewPubSubServiceMock() fakeUpload := fakeUploadMock.NewFakeUploadMock() + fakeAdvantage := fakeAdvantageMock.NewFakeAdvantageMock() - infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub) + infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub, fakeAdvantage) c := clinicalUsecase.NewUseCasesClinicalImpl(infra) if tt.name == "happy case: create an episode of care" { @@ -308,8 +310,9 @@ func TestUseCasesClinicalImpl_PatchEpisodeOfCare(t *testing.T) { fakePubSub := fakePubSubMock.NewPubSubServiceMock() fakeUpload := fakeUploadMock.NewFakeUploadMock() + fakeAdvantage := fakeAdvantageMock.NewFakeAdvantageMock() - infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub) + infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub, fakeAdvantage) c := clinicalUsecase.NewUseCasesClinicalImpl(infra) if tt.name == "Sad Case - Unable to get episode of care" { @@ -414,8 +417,9 @@ func TestUseCasesClinicalImpl_EndEpisodeOfCare(t *testing.T) { fakePubSub := fakePubSubMock.NewPubSubServiceMock() fakeUpload := fakeUploadMock.NewFakeUploadMock() + fakeAdvantage := fakeAdvantageMock.NewFakeAdvantageMock() - infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub) + infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub, fakeAdvantage) c := clinicalUsecase.NewUseCasesClinicalImpl(infra) if tt.name == "sad case: error retrieving episode of care" { @@ -506,8 +510,9 @@ func TestUseCasesClinicalImpl_GetEpisodeOfCare(t *testing.T) { fakePubSub := fakePubSubMock.NewPubSubServiceMock() fakeUpload := fakeUploadMock.NewFakeUploadMock() + fakeAdvantage := fakeAdvantageMock.NewFakeAdvantageMock() - infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub) + infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub, fakeAdvantage) c := clinicalUsecase.NewUseCasesClinicalImpl(infra) if tt.name == "sad case: fail to get episode of care" { diff --git a/pkg/clinical/usecases/clinical/media_test.go b/pkg/clinical/usecases/clinical/media_test.go index 8488bd76..8980d1b4 100644 --- a/pkg/clinical/usecases/clinical/media_test.go +++ b/pkg/clinical/usecases/clinical/media_test.go @@ -14,6 +14,7 @@ import ( "github.com/savannahghi/clinical/pkg/clinical/domain" "github.com/savannahghi/clinical/pkg/clinical/infrastructure" fakeFHIRMock "github.com/savannahghi/clinical/pkg/clinical/infrastructure/datastore/cloudhealthcare/mock" + fakeAdvantageMock "github.com/savannahghi/clinical/pkg/clinical/infrastructure/services/advantage/mock" fakeOCLMock "github.com/savannahghi/clinical/pkg/clinical/infrastructure/services/openconceptlab/mock" fakePubSubMock "github.com/savannahghi/clinical/pkg/clinical/infrastructure/services/pubsub/mock" fakeUploadMock "github.com/savannahghi/clinical/pkg/clinical/infrastructure/services/upload/mock" @@ -121,8 +122,9 @@ func TestUseCasesClinicalImpl_UploadMedia(t *testing.T) { fakePubSub := fakePubSubMock.NewPubSubServiceMock() fakeUpload := fakeUploadMock.NewFakeUploadMock() + fakeAdvantage := fakeAdvantageMock.NewFakeAdvantageMock() - infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub) + infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub, fakeAdvantage) c := clinicalUsecase.NewUseCasesClinicalImpl(infra) if tt.name == "sad case: unable to get encounter" { @@ -247,8 +249,9 @@ func TestUseCasesClinicalImpl_ListPatientMedia(t *testing.T) { fakePubSub := fakePubSubMock.NewPubSubServiceMock() fakeUpload := fakeUploadMock.NewFakeUploadMock() + fakeAdvantage := fakeAdvantageMock.NewFakeAdvantageMock() - infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub) + infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub, fakeAdvantage) c := clinicalUsecase.NewUseCasesClinicalImpl(infra) if tt.name == "Sad case: unable to get tenant identifiers" { diff --git a/pkg/clinical/usecases/clinical/observation_test.go b/pkg/clinical/usecases/clinical/observation_test.go index 9048d6cf..d7763b8f 100644 --- a/pkg/clinical/usecases/clinical/observation_test.go +++ b/pkg/clinical/usecases/clinical/observation_test.go @@ -13,6 +13,7 @@ import ( "github.com/savannahghi/clinical/pkg/clinical/domain" "github.com/savannahghi/clinical/pkg/clinical/infrastructure" fakeFHIRMock "github.com/savannahghi/clinical/pkg/clinical/infrastructure/datastore/cloudhealthcare/mock" + fakeAdvantageMock "github.com/savannahghi/clinical/pkg/clinical/infrastructure/services/advantage/mock" fakeOCLMock "github.com/savannahghi/clinical/pkg/clinical/infrastructure/services/openconceptlab/mock" fakePubSubMock "github.com/savannahghi/clinical/pkg/clinical/infrastructure/services/pubsub/mock" fakeUploadMock "github.com/savannahghi/clinical/pkg/clinical/infrastructure/services/upload/mock" @@ -194,8 +195,9 @@ func TestUseCasesClinicalImpl_RecordObservation(t *testing.T) { fakePubSub := fakePubSubMock.NewPubSubServiceMock() fakeUpload := fakeUploadMock.NewFakeUploadMock() + fakeAdvantage := fakeAdvantageMock.NewFakeAdvantageMock() - infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub) + infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub, fakeAdvantage) u := clinicalUsecase.NewUseCasesClinicalImpl(infra) if tt.name == "Sad Case - Fail to get encounter" { @@ -350,8 +352,9 @@ func TestUseCasesClinicalImpl_RecordTemperature(t *testing.T) { fakePubSub := fakePubSubMock.NewPubSubServiceMock() fakeUpload := fakeUploadMock.NewFakeUploadMock() + fakeAdvantage := fakeAdvantageMock.NewFakeAdvantageMock() - infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub) + infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub, fakeAdvantage) u := clinicalUsecase.NewUseCasesClinicalImpl(infra) if tt.name == "Sad Case - Fail to get encounter" { @@ -506,9 +509,10 @@ func TestUseCasesClinicalImpl_RecordMuac(t *testing.T) { fakePubSub := fakePubSubMock.NewPubSubServiceMock() fakeUpload := fakeUploadMock.NewFakeUploadMock() + fakeAdvantage := fakeAdvantageMock.NewFakeAdvantageMock() - infa := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub) - u := clinicalUsecase.NewUseCasesClinicalImpl(infa) + infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub, fakeAdvantage) + u := clinicalUsecase.NewUseCasesClinicalImpl(infra) if tt.name == "Sad Case - Fail to get encounter" { fakeFHIR.MockGetFHIREncounterFn = func(ctx context.Context, id string) (*domain.FHIREncounterRelayPayload, error) { @@ -664,9 +668,10 @@ func TestUseCasesClinicalImpl_RecordOxygenSaturation(t *testing.T) { fakePubSub := fakePubSubMock.NewPubSubServiceMock() fakeUpload := fakeUploadMock.NewFakeUploadMock() + fakeAdvantage := fakeAdvantageMock.NewFakeAdvantageMock() - infa := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub) - u := clinicalUsecase.NewUseCasesClinicalImpl(infa) + infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub, fakeAdvantage) + u := clinicalUsecase.NewUseCasesClinicalImpl(infra) if tt.name == "Sad Case - Fail to get encounter" { fakeFHIR.MockGetFHIREncounterFn = func(ctx context.Context, id string) (*domain.FHIREncounterRelayPayload, error) { @@ -822,8 +827,9 @@ func TestUseCasesClinicalImpl_RecordHeight(t *testing.T) { fakePubSub := fakePubSubMock.NewPubSubServiceMock() fakeUpload := fakeUploadMock.NewFakeUploadMock() + fakeAdvantage := fakeAdvantageMock.NewFakeAdvantageMock() - infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub) + infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub, fakeAdvantage) u := clinicalUsecase.NewUseCasesClinicalImpl(infra) if tt.name == "Sad Case - Fail to get encounter" { @@ -979,8 +985,9 @@ func TestUseCasesClinicalImpl_RecordWeight(t *testing.T) { fakePubSub := fakePubSubMock.NewPubSubServiceMock() fakeUpload := fakeUploadMock.NewFakeUploadMock() + fakeAdvantage := fakeAdvantageMock.NewFakeAdvantageMock() - infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub) + infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub, fakeAdvantage) u := clinicalUsecase.NewUseCasesClinicalImpl(infra) if tt.name == "Sad Case - Fail to get encounter" { @@ -1135,8 +1142,9 @@ func TestUseCasesClinicalImpl_RecordRespiratoryRate(t *testing.T) { fakePubSub := fakePubSubMock.NewPubSubServiceMock() fakeUpload := fakeUploadMock.NewFakeUploadMock() + fakeAdvantage := fakeAdvantageMock.NewFakeAdvantageMock() - infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub) + infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub, fakeAdvantage) u := clinicalUsecase.NewUseCasesClinicalImpl(infra) if tt.name == "Sad Case - Fail to get encounter" { @@ -1269,8 +1277,9 @@ func TestUseCasesClinicalImpl_PatchPatientRespirationRate(t *testing.T) { fakePubSub := fakePubSubMock.NewPubSubServiceMock() fakeUpload := fakeUploadMock.NewFakeUploadMock() + fakeAdvantage := fakeAdvantageMock.NewFakeAdvantageMock() - infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub) + infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub, fakeAdvantage) u := clinicalUsecase.NewUseCasesClinicalImpl(infra) if tt.name == "Sad Case - fail to get observation" { @@ -1421,8 +1430,9 @@ func TestUseCasesClinicalImpl_RecordPulseRate(t *testing.T) { fakePubSub := fakePubSubMock.NewPubSubServiceMock() fakeUpload := fakeUploadMock.NewFakeUploadMock() + fakeAdvantage := fakeAdvantageMock.NewFakeAdvantageMock() - infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub) + infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub, fakeAdvantage) u := clinicalUsecase.NewUseCasesClinicalImpl(infra) if tt.name == "Sad Case - Fail to get encounter" { @@ -1555,8 +1565,9 @@ func TestUseCasesClinicalImpl_PatchPatientPulseRate(t *testing.T) { fakePubSub := fakePubSubMock.NewPubSubServiceMock() fakeUpload := fakeUploadMock.NewFakeUploadMock() + fakeAdvantage := fakeAdvantageMock.NewFakeAdvantageMock() - infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub) + infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub, fakeAdvantage) u := clinicalUsecase.NewUseCasesClinicalImpl(infra) if tt.name == "Sad Case - fail to get observation" { @@ -1707,8 +1718,9 @@ func TestUseCasesClinicalImpl_RecordBloodPressure(t *testing.T) { fakePubSub := fakePubSubMock.NewPubSubServiceMock() fakeUpload := fakeUploadMock.NewFakeUploadMock() + fakeAdvantage := fakeAdvantageMock.NewFakeAdvantageMock() - infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub) + infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub, fakeAdvantage) u := clinicalUsecase.NewUseCasesClinicalImpl(infra) if tt.name == "Sad Case - Fail to get encounter" { @@ -1863,8 +1875,9 @@ func TestUseCasesClinicalImpl_RecordDiastolicBloodPressure(t *testing.T) { fakePubSub := fakePubSubMock.NewPubSubServiceMock() fakeUpload := fakeUploadMock.NewFakeUploadMock() + fakeAdvantage := fakeAdvantageMock.NewFakeAdvantageMock() - infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub) + infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub, fakeAdvantage) u := clinicalUsecase.NewUseCasesClinicalImpl(infra) if tt.name == "Sad Case - Fail to get encounter" { @@ -2019,8 +2032,9 @@ func TestUseCasesClinicalImpl_RecordColposcopy(t *testing.T) { fakePubSub := fakePubSubMock.NewPubSubServiceMock() fakeUpload := fakeUploadMock.NewFakeUploadMock() + fakeAdvantage := fakeAdvantageMock.NewFakeAdvantageMock() - infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub) + infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub, fakeAdvantage) u := clinicalUsecase.NewUseCasesClinicalImpl(infra) if tt.name == "Sad Case - Fail to get encounter" { @@ -2153,8 +2167,9 @@ func TestUseCasesClinicalImpl_PatchPatientDiastolicBloodPressure(t *testing.T) { fakePubSub := fakePubSubMock.NewPubSubServiceMock() fakeUpload := fakeUploadMock.NewFakeUploadMock() + fakeAdvantage := fakeAdvantageMock.NewFakeAdvantageMock() - infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub) + infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub, fakeAdvantage) u := clinicalUsecase.NewUseCasesClinicalImpl(infra) if tt.name == "Sad Case - fail to get observation" { @@ -2292,8 +2307,9 @@ func TestUseCasesClinicalImpl_GetPatientDiastolicBloodPressureEntries(t *testing fakePubSub := fakePubSubMock.NewPubSubServiceMock() fakeUpload := fakeUploadMock.NewFakeUploadMock() + fakeAdvantage := fakeAdvantageMock.NewFakeAdvantageMock() - infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub) + infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub, fakeAdvantage) u := clinicalUsecase.NewUseCasesClinicalImpl(infra) if tt.name == "Sad Case - Invalid patient ID" { @@ -2438,8 +2454,9 @@ func TestUseCasesClinicalImpl_RecordBMI(t *testing.T) { fakePubSub := fakePubSubMock.NewPubSubServiceMock() fakeUpload := fakeUploadMock.NewFakeUploadMock() + fakeAdvantage := fakeAdvantageMock.NewFakeAdvantageMock() - infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub) + infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub, fakeAdvantage) u := clinicalUsecase.NewUseCasesClinicalImpl(infra) if tt.name == "Sad Case - Fail to get encounter" { @@ -2616,8 +2633,9 @@ func TestUseCasesClinicalImpl_GetPatientObservations(t *testing.T) { fakePubSub := fakePubSubMock.NewPubSubServiceMock() fakeUpload := fakeUploadMock.NewFakeUploadMock() + fakeAdvantage := fakeAdvantageMock.NewFakeAdvantageMock() - infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub) + infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub, fakeAdvantage) u := clinicalUsecase.NewUseCasesClinicalImpl(infra) if tt.name == "Sad Case - fail to get patient" { @@ -3035,8 +3053,9 @@ func TestUseCasesClinicalImpl_GetPatientTemperatureEntries(t *testing.T) { fakePubSub := fakePubSubMock.NewPubSubServiceMock() fakeUpload := fakeUploadMock.NewFakeUploadMock() + fakeAdvantage := fakeAdvantageMock.NewFakeAdvantageMock() - infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub) + infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub, fakeAdvantage) u := clinicalUsecase.NewUseCasesClinicalImpl(infra) if tt.name == "Sad Case - Invalid patient ID" { @@ -3159,8 +3178,9 @@ func TestUseCasesClinicalImpl_PatchPatientTemperature(t *testing.T) { fakePubSub := fakePubSubMock.NewPubSubServiceMock() fakeUpload := fakeUploadMock.NewFakeUploadMock() + fakeAdvantage := fakeAdvantageMock.NewFakeAdvantageMock() - infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub) + infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub, fakeAdvantage) u := clinicalUsecase.NewUseCasesClinicalImpl(infra) if tt.name == "Sad Case - fail to get observation" { @@ -3293,8 +3313,9 @@ func TestUseCasesClinicalImpl_GetPatientBloodPressureEntries(t *testing.T) { fakePubSub := fakePubSubMock.NewPubSubServiceMock() fakeUpload := fakeUploadMock.NewFakeUploadMock() + fakeAdvantage := fakeAdvantageMock.NewFakeAdvantageMock() - infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub) + infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub, fakeAdvantage) u := clinicalUsecase.NewUseCasesClinicalImpl(infra) if tt.name == "Sad Case - Invalid patient ID" { @@ -3417,8 +3438,9 @@ func TestUseCasesClinicalImpl_PatchPatientSystolicBloodPressure(t *testing.T) { fakePubSub := fakePubSubMock.NewPubSubServiceMock() fakeUpload := fakeUploadMock.NewFakeUploadMock() + fakeAdvantage := fakeAdvantageMock.NewFakeAdvantageMock() - infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub) + infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub, fakeAdvantage) u := clinicalUsecase.NewUseCasesClinicalImpl(infra) if tt.name == "Sad Case - fail to get observation" { @@ -3551,8 +3573,9 @@ func TestUseCasesClinicalImpl_GetHeight(t *testing.T) { fakePubSub := fakePubSubMock.NewPubSubServiceMock() fakeUpload := fakeUploadMock.NewFakeUploadMock() + fakeAdvantage := fakeAdvantageMock.NewFakeAdvantageMock() - infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub) + infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub, fakeAdvantage) c := clinicalUsecase.NewUseCasesClinicalImpl(infra) if tt.name == "Sad Case - Invalid patient ID" { @@ -3667,8 +3690,9 @@ func TestUseCasesClinicalImpl_GetPatientPulseRateEntries(t *testing.T) { fakePubSub := fakePubSubMock.NewPubSubServiceMock() fakeUpload := fakeUploadMock.NewFakeUploadMock() + fakeAdvantage := fakeAdvantageMock.NewFakeAdvantageMock() - infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub) + infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub, fakeAdvantage) c := clinicalUsecase.NewUseCasesClinicalImpl(infra) if tt.name == "Sad Case - Invalid patient ID" { @@ -3783,8 +3807,9 @@ func TestUseCasesClinicalImpl_GetPatientRespiratoryRateEntries(t *testing.T) { fakePubSub := fakePubSubMock.NewPubSubServiceMock() fakeUpload := fakeUploadMock.NewFakeUploadMock() + fakeAdvantage := fakeAdvantageMock.NewFakeAdvantageMock() - infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub) + infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub, fakeAdvantage) u := clinicalUsecase.NewUseCasesClinicalImpl(infra) if tt.name == "Sad Case - Invalid patient ID" { @@ -3905,8 +3930,9 @@ func TestUseCasesClinicalImpl_GetPatientBMIEntries(t *testing.T) { fakePubSub := fakePubSubMock.NewPubSubServiceMock() fakeUpload := fakeUploadMock.NewFakeUploadMock() + fakeAdvantage := fakeAdvantageMock.NewFakeAdvantageMock() - infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub) + infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub, fakeAdvantage) u := clinicalUsecase.NewUseCasesClinicalImpl(infra) if tt.name == "Sad Case - Invalid patient ID" { @@ -4029,8 +4055,9 @@ func TestUseCasesClinicalImpl_PatchPatientBMI(t *testing.T) { fakePubSub := fakePubSubMock.NewPubSubServiceMock() fakeUpload := fakeUploadMock.NewFakeUploadMock() + fakeAdvantage := fakeAdvantageMock.NewFakeAdvantageMock() - infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub) + infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub, fakeAdvantage) u := clinicalUsecase.NewUseCasesClinicalImpl(infra) if tt.name == "Sad Case - fail to get observation" { @@ -4158,8 +4185,9 @@ func TestUseCasesClinicalImpl_GetPatientWeightEntries(t *testing.T) { fakePubSub := fakePubSubMock.NewPubSubServiceMock() fakeUpload := fakeUploadMock.NewFakeUploadMock() + fakeAdvantage := fakeAdvantageMock.NewFakeAdvantageMock() - infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub) + infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub, fakeAdvantage) c := clinicalUsecase.NewUseCasesClinicalImpl(infra) if tt.name == "Sad Case - Invalid patient ID" { @@ -4276,8 +4304,9 @@ func TestUseCasesClinicalImpl_PatchPatientWeight(t *testing.T) { fakePubSub := fakePubSubMock.NewPubSubServiceMock() fakeUpload := fakeUploadMock.NewFakeUploadMock() + fakeAdvantage := fakeAdvantageMock.NewFakeAdvantageMock() - infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub) + infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub, fakeAdvantage) u := clinicalUsecase.NewUseCasesClinicalImpl(infra) if tt.name == "Sad Case - fail to get observation" { @@ -4404,8 +4433,9 @@ func TestUseCasesClinicalImpl_GetPatientMuacEntries(t *testing.T) { fakePubSub := fakePubSubMock.NewPubSubServiceMock() fakeUpload := fakeUploadMock.NewFakeUploadMock() + fakeAdvantage := fakeAdvantageMock.NewFakeAdvantageMock() - infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub) + infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub, fakeAdvantage) c := clinicalUsecase.NewUseCasesClinicalImpl(infra) if tt.name == "Sad Case - Invalid patient ID" { @@ -4522,8 +4552,9 @@ func TestUseCasesClinicalImpl_PatchPatientMuac(t *testing.T) { fakePubSub := fakePubSubMock.NewPubSubServiceMock() fakeUpload := fakeUploadMock.NewFakeUploadMock() + fakeAdvantage := fakeAdvantageMock.NewFakeAdvantageMock() - infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub) + infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub, fakeAdvantage) u := clinicalUsecase.NewUseCasesClinicalImpl(infra) if tt.name == "Sad Case - fail to get observation" { @@ -4650,8 +4681,9 @@ func TestUseCasesClinicalImpl_GetPatientOxygenSaturationEntries(t *testing.T) { fakePubSub := fakePubSubMock.NewPubSubServiceMock() fakeUpload := fakeUploadMock.NewFakeUploadMock() + fakeAdvantage := fakeAdvantageMock.NewFakeAdvantageMock() - infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub) + infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub, fakeAdvantage) c := clinicalUsecase.NewUseCasesClinicalImpl(infra) if tt.name == "Sad Case - Invalid patient ID" { @@ -4768,8 +4800,9 @@ func TestUseCasesClinicalImpl_PatchPatientOxygenSaturation(t *testing.T) { fakePubSub := fakePubSubMock.NewPubSubServiceMock() fakeUpload := fakeUploadMock.NewFakeUploadMock() + fakeAdvantage := fakeAdvantageMock.NewFakeAdvantageMock() - infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub) + infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub, fakeAdvantage) u := clinicalUsecase.NewUseCasesClinicalImpl(infra) if tt.name == "Sad Case - fail to get observation" { @@ -4908,8 +4941,9 @@ func TestUseCasesClinicalImpl_GetPatientViralLoad(t *testing.T) { fakePubSub := fakePubSubMock.NewPubSubServiceMock() fakeUpload := fakeUploadMock.NewFakeUploadMock() + fakeAdvantage := fakeAdvantageMock.NewFakeAdvantageMock() - infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub) + infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub, fakeAdvantage) c := clinicalUsecase.NewUseCasesClinicalImpl(infra) if tt.name == "Sad Case - Invalid patient ID" { @@ -5026,8 +5060,9 @@ func TestUseCasesClinicalImpl_PatchPatientViralLoad(t *testing.T) { fakePubSub := fakePubSubMock.NewPubSubServiceMock() fakeUpload := fakeUploadMock.NewFakeUploadMock() + fakeAdvantage := fakeAdvantageMock.NewFakeAdvantageMock() - infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub) + infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub, fakeAdvantage) u := clinicalUsecase.NewUseCasesClinicalImpl(infra) if tt.name == "Sad Case - fail to get observation" { @@ -5178,8 +5213,9 @@ func TestUseCasesClinicalImpl_RecordViralLoad(t *testing.T) { fakePubSub := fakePubSubMock.NewPubSubServiceMock() fakeUpload := fakeUploadMock.NewFakeUploadMock() + fakeAdvantage := fakeAdvantageMock.NewFakeAdvantageMock() - infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub) + infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub, fakeAdvantage) c := clinicalUsecase.NewUseCasesClinicalImpl(infra) if tt.name == "Sad Case - Fail to get encounter" { @@ -5328,8 +5364,9 @@ func TestUseCasesClinicalImpl_RecordBloodSugar(t *testing.T) { fakePubSub := fakePubSubMock.NewPubSubServiceMock() fakeUpload := fakeUploadMock.NewFakeUploadMock() + fakeAdvantage := fakeAdvantageMock.NewFakeAdvantageMock() - infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub) + infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub, fakeAdvantage) c := clinicalUsecase.NewUseCasesClinicalImpl(infra) if tt.name == "Sad Case - Fail to get encounter" { @@ -5461,8 +5498,9 @@ func TestUseCasesClinicalImpl_GetPatientBloodSugarEntries(t *testing.T) { fakePubSub := fakePubSubMock.NewPubSubServiceMock() fakeUpload := fakeUploadMock.NewFakeUploadMock() + fakeAdvantage := fakeAdvantageMock.NewFakeAdvantageMock() - infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub) + infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub, fakeAdvantage) c := clinicalUsecase.NewUseCasesClinicalImpl(infra) if tt.name == "Sad Case - Invalid patient ID" { @@ -5579,8 +5617,9 @@ func TestUseCasesClinicalImpl_PatchPatientBloodSugar(t *testing.T) { fakePubSub := fakePubSubMock.NewPubSubServiceMock() fakeUpload := fakeUploadMock.NewFakeUploadMock() + fakeAdvantage := fakeAdvantageMock.NewFakeAdvantageMock() - infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub) + infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub, fakeAdvantage) u := clinicalUsecase.NewUseCasesClinicalImpl(infra) if tt.name == "Sad Case - fail to get observation" { @@ -5731,8 +5770,9 @@ func TestUseCasesClinicalImpl_RecordLastMenstrualPeriod(t *testing.T) { fakePubSub := fakePubSubMock.NewPubSubServiceMock() fakeUpload := fakeUploadMock.NewFakeUploadMock() + fakeAdvantage := fakeAdvantageMock.NewFakeAdvantageMock() - infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub) + infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub, fakeAdvantage) c := clinicalUsecase.NewUseCasesClinicalImpl(infra) if tt.name == "Sad Case - Fail to get encounter" { @@ -5865,8 +5905,9 @@ func TestUseCasesClinicalImpl_PatchPatientLastMenstrualPeriod(t *testing.T) { fakePubSub := fakePubSubMock.NewPubSubServiceMock() fakeUpload := fakeUploadMock.NewFakeUploadMock() + fakeAdvantage := fakeAdvantageMock.NewFakeAdvantageMock() - infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub) + infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub, fakeAdvantage) u := clinicalUsecase.NewUseCasesClinicalImpl(infra) if tt.name == "Sad Case - fail to get observation" { @@ -5994,8 +6035,9 @@ func TestUseCasesClinicalImpl_GetPatientLastMenstrualPeriodEntries(t *testing.T) fakePubSub := fakePubSubMock.NewPubSubServiceMock() fakeUpload := fakeUploadMock.NewFakeUploadMock() + fakeAdvantage := fakeAdvantageMock.NewFakeAdvantageMock() - infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub) + infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub, fakeAdvantage) c := clinicalUsecase.NewUseCasesClinicalImpl(infra) if tt.name == "Sad Case - Invalid patient ID" { @@ -6112,8 +6154,9 @@ func TestUseCasesClinicalImpl_PatchPatientObservations(t *testing.T) { fakePubSub := fakePubSubMock.NewPubSubServiceMock() fakeUpload := fakeUploadMock.NewFakeUploadMock() + fakeAdvantage := fakeAdvantageMock.NewFakeAdvantageMock() - infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub) + infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub, fakeAdvantage) u := clinicalUsecase.NewUseCasesClinicalImpl(infra) if tt.name == "Sad Case - fail to get observation" { @@ -6242,8 +6285,9 @@ func TestUseCasesClinicalImpl_PatchPatientHeight(t *testing.T) { fakePubSub := fakePubSubMock.NewPubSubServiceMock() fakeUpload := fakeUploadMock.NewFakeUploadMock() + fakeAdvantage := fakeAdvantageMock.NewFakeAdvantageMock() - infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub) + infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub, fakeAdvantage) u := clinicalUsecase.NewUseCasesClinicalImpl(infra) if tt.name == "Sad Case - fail to get observation" { @@ -6369,8 +6413,9 @@ func TestUseCasesClinicalImpl_RecordVIA(t *testing.T) { fakeOCL := fakeOCLMock.NewFakeOCLMock() fakePubSub := fakePubSubMock.NewPubSubServiceMock() fakeUpload := fakeUploadMock.NewFakeUploadMock() + fakeAdvantage := fakeAdvantageMock.NewFakeAdvantageMock() - infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub) + infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub, fakeAdvantage) u := clinicalUsecase.NewUseCasesClinicalImpl(infra) if tt.name == "Sad Case - Fail to get concept" { @@ -6496,8 +6541,9 @@ func TestUseCasesClinicalImpl_RecordHPV(t *testing.T) { fakePubSub := fakePubSubMock.NewPubSubServiceMock() fakeUpload := fakeUploadMock.NewFakeUploadMock() + fakeAdvantage := fakeAdvantageMock.NewFakeAdvantageMock() - infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub) + infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub, fakeAdvantage) u := clinicalUsecase.NewUseCasesClinicalImpl(infra) if tt.name == "Sad case: unable to get FHIR encounter" { @@ -6663,8 +6709,9 @@ func TestUseCasesClinicalImpl_RecordPapSmear(t *testing.T) { fakePubSub := fakePubSubMock.NewPubSubServiceMock() fakeUpload := fakeUploadMock.NewFakeUploadMock() + fakeAdvantage := fakeAdvantageMock.NewFakeAdvantageMock() - infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub) + infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub, fakeAdvantage) u := clinicalUsecase.NewUseCasesClinicalImpl(infra) if tt.name == "Sad case: unable to record pap smear" { diff --git a/pkg/clinical/usecases/clinical/organization_test.go b/pkg/clinical/usecases/clinical/organization_test.go index 50118ae7..0f332848 100644 --- a/pkg/clinical/usecases/clinical/organization_test.go +++ b/pkg/clinical/usecases/clinical/organization_test.go @@ -10,6 +10,7 @@ import ( "github.com/savannahghi/clinical/pkg/clinical/domain" "github.com/savannahghi/clinical/pkg/clinical/infrastructure" fakeFHIRMock "github.com/savannahghi/clinical/pkg/clinical/infrastructure/datastore/cloudhealthcare/mock" + fakeAdvantageMock "github.com/savannahghi/clinical/pkg/clinical/infrastructure/services/advantage/mock" fakeOCLMock "github.com/savannahghi/clinical/pkg/clinical/infrastructure/services/openconceptlab/mock" fakePubSubMock "github.com/savannahghi/clinical/pkg/clinical/infrastructure/services/pubsub/mock" fakeUploadMock "github.com/savannahghi/clinical/pkg/clinical/infrastructure/services/upload/mock" @@ -97,8 +98,9 @@ func TestUseCasesClinicalImpl_RegisterTenant(t *testing.T) { fakePubSub := fakePubSubMock.NewPubSubServiceMock() fakeUpload := fakeUploadMock.NewFakeUploadMock() + fakeAdvantage := fakeAdvantageMock.NewFakeAdvantageMock() - infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub) + infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub, fakeAdvantage) u := clinicalUsecase.NewUseCasesClinicalImpl(infra) if tt.name == "Sad Case - Fail to create organisation" { @@ -209,8 +211,9 @@ func TestUseCasesClinicalImpl_RegisterFacility(t *testing.T) { fakePubSub := fakePubSubMock.NewPubSubServiceMock() fakeUpload := fakeUploadMock.NewFakeUploadMock() + fakeAdvantage := fakeAdvantageMock.NewFakeAdvantageMock() - infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub) + infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub, fakeAdvantage) u := clinicalUsecase.NewUseCasesClinicalImpl(infra) if tt.name == "Sad case - fail to register facility" { diff --git a/pkg/clinical/usecases/clinical/patient_unit_test.go b/pkg/clinical/usecases/clinical/patient_unit_test.go index ceceabc8..24fe44a4 100644 --- a/pkg/clinical/usecases/clinical/patient_unit_test.go +++ b/pkg/clinical/usecases/clinical/patient_unit_test.go @@ -14,6 +14,7 @@ import ( "github.com/savannahghi/clinical/pkg/clinical/domain" "github.com/savannahghi/clinical/pkg/clinical/infrastructure" fakeFHIRMock "github.com/savannahghi/clinical/pkg/clinical/infrastructure/datastore/cloudhealthcare/mock" + fakeAdvantageMock "github.com/savannahghi/clinical/pkg/clinical/infrastructure/services/advantage/mock" fakeOCLMock "github.com/savannahghi/clinical/pkg/clinical/infrastructure/services/openconceptlab/mock" fakePubSubMock "github.com/savannahghi/clinical/pkg/clinical/infrastructure/services/pubsub/mock" fakeUploadMock "github.com/savannahghi/clinical/pkg/clinical/infrastructure/services/upload/mock" @@ -331,8 +332,9 @@ func TestClinicalUseCaseImpl_GetMedicalData(t *testing.T) { fakePubSub := fakePubSubMock.NewPubSubServiceMock() fakeUpload := fakeUploadMock.NewFakeUploadMock() + fakeAdvantage := fakeAdvantageMock.NewFakeAdvantageMock() - infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub) + infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub, fakeAdvantage) u := clinicalUsecase.NewUseCasesClinicalImpl(infra) if tt.name == "Happy Case - Successfully search medication statement" { @@ -1895,8 +1897,9 @@ func TestUseCasesClinicalImpl_CreatePatient(t *testing.T) { fakePubSub := fakePubSubMock.NewPubSubServiceMock() fakeUpload := fakeUploadMock.NewFakeUploadMock() + fakeAdvantage := fakeAdvantageMock.NewFakeAdvantageMock() - infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub) + infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub, fakeAdvantage) c := clinicalUsecase.NewUseCasesClinicalImpl(infra) if tt.name == "sad case: fail to get tenant tags" { @@ -2031,8 +2034,9 @@ func TestUseCasesClinicalImpl_PatchPatient(t *testing.T) { fakeOCL := fakeOCLMock.NewFakeOCLMock() fakePubSub := fakePubSubMock.NewPubSubServiceMock() fakeUpload := fakeUploadMock.NewFakeUploadMock() + fakeAdvantage := fakeAdvantageMock.NewFakeAdvantageMock() - infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub) + infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub, fakeAdvantage) u := clinicalUsecase.NewUseCasesClinicalImpl(infra) if tt.name == "Sad Case - Fail to patch patient" { @@ -2107,8 +2111,9 @@ func TestUseCasesClinicalImpl_DeletePatient(t *testing.T) { fakeOCL := fakeOCLMock.NewFakeOCLMock() fakePubSub := fakePubSubMock.NewPubSubServiceMock() fakeUpload := fakeUploadMock.NewFakeUploadMock() + fakeAdvantage := fakeAdvantageMock.NewFakeAdvantageMock() - infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub) + infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub, fakeAdvantage) u := clinicalUsecase.NewUseCasesClinicalImpl(infra) if tt.name == "Sad Case - Fail to delete patient" { diff --git a/pkg/clinical/usecases/clinical/pubsub_test.go b/pkg/clinical/usecases/clinical/pubsub_test.go index f9f58225..ae536e8d 100644 --- a/pkg/clinical/usecases/clinical/pubsub_test.go +++ b/pkg/clinical/usecases/clinical/pubsub_test.go @@ -13,6 +13,7 @@ import ( "github.com/savannahghi/clinical/pkg/clinical/domain" "github.com/savannahghi/clinical/pkg/clinical/infrastructure" fakeFHIRMock "github.com/savannahghi/clinical/pkg/clinical/infrastructure/datastore/cloudhealthcare/mock" + fakeAdvantageMock "github.com/savannahghi/clinical/pkg/clinical/infrastructure/services/advantage/mock" fakeOCLMock "github.com/savannahghi/clinical/pkg/clinical/infrastructure/services/openconceptlab/mock" fakePubSubMock "github.com/savannahghi/clinical/pkg/clinical/infrastructure/services/pubsub/mock" fakeUploadMock "github.com/savannahghi/clinical/pkg/clinical/infrastructure/services/upload/mock" @@ -111,8 +112,9 @@ func TestUseCasesClinicalImpl_CreatePubsubPatient(t *testing.T) { fakePubSub := fakePubSubMock.NewPubSubServiceMock() fakeUpload := fakeUploadMock.NewFakeUploadMock() + fakeAdvantage := fakeAdvantageMock.NewFakeAdvantageMock() - infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub) + infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub, fakeAdvantage) u := clinicalUsecase.NewUseCasesClinicalImpl(infra) if tt.name == "Sad Case - Fail to create patient" { @@ -208,8 +210,9 @@ func TestUseCasesClinicalImpl_CreatePubsubOrganization(t *testing.T) { fakePubSub := fakePubSubMock.NewPubSubServiceMock() fakeUpload := fakeUploadMock.NewFakeUploadMock() + fakeAdvantage := fakeAdvantageMock.NewFakeAdvantageMock() - infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub) + infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub, fakeAdvantage) u := clinicalUsecase.NewUseCasesClinicalImpl(infra) if tt.name == "Sad Case - Fail to create pubsub organization" { @@ -373,8 +376,9 @@ func TestUseCasesClinicalImpl_CreatePubsubVitals(t *testing.T) { fakePubSub := fakePubSubMock.NewPubSubServiceMock() fakeUpload := fakeUploadMock.NewFakeUploadMock() + fakeAdvantage := fakeAdvantageMock.NewFakeAdvantageMock() - infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub) + infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub, fakeAdvantage) u := clinicalUsecase.NewUseCasesClinicalImpl(infra) if tt.name == "Sad Case - fail to create pubsub vitals with facilityID" { @@ -562,8 +566,9 @@ func TestUseCasesClinicalImpl_CreatePubsubTestResult(t *testing.T) { fakePubSub := fakePubSubMock.NewPubSubServiceMock() fakeUpload := fakeUploadMock.NewFakeUploadMock() + fakeAdvantage := fakeAdvantageMock.NewFakeAdvantageMock() - infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub) + infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub, fakeAdvantage) u := clinicalUsecase.NewUseCasesClinicalImpl(infra) if tt.name == "Sad Case - fail create pubsub vitals with facilityID" { @@ -773,8 +778,9 @@ func TestUseCasesClinicalImpl_CreatePubsubMedicationStatement(t *testing.T) { fakePubSub := fakePubSubMock.NewPubSubServiceMock() fakeUpload := fakeUploadMock.NewFakeUploadMock() + fakeAdvantage := fakeAdvantageMock.NewFakeAdvantageMock() - infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub) + infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub, fakeAdvantage) u := clinicalUsecase.NewUseCasesClinicalImpl(infra) if tt.name == "Sad Case - fail to create medication statement with facilityID" { @@ -963,8 +969,9 @@ func TestUseCasesClinicalImpl_CreatePubsubAllergyIntolerance(t *testing.T) { fakePubSub := fakePubSubMock.NewPubSubServiceMock() fakeUpload := fakeUploadMock.NewFakeUploadMock() + fakeAdvantage := fakeAdvantageMock.NewFakeAdvantageMock() - infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub) + infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub, fakeAdvantage) u := clinicalUsecase.NewUseCasesClinicalImpl(infra) if tt.name == "Sad Case - fail create allergy with reaction" { @@ -1072,8 +1079,9 @@ func TestUseCasesClinicalImpl_getConcept(t *testing.T) { fakePubSub := fakePubSubMock.NewPubSubServiceMock() fakeUpload := fakeUploadMock.NewFakeUploadMock() + fakeAdvantage := fakeAdvantageMock.NewFakeAdvantageMock() - infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub) + infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub, fakeAdvantage) c := clinicalUsecase.NewUseCasesClinicalImpl(infra) if tt.name == "Sad case: failed to get icd10 concept" { @@ -1179,8 +1187,9 @@ func TestUseCasesClinicalImpl_CreatePubsubTenant(t *testing.T) { fakePubSub := fakePubSubMock.NewPubSubServiceMock() fakeUpload := fakeUploadMock.NewFakeUploadMock() + fakeAdvantage := fakeAdvantageMock.NewFakeAdvantageMock() - infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub) + infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub, fakeAdvantage) c := clinicalUsecase.NewUseCasesClinicalImpl(infra) if tt.name == "Sad case: unable to create tenant" { diff --git a/pkg/clinical/usecases/clinical/questionnaire_response.go b/pkg/clinical/usecases/clinical/questionnaire_response.go index 07907015..1db7ee8d 100644 --- a/pkg/clinical/usecases/clinical/questionnaire_response.go +++ b/pkg/clinical/usecases/clinical/questionnaire_response.go @@ -108,6 +108,11 @@ func (u *UseCasesClinicalImpl) generateQuestionnaireReviewSummary( return "", err } + patient, err := u.infrastructure.FHIR.GetFHIRPatient(ctx, *encounter.Resource.Subject.ID) + if err != nil { + return "", err + } + switch *questionnaire.Resource.Title { // TODO: Make this a controlled enum? case "Cervical Cancer Screening": @@ -147,6 +152,14 @@ func (u *UseCasesClinicalImpl) generateQuestionnaireReviewSummary( return "", err } + err := u.infrastructure.Pubsub.NotifySegmentation(ctx, dto.SegmentationPayload{ + ClinicalID: *patient.Resource.ID, + SegmentLabel: dto.SegmentationCategoryHighRiskNegative, + }) + if err != nil { + return "", err + } + case totalScore < 2: riskLevel, err = u.recordRiskAssessment( ctx, @@ -159,6 +172,14 @@ func (u *UseCasesClinicalImpl) generateQuestionnaireReviewSummary( if err != nil { return "", err } + + err := u.infrastructure.Pubsub.NotifySegmentation(ctx, dto.SegmentationPayload{ + ClinicalID: *patient.Resource.ID, + SegmentLabel: dto.SegmentationCategoryLowRisk, + }) + if err != nil { + return "", err + } } case "Breast Cancer Screening": diff --git a/pkg/clinical/usecases/clinical/questionnaire_response_test.go b/pkg/clinical/usecases/clinical/questionnaire_response_test.go index 068d1d7c..30cbba5b 100644 --- a/pkg/clinical/usecases/clinical/questionnaire_response_test.go +++ b/pkg/clinical/usecases/clinical/questionnaire_response_test.go @@ -11,6 +11,7 @@ import ( "github.com/savannahghi/clinical/pkg/clinical/domain" "github.com/savannahghi/clinical/pkg/clinical/infrastructure" fakeFHIRMock "github.com/savannahghi/clinical/pkg/clinical/infrastructure/datastore/cloudhealthcare/mock" + fakeAdvantageMock "github.com/savannahghi/clinical/pkg/clinical/infrastructure/services/advantage/mock" fakeOCLMock "github.com/savannahghi/clinical/pkg/clinical/infrastructure/services/openconceptlab/mock" fakePubSubMock "github.com/savannahghi/clinical/pkg/clinical/infrastructure/services/pubsub/mock" fakeUploadMock "github.com/savannahghi/clinical/pkg/clinical/infrastructure/services/upload/mock" @@ -202,6 +203,24 @@ func TestUseCasesClinicalImpl_CreateQuestionnaireResponse(t *testing.T) { }, wantErr: false, }, + { + name: "Sad Case - fail to get patient", + args: args{ + ctx: context.Background(), + encounterID: gofakeit.UUID(), + questionnaireID: gofakeit.UUID(), + }, + wantErr: true, + }, + { + name: "Sad Case - fail to publish to pusbsub", + args: args{ + ctx: context.Background(), + encounterID: gofakeit.UUID(), + questionnaireID: gofakeit.UUID(), + }, + wantErr: true, + }, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { @@ -211,8 +230,9 @@ func TestUseCasesClinicalImpl_CreateQuestionnaireResponse(t *testing.T) { fakePubSub := fakePubSubMock.NewPubSubServiceMock() fakeUpload := fakeUploadMock.NewFakeUploadMock() + fakeAdvantage := fakeAdvantageMock.NewFakeAdvantageMock() - infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub) + infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub, fakeAdvantage) q := clinicalUsecase.NewUseCasesClinicalImpl(infra) if tt.name == "Sad case: unable to create questionnaire response" { @@ -452,6 +472,16 @@ func TestUseCasesClinicalImpl_CreateQuestionnaireResponse(t *testing.T) { if tt.name == "Sad Case - Fail to record risk assessment - High Risk" { setupMockFHIRFunctions(fakeFHIR, 3) } + if tt.name == "Sad Case - fail to get patient" { + fakeFHIR.MockGetFHIRPatientFn = func(ctx context.Context, id string) (*domain.FHIRPatientRelayPayload, error) { + return nil, fmt.Errorf("failed to get patient") + } + } + if tt.name == "Sad Case - fail to publish to pusbsub" { + fakePubSub.MockNotifySegmentationFn = func(ctx context.Context, data dto.SegmentationPayload) error { + return fmt.Errorf("failed to publish to pubsub") + } + } _, err := q.CreateQuestionnaireResponse(tt.args.ctx, tt.args.questionnaireID, tt.args.encounterID, tt.args.input) if (err != nil) != tt.wantErr { @@ -520,8 +550,9 @@ func TestUseCasesClinicalImpl_GetQuestionnaireResponseRiskLevel(t *testing.T) { fakePubSub := fakePubSubMock.NewPubSubServiceMock() fakeUpload := fakeUploadMock.NewFakeUploadMock() + fakeAdvantage := fakeAdvantageMock.NewFakeAdvantageMock() - infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub) + infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub, fakeAdvantage) u := clinicalUsecase.NewUseCasesClinicalImpl(infra) if tt.name == "Sad Case - Fail to get fhir encounter" { diff --git a/pkg/clinical/usecases/clinical/questionnaire_test.go b/pkg/clinical/usecases/clinical/questionnaire_test.go index cefc927a..08acbf49 100644 --- a/pkg/clinical/usecases/clinical/questionnaire_test.go +++ b/pkg/clinical/usecases/clinical/questionnaire_test.go @@ -11,6 +11,7 @@ import ( "github.com/savannahghi/clinical/pkg/clinical/domain" "github.com/savannahghi/clinical/pkg/clinical/infrastructure" fakeFHIRMock "github.com/savannahghi/clinical/pkg/clinical/infrastructure/datastore/cloudhealthcare/mock" + fakeAdvantageMock "github.com/savannahghi/clinical/pkg/clinical/infrastructure/services/advantage/mock" fakeOCLMock "github.com/savannahghi/clinical/pkg/clinical/infrastructure/services/openconceptlab/mock" fakePubSubMock "github.com/savannahghi/clinical/pkg/clinical/infrastructure/services/pubsub/mock" fakeUploadMock "github.com/savannahghi/clinical/pkg/clinical/infrastructure/services/upload/mock" @@ -103,8 +104,9 @@ func TestUseCasesClinicalImpl_CreateQuestionnaire(t *testing.T) { fakePubSub := fakePubSubMock.NewPubSubServiceMock() fakeUpload := fakeUploadMock.NewFakeUploadMock() + fakeAdvantage := fakeAdvantageMock.NewFakeAdvantageMock() - infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub) + infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub, fakeAdvantage) q := clinicalUsecase.NewUseCasesClinicalImpl(infra) if tt.name == "Sad case: unable to get tenant tags" { @@ -174,8 +176,9 @@ func TestUseCasesClinicalImpl_ListQuestionnaires(t *testing.T) { fakePubSub := fakePubSubMock.NewPubSubServiceMock() fakeUpload := fakeUploadMock.NewFakeUploadMock() + fakeAdvantage := fakeAdvantageMock.NewFakeAdvantageMock() - infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub) + infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub, fakeAdvantage) q := clinicalUsecase.NewUseCasesClinicalImpl(infra) if tt.name == "Sad case: unable to list questionnaire" { diff --git a/pkg/clinical/usecases/clinical/riskassessment_test.go b/pkg/clinical/usecases/clinical/riskassessment_test.go index f6693be7..89f739f7 100644 --- a/pkg/clinical/usecases/clinical/riskassessment_test.go +++ b/pkg/clinical/usecases/clinical/riskassessment_test.go @@ -9,6 +9,7 @@ import ( "github.com/savannahghi/clinical/pkg/clinical/domain" "github.com/savannahghi/clinical/pkg/clinical/infrastructure" fakeFHIRMock "github.com/savannahghi/clinical/pkg/clinical/infrastructure/datastore/cloudhealthcare/mock" + fakeAdvantageMock "github.com/savannahghi/clinical/pkg/clinical/infrastructure/services/advantage/mock" fakeOCLMock "github.com/savannahghi/clinical/pkg/clinical/infrastructure/services/openconceptlab/mock" fakePubSubMock "github.com/savannahghi/clinical/pkg/clinical/infrastructure/services/pubsub/mock" fakeUploadMock "github.com/savannahghi/clinical/pkg/clinical/infrastructure/services/upload/mock" @@ -49,8 +50,9 @@ func TestUseCasesClinicalImpl_RecordRiskAssessment(t *testing.T) { fakePubSub := fakePubSubMock.NewPubSubServiceMock() fakeUpload := fakeUploadMock.NewFakeUploadMock() + fakeAdvantage := fakeAdvantageMock.NewFakeAdvantageMock() - infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub) + infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub, fakeAdvantage) c := clinicalUsecase.NewUseCasesClinicalImpl(infra) if tt.name == "Sad Case - fail to create fhir risk assessment" { diff --git a/pkg/clinical/usecases/clinical/timeline_test.go b/pkg/clinical/usecases/clinical/timeline_test.go index 89b24e4a..f1d7e3f1 100644 --- a/pkg/clinical/usecases/clinical/timeline_test.go +++ b/pkg/clinical/usecases/clinical/timeline_test.go @@ -12,6 +12,7 @@ import ( "github.com/savannahghi/clinical/pkg/clinical/domain" "github.com/savannahghi/clinical/pkg/clinical/infrastructure" fakeFHIRMock "github.com/savannahghi/clinical/pkg/clinical/infrastructure/datastore/cloudhealthcare/mock" + fakeAdvantageMock "github.com/savannahghi/clinical/pkg/clinical/infrastructure/services/advantage/mock" fakeOCLMock "github.com/savannahghi/clinical/pkg/clinical/infrastructure/services/openconceptlab/mock" fakePubSubMock "github.com/savannahghi/clinical/pkg/clinical/infrastructure/services/pubsub/mock" fakeUploadMock "github.com/savannahghi/clinical/pkg/clinical/infrastructure/services/upload/mock" @@ -338,8 +339,9 @@ func TestClinicalUseCaseImpl_PatientTimeline(t *testing.T) { fakePubSub := fakePubSubMock.NewPubSubServiceMock() fakeUpload := fakeUploadMock.NewFakeUploadMock() + fakeAdvantage := fakeAdvantageMock.NewFakeAdvantageMock() - infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub) + infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub, fakeAdvantage) u := clinicalUsecase.NewUseCasesClinicalImpl(infra) if tt.name == "Happy case: patient timeline" { @@ -1594,8 +1596,9 @@ func TestClinicalUseCaseImpl_PatientHealthTimeline(t *testing.T) { fakePubSub := fakePubSubMock.NewPubSubServiceMock() fakeUpload := fakeUploadMock.NewFakeUploadMock() + fakeAdvantage := fakeAdvantageMock.NewFakeAdvantageMock() - infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub) + infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub, fakeAdvantage) u := clinicalUsecase.NewUseCasesClinicalImpl(infra) if tt.name == "Happy case: patient timeline" { diff --git a/pkg/clinical/usecases/clinical/utils_test.go b/pkg/clinical/usecases/clinical/utils_test.go index 89cfac71..50629946 100644 --- a/pkg/clinical/usecases/clinical/utils_test.go +++ b/pkg/clinical/usecases/clinical/utils_test.go @@ -11,6 +11,7 @@ import ( "github.com/savannahghi/clinical/pkg/clinical/domain" "github.com/savannahghi/clinical/pkg/clinical/infrastructure" fakeFHIRMock "github.com/savannahghi/clinical/pkg/clinical/infrastructure/datastore/cloudhealthcare/mock" + fakeAdvantageMock "github.com/savannahghi/clinical/pkg/clinical/infrastructure/services/advantage/mock" fakeOCLMock "github.com/savannahghi/clinical/pkg/clinical/infrastructure/services/openconceptlab/mock" fakePubSubMock "github.com/savannahghi/clinical/pkg/clinical/infrastructure/services/pubsub/mock" fakeUploadMock "github.com/savannahghi/clinical/pkg/clinical/infrastructure/services/upload/mock" @@ -52,23 +53,24 @@ func TestUseCasesClinicalImpl_GetTenantMetaTags(t *testing.T) { } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - FakeExt := fakeExtMock.NewFakeBaseExtensionMock() - Fakefhir := fakeFHIRMock.NewFHIRMock() - FakeOCL := fakeOCLMock.NewFakeOCLMock() + fakeExt := fakeExtMock.NewFakeBaseExtensionMock() + fakeFHIR := fakeFHIRMock.NewFHIRMock() + fakeOCL := fakeOCLMock.NewFakeOCLMock() fakeUpload := fakeUploadMock.NewFakeUploadMock() fakePubSub := fakePubSubMock.NewPubSubServiceMock() + fakeAdvantage := fakeAdvantageMock.NewFakeAdvantageMock() - infra := infrastructure.NewInfrastructureInteractor(FakeExt, Fakefhir, FakeOCL, fakeUpload, fakePubSub) + infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub, fakeAdvantage) c := clinicalUsecase.NewUseCasesClinicalImpl(infra) if tt.name == "sad case: missing tenant org in context" { - FakeExt.MockGetTenantIdentifiersFn = func(ctx context.Context) (*dto.TenantIdentifiers, error) { + fakeExt.MockGetTenantIdentifiersFn = func(ctx context.Context) (*dto.TenantIdentifiers, error) { return nil, fmt.Errorf("failed to to get identifiers") } } if tt.name == "sad case: error retrieving organisation" { - Fakefhir.MockGetFHIROrganizationFn = func(ctx context.Context, organisationID string) (*domain.FHIROrganizationRelayPayload, error) { + fakeFHIR.MockGetFHIROrganizationFn = func(ctx context.Context, organisationID string) (*domain.FHIROrganizationRelayPayload, error) { return nil, fmt.Errorf("failed to find organization") } } @@ -195,8 +197,9 @@ func TestUseCasesClinicalImpl_CheckPatientExistenceUsingPhoneNumber(t *testing.T FakeOCL := fakeOCLMock.NewFakeOCLMock() fakeUpload := fakeUploadMock.NewFakeUploadMock() fakePubSub := fakePubSubMock.NewPubSubServiceMock() + fakeAdvantage := fakeAdvantageMock.NewFakeAdvantageMock() - infra := infrastructure.NewInfrastructureInteractor(FakeExt, Fakefhir, FakeOCL, fakeUpload, fakePubSub) + infra := infrastructure.NewInfrastructureInteractor(FakeExt, Fakefhir, FakeOCL, fakeUpload, fakePubSub, fakeAdvantage) c := clinicalUsecase.NewUseCasesClinicalImpl(infra) if tt.name == "sad case: missing tenant org in context" { @@ -313,13 +316,14 @@ func TestUseCasesClinicalImpl_ContactsToContactPointInput(t *testing.T) { } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - FakeExt := fakeExtMock.NewFakeBaseExtensionMock() - Fakefhir := fakeFHIRMock.NewFHIRMock() - FakeOCL := fakeOCLMock.NewFakeOCLMock() + fakeExt := fakeExtMock.NewFakeBaseExtensionMock() + fakeFHIR := fakeFHIRMock.NewFHIRMock() + fakeOCL := fakeOCLMock.NewFakeOCLMock() fakeUpload := fakeUploadMock.NewFakeUploadMock() fakePubSub := fakePubSubMock.NewPubSubServiceMock() + fakeAdvantage := fakeAdvantageMock.NewFakeAdvantageMock() - infra := infrastructure.NewInfrastructureInteractor(FakeExt, Fakefhir, FakeOCL, fakeUpload, fakePubSub) + infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub, fakeAdvantage) c := clinicalUsecase.NewUseCasesClinicalImpl(infra) got, err := c.ContactsToContactPointInput(tt.args.ctx, tt.args.phones, tt.args.emails) @@ -466,13 +470,14 @@ func TestUseCasesClinicalImpl_SimplePatientRegistrationInputToPatientInput(t *te } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { - ext := fakeExtMock.NewFakeBaseExtensionMock() - fhir := fakeFHIRMock.NewFHIRMock() - ocl := fakeOCLMock.NewFakeOCLMock() + fakeExt := fakeExtMock.NewFakeBaseExtensionMock() + fakeFHIR := fakeFHIRMock.NewFHIRMock() + fakeOCL := fakeOCLMock.NewFakeOCLMock() fakeUpload := fakeUploadMock.NewFakeUploadMock() fakePubSub := fakePubSubMock.NewPubSubServiceMock() + fakeAdvantage := fakeAdvantageMock.NewFakeAdvantageMock() - infra := infrastructure.NewInfrastructureInteractor(ext, fhir, ocl, fakeUpload, fakePubSub) + infra := infrastructure.NewInfrastructureInteractor(fakeExt, fakeFHIR, fakeOCL, fakeUpload, fakePubSub, fakeAdvantage) c := clinicalUsecase.NewUseCasesClinicalImpl(infra) got, err := c.SimplePatientRegistrationInputToPatientInput(tt.args.ctx, tt.args.input)