Skip to content

Commit

Permalink
query conditions with encounterID
Browse files Browse the repository at this point in the history
  • Loading branch information
EspiraMarvin committed Dec 1, 2023
1 parent 7909635 commit 121e541
Show file tree
Hide file tree
Showing 6 changed files with 43 additions and 15 deletions.
1 change: 1 addition & 0 deletions pkg/clinical/presentation/graph/clinical.graphql
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ extend type Query {
# Conditions
listPatientConditions(
patientID: ID!
encounterID: String
pagination: Pagination!
): ConditionConnection

Expand Down
4 changes: 2 additions & 2 deletions pkg/clinical/presentation/graph/clinical.resolvers.go

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

24 changes: 17 additions & 7 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.

7 changes: 6 additions & 1 deletion pkg/clinical/usecases/clinical/condition.go
Original file line number Diff line number Diff line change
Expand Up @@ -180,7 +180,7 @@ func mapFHIRConditionToConditionDTO(condition domain.FHIRCondition) *dto.Conditi

// ListPatientConditions lists a patients conditions
// TODO: pagination
func (c UseCasesClinicalImpl) ListPatientConditions(ctx context.Context, patientID string, pagination dto.Pagination) (*dto.ConditionConnection, error) {
func (c UseCasesClinicalImpl) ListPatientConditions(ctx context.Context, patientID string, encounterID *string, pagination dto.Pagination) (*dto.ConditionConnection, error) {
_, err := uuid.Parse(patientID)
if err != nil {
return nil, fmt.Errorf("invalid patient id: %s", patientID)
Expand All @@ -207,6 +207,11 @@ func (c UseCasesClinicalImpl) ListPatientConditions(ctx context.Context, patient
"_sort": "date",
}

if encounterID != nil {
encounterReference := fmt.Sprintf("Encounter/%s", *encounterID)
params["encounter"] = encounterReference
}

conditionsResponse, err := c.infrastructure.FHIR.SearchFHIRCondition(ctx, params, *identifiers, pagination)
if err != nil {
return nil, err
Expand Down
20 changes: 16 additions & 4 deletions pkg/clinical/usecases/clinical/condition_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -460,10 +460,12 @@ func TestUseCasesClinicalImpl_CreateCondition(t *testing.T) {

func TestUseCasesClinicalImpl_ListPatientConditions(t *testing.T) {
first := 3
encounterId := uuid.New().String()
type args struct {
ctx context.Context
patientID string
pagination dto.Pagination
ctx context.Context
patientID string
encounterID *string
pagination dto.Pagination
}
tests := []struct {
name string
Expand All @@ -479,6 +481,16 @@ func TestUseCasesClinicalImpl_ListPatientConditions(t *testing.T) {
},
wantErr: false,
},
{
name: "happy case: list conditions with encounterID",
args: args{
ctx: context.Background(),
patientID: gofakeit.UUID(),
encounterID: &encounterId,
pagination: dto.Pagination{},
},
wantErr: false,
},
{
name: "sad case: invalid patient id",
args: args{
Expand Down Expand Up @@ -557,7 +569,7 @@ func TestUseCasesClinicalImpl_ListPatientConditions(t *testing.T) {
}
}

got, err := c.ListPatientConditions(tt.args.ctx, tt.args.patientID, tt.args.pagination)
got, err := c.ListPatientConditions(tt.args.ctx, tt.args.patientID, tt.args.encounterID, tt.args.pagination)
if (err != nil) != tt.wantErr {
t.Errorf("ListPatientConditions() error = %v, wantErr %v", err, tt.wantErr)
return
Expand Down
2 changes: 1 addition & 1 deletion pkg/clinical/usecases/usecases.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ type Clinical interface {
EndEpisodeOfCare(ctx context.Context, id string) (*dto.EpisodeOfCare, error)

CreateCondition(ctx context.Context, input dto.ConditionInput) (*dto.Condition, error)
ListPatientConditions(ctx context.Context, patientID string, pagination dto.Pagination) (*dto.ConditionConnection, error)
ListPatientConditions(ctx context.Context, patientID string, encounterID *string, pagination dto.Pagination) (*dto.ConditionConnection, error)

PatientHealthTimeline(ctx context.Context, input dto.HealthTimelineInput) (*dto.HealthTimeline, error)
GetMedicalData(ctx context.Context, patientID string) (*dto.MedicalData, error)
Expand Down

0 comments on commit 121e541

Please sign in to comment.