Skip to content

Commit

Permalink
chore: refactor record consent to take encounter id insted of patient…
Browse files Browse the repository at this point in the history
… id (#339)
  • Loading branch information
allansifuna committed Feb 1, 2024
1 parent 3f2b38a commit 73fb3bd
Show file tree
Hide file tree
Showing 5 changed files with 35 additions and 30 deletions.
8 changes: 4 additions & 4 deletions pkg/clinical/application/dto/input.go
Original file line number Diff line number Diff line change
Expand Up @@ -132,10 +132,10 @@ type SectionInput struct {

// ConsentInput models the consent input
type ConsentInput struct {
Status ConsentStatusEnum `json:"status"`
Provision ConsentProvisionTypeEnum `json:"provision,omitempty"`
PatientID string `json:"patientID,omitempty"`
DenyReason string `json:"denyReason,omitempty"`
Status ConsentStatusEnum `json:"status"`
Provision ConsentProvisionTypeEnum `json:"provision,omitempty"`
EncounterID string `json:"encounterID,omitempty"`
DenyReason string `json:"denyReason,omitempty"`
}

// QuestionnaireResponse models input for questionnaire response resource in fhir
Expand Down
10 changes: 5 additions & 5 deletions pkg/clinical/presentation/graph/generated/generated.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion pkg/clinical/presentation/graph/inputs.graphql
Original file line number Diff line number Diff line change
Expand Up @@ -107,7 +107,7 @@ input Pagination {

input ConsentInput{
provision: ConsentProvisionTypeEnum!
patientID: String!
encounterID: String!
denyReason: String
}

Expand Down
13 changes: 9 additions & 4 deletions pkg/clinical/usecases/clinical/consent.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,15 +11,20 @@ import (

// RecordConsent records a user consent
func (u *UseCasesClinicalImpl) RecordConsent(ctx context.Context, input dto.ConsentInput) (*dto.ConsentOutput, error) {
patient, err := u.infrastructure.FHIR.GetFHIRPatient(ctx, input.PatientID)
encounter, err := u.infrastructure.FHIR.GetFHIREncounter(ctx, input.EncounterID)
if err != nil {
return nil, err
}

patientRef := fmt.Sprintf("Patient/%s", *patient.Resource.ID)
if encounter.Resource.Status == domain.EncounterStatusEnumFinished {
return nil, fmt.Errorf("cannot create a consent in a finished encounter")
}

patientID := encounter.Resource.Subject.ID
patientReference := fmt.Sprintf("Patient/%s", *patientID)
subjectReference := &domain.FHIRReference{
ID: patient.Resource.ID,
Reference: &patientRef,
ID: patientID,
Reference: &patientReference,
}

scope := &domain.FHIRCodeableConcept{
Expand Down
32 changes: 16 additions & 16 deletions pkg/clinical/usecases/clinical/consent_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -37,10 +37,10 @@ func TestUseCasesClinicalImpl_RecordConsent(t *testing.T) {
args: args{
ctx: context.Background(),
input: dto.ConsentInput{
PatientID: ID,
Provision: dto.ConsentProvisionTypeEnum(provisionType),
Status: dto.ConsentStatusEnum(status),
DenyReason: "",
EncounterID: ID,
Provision: dto.ConsentProvisionTypeEnum(provisionType),
Status: dto.ConsentStatusEnum(status),
DenyReason: "",
},
},
wantErr: false,
Expand All @@ -50,21 +50,21 @@ func TestUseCasesClinicalImpl_RecordConsent(t *testing.T) {
args: args{
ctx: context.Background(),
input: dto.ConsentInput{
PatientID: ID,
Status: dto.ConsentStatusEnum(status),
DenyReason: "",
EncounterID: ID,
Status: dto.ConsentStatusEnum(status),
DenyReason: "",
},
},
wantErr: true,
},
{
name: "Sad Case: invalid patient id",
name: "Sad Case: invalid encounter id",
args: args{
ctx: context.Background(),
input: dto.ConsentInput{
PatientID: "",
Status: dto.ConsentStatusEnum(status),
DenyReason: "",
EncounterID: "",
Status: dto.ConsentStatusEnum(status),
DenyReason: "",
},
},
wantErr: true,
Expand All @@ -74,9 +74,9 @@ func TestUseCasesClinicalImpl_RecordConsent(t *testing.T) {
args: args{
ctx: nil,
input: dto.ConsentInput{
PatientID: "",
Status: dto.ConsentStatusEnum(status),
DenyReason: "",
EncounterID: "",
Status: dto.ConsentStatusEnum(status),
DenyReason: "",
},
},
wantErr: true,
Expand All @@ -100,8 +100,8 @@ func TestUseCasesClinicalImpl_RecordConsent(t *testing.T) {
}

}
if tt.name == "Sad Case: invalid patient id" {
fakeFHIR.MockGetFHIRPatientFn = func(ctx context.Context, id string) (*domain.FHIRPatientRelayPayload, error) {
if tt.name == "Sad Case: invalid encounter id" {
fakeFHIR.MockGetFHIREncounterFn = func(ctx context.Context, id string) (*domain.FHIREncounterRelayPayload, error) {
return nil, fmt.Errorf("an error occurred")
}

Expand Down

0 comments on commit 73fb3bd

Please sign in to comment.