Skip to content

Commit

Permalink
feat: get patient medical history
Browse files Browse the repository at this point in the history
- used to retrieve patient medical history primarily for the purpose of referring a patient from one facility to another

Signed-off-by: Kathurima Kimathi <kathurimakimathi415@gmail.com>
  • Loading branch information
KathurimaKimathi committed Mar 12, 2024
1 parent 789c60f commit 81718c8
Show file tree
Hide file tree
Showing 17 changed files with 949 additions and 150 deletions.
8 changes: 8 additions & 0 deletions pkg/clinical/application/dto/output.go
Original file line number Diff line number Diff line change
Expand Up @@ -160,3 +160,11 @@ type Section struct {
type ConsentOutput struct {
Status *ConsentStatusEnum `json:"status"`
}

// PatientMedicationHistoryOutput object models all information about a patient
type PatientMedicationHistoryOutput struct {
Conditions []*Condition `json:"condition"`
Observations []*Observation `json:"observations"`
Patient Patient `json:"patient"`
Medications []*MedicationStatement `json:"medications"`
}
42 changes: 21 additions & 21 deletions pkg/clinical/infrastructure/datastore/cloudhealthcare/fhir.go
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ type Dataset interface {
DeleteFHIRResource(resourceType, fhirResourceID string) error
PatchFHIRResource(resourceType, fhirResourceID string, payload map[string]interface{}, resource interface{}) error
UpdateFHIRResource(resourceType, fhirResourceID string, payload map[string]interface{}, resource interface{}) error
SearchFHIRResource(resourceType string, params map[string]interface{}, tenant dto.TenantIdentifiers, pagination dto.Pagination) (*domain.PagedFHIRResource, error)
SearchFHIRResource(resourceType string, params map[string]interface{}, tenant *dto.TenantIdentifiers, pagination dto.Pagination) (*domain.PagedFHIRResource, error)

GetFHIRPatientAllData(fhirResourceID string) ([]byte, error)
}
Expand All @@ -75,7 +75,7 @@ func (fh StoreImpl) SearchPatientObservations(
tenant dto.TenantIdentifiers,
pagination dto.Pagination,
) (*domain.PagedFHIRObservations, error) {
observations, err := fh.Dataset.SearchFHIRResource(observationResourceType, searchParameters, tenant, pagination)
observations, err := fh.Dataset.SearchFHIRResource(observationResourceType, searchParameters, &tenant, pagination)
if err != nil {
return nil, err
}
Expand Down Expand Up @@ -125,7 +125,7 @@ func (fh StoreImpl) SearchPatientEncounters(
params["status:exact"] = status.String()
}

resources, err := fh.Dataset.SearchFHIRResource(encounterResourceType, params, tenant, pagination)
resources, err := fh.Dataset.SearchFHIRResource(encounterResourceType, params, &tenant, pagination)
if err != nil {
return nil, err
}
Expand Down Expand Up @@ -164,7 +164,7 @@ func (fh StoreImpl) SearchPatientMedia(_ context.Context, patientReference strin
"patient": patientReference,
}

resources, err := fh.Dataset.SearchFHIRResource(mediaResourceType, params, tenant, pagination)
resources, err := fh.Dataset.SearchFHIRResource(mediaResourceType, params, &tenant, pagination)
if err != nil {
return nil, err
}
Expand Down Expand Up @@ -201,7 +201,7 @@ func (fh StoreImpl) SearchPatientMedia(_ context.Context, patientReference strin
func (fh StoreImpl) SearchFHIREpisodeOfCare(_ context.Context, params map[string]interface{}, tenant dto.TenantIdentifiers, pagination dto.Pagination) (*domain.FHIREpisodeOfCareRelayConnection, error) {
output := domain.FHIREpisodeOfCareRelayConnection{}

resources, err := fh.Dataset.SearchFHIRResource(episodeOfCareResourceType, params, tenant, pagination)
resources, err := fh.Dataset.SearchFHIRResource(episodeOfCareResourceType, params, &tenant, pagination)
if err != nil {
return nil, err
}
Expand Down Expand Up @@ -298,7 +298,7 @@ func (fh StoreImpl) CreateFHIROrganization(_ context.Context, input domain.FHIRO
func (fh StoreImpl) SearchFHIROrganization(_ context.Context, params map[string]interface{}, tenant dto.TenantIdentifiers, pagination dto.Pagination) (*domain.FHIROrganizationRelayConnection, error) {
output := domain.FHIROrganizationRelayConnection{}

resources, err := fh.Dataset.SearchFHIRResource(organizationResource, params, tenant, pagination)
resources, err := fh.Dataset.SearchFHIRResource(organizationResource, params, &tenant, pagination)
if err != nil {
return nil, err
}
Expand Down Expand Up @@ -359,7 +359,7 @@ func (fh StoreImpl) GetFHIRAllergyIntolerance(_ context.Context, id string) (*do

// SearchEpisodesByParam search episodes by params
func (fh StoreImpl) SearchEpisodesByParam(_ context.Context, searchParams map[string]interface{}, tenant dto.TenantIdentifiers, pagination dto.Pagination) ([]*domain.FHIREpisodeOfCare, error) {
resources, err := fh.Dataset.SearchFHIRResource(episodeOfCareResourceType, searchParams, tenant, pagination)
resources, err := fh.Dataset.SearchFHIRResource(episodeOfCareResourceType, searchParams, &tenant, pagination)
if err != nil {
return nil, err
}
Expand Down Expand Up @@ -651,7 +651,7 @@ func (fh StoreImpl) GetActiveEpisode(_ context.Context, episodeID string, tenant
"_id": episodeID,
}

resources, err := fh.Dataset.SearchFHIRResource(episodeOfCareResourceType, params, tenant, pagination)
resources, err := fh.Dataset.SearchFHIRResource(episodeOfCareResourceType, params, &tenant, pagination)
if err != nil {
return nil, err
}
Expand Down Expand Up @@ -680,7 +680,7 @@ func (fh StoreImpl) GetActiveEpisode(_ context.Context, episodeID string, tenant
func (fh StoreImpl) SearchFHIRServiceRequest(_ context.Context, params map[string]interface{}, tenant dto.TenantIdentifiers, pagination dto.Pagination) (*domain.FHIRServiceRequestRelayConnection, error) {
output := domain.FHIRServiceRequestRelayConnection{}

resources, err := fh.Dataset.SearchFHIRResource(serviceRequestResourceType, params, tenant, pagination)
resources, err := fh.Dataset.SearchFHIRResource(serviceRequestResourceType, params, &tenant, pagination)
if err != nil {
return nil, err
}
Expand Down Expand Up @@ -730,7 +730,7 @@ func (fh StoreImpl) CreateFHIRServiceRequest(_ context.Context, input domain.FHI

// SearchFHIRAllergyIntolerance provides a search API for FHIRAllergyIntolerance
func (fh StoreImpl) SearchFHIRAllergyIntolerance(_ context.Context, params map[string]interface{}, tenant dto.TenantIdentifiers, pagination dto.Pagination) (*domain.PagedFHIRAllergy, error) {
resources, err := fh.Dataset.SearchFHIRResource(allergyIntoleranceResourceType, params, tenant, pagination)
resources, err := fh.Dataset.SearchFHIRResource(allergyIntoleranceResourceType, params, &tenant, pagination)
if err != nil {
return nil, err
}
Expand Down Expand Up @@ -813,7 +813,7 @@ func (fh StoreImpl) UpdateFHIRAllergyIntolerance(_ context.Context, input domain

// SearchFHIRComposition provides a search API for FHIRComposition
func (fh StoreImpl) SearchFHIRComposition(_ context.Context, params map[string]interface{}, tenant dto.TenantIdentifiers, pagination dto.Pagination) (*domain.PagedFHIRComposition, error) {
resources, err := fh.Dataset.SearchFHIRResource(compositionResourceType, params, tenant, pagination)
resources, err := fh.Dataset.SearchFHIRResource(compositionResourceType, params, &tenant, pagination)
if err != nil {
return nil, err
}
Expand Down Expand Up @@ -904,7 +904,7 @@ func (fh StoreImpl) DeleteFHIRComposition(_ context.Context, id string) (bool, e
}

// SearchFHIRCondition provides a search API for FHIRCondition
func (fh StoreImpl) SearchFHIRCondition(_ context.Context, params map[string]interface{}, tenant dto.TenantIdentifiers, pagination dto.Pagination) (*domain.PagedFHIRCondition, error) {
func (fh StoreImpl) SearchFHIRCondition(_ context.Context, params map[string]interface{}, tenant *dto.TenantIdentifiers, pagination dto.Pagination) (*domain.PagedFHIRCondition, error) {
resources, err := fh.Dataset.SearchFHIRResource(conditionResourceType, params, tenant, pagination)
if err != nil {
return nil, err
Expand Down Expand Up @@ -945,7 +945,7 @@ func (fh StoreImpl) SearchPatientAllergyIntolerance(_ context.Context, patientRe
"patient": patientReference,
}

resources, err := fh.Dataset.SearchFHIRResource(allergyIntoleranceResourceType, params, tenant, pagination)
resources, err := fh.Dataset.SearchFHIRResource(allergyIntoleranceResourceType, params, &tenant, pagination)
if err != nil {
return nil, err
}
Expand Down Expand Up @@ -1023,7 +1023,7 @@ func (fh StoreImpl) GetFHIREncounter(_ context.Context, id string) (*domain.FHIR

// SearchFHIREncounter provides a search API for FHIREncounter
func (fh StoreImpl) SearchFHIREncounter(_ context.Context, params map[string]interface{}, tenant dto.TenantIdentifiers, pagination dto.Pagination) (*domain.PagedFHIREncounter, error) {
resources, err := fh.Dataset.SearchFHIRResource(encounterResourceType, params, tenant, pagination)
resources, err := fh.Dataset.SearchFHIRResource(encounterResourceType, params, &tenant, pagination)
if err != nil {
return nil, err
}
Expand Down Expand Up @@ -1059,7 +1059,7 @@ func (fh StoreImpl) SearchFHIREncounter(_ context.Context, params map[string]int

// SearchFHIREncounterAllData provides a search API for a FHIREncounter and all other resources that reference the encounter
func (fh StoreImpl) SearchFHIREncounterAllData(_ context.Context, params map[string]interface{}, tenant dto.TenantIdentifiers, pagination dto.Pagination) (*domain.PagedFHIRResource, error) {
resources, err := fh.Dataset.SearchFHIRResource(encounterResourceType, params, tenant, pagination)
resources, err := fh.Dataset.SearchFHIRResource(encounterResourceType, params, &tenant, pagination)
if err != nil {
return nil, err
}
Expand All @@ -1080,7 +1080,7 @@ func (fh StoreImpl) SearchFHIREncounterAllData(_ context.Context, params map[str
func (fh StoreImpl) SearchFHIRMedicationRequest(_ context.Context, params map[string]interface{}, tenant dto.TenantIdentifiers, pagination dto.Pagination) (*domain.FHIRMedicationRequestRelayConnection, error) {
output := domain.FHIRMedicationRequestRelayConnection{}

resources, err := fh.Dataset.SearchFHIRResource(medicationRequestResourceType, params, tenant, pagination)
resources, err := fh.Dataset.SearchFHIRResource(medicationRequestResourceType, params, &tenant, pagination)
if err != nil {
return nil, err
}
Expand Down Expand Up @@ -1168,7 +1168,7 @@ func (fh StoreImpl) DeleteFHIRMedicationRequest(_ context.Context, id string) (b
}

// SearchFHIRObservation provides a search API for FHIRObservation
func (fh StoreImpl) SearchFHIRObservation(_ context.Context, params map[string]interface{}, tenant dto.TenantIdentifiers, pagination dto.Pagination) (*domain.PagedFHIRObservations, error) {
func (fh StoreImpl) SearchFHIRObservation(_ context.Context, params map[string]interface{}, tenant *dto.TenantIdentifiers, pagination dto.Pagination) (*domain.PagedFHIRObservations, error) {
resources, err := fh.Dataset.SearchFHIRResource(observationResourceType, params, tenant, pagination)
if err != nil {
return nil, err
Expand Down Expand Up @@ -1503,7 +1503,7 @@ func (fh StoreImpl) CreateFHIRMedia(_ context.Context, input domain.FHIRMedia) (
}

// SearchFHIRMedicationStatement used to search for a fhir medication statement
func (fh StoreImpl) SearchFHIRMedicationStatement(_ context.Context, params map[string]interface{}, tenant dto.TenantIdentifiers, pagination dto.Pagination) (*domain.FHIRMedicationStatementRelayConnection, error) {
func (fh StoreImpl) SearchFHIRMedicationStatement(_ context.Context, params map[string]interface{}, tenant *dto.TenantIdentifiers, pagination dto.Pagination) (*domain.FHIRMedicationStatementRelayConnection, error) {
output := domain.FHIRMedicationStatementRelayConnection{}

resources, err := fh.Dataset.SearchFHIRResource(medicationStatementResourceType, params, tenant, pagination)
Expand Down Expand Up @@ -1610,7 +1610,7 @@ func (fh StoreImpl) SearchFHIRPatient(_ context.Context, searchParams string, te
"_content": searchParams,
}

resources, err := fh.Dataset.SearchFHIRResource(patientResourceType, params, tenant, pagination)
resources, err := fh.Dataset.SearchFHIRResource(patientResourceType, params, &tenant, pagination)
if err != nil {
return nil, err
}
Expand Down Expand Up @@ -1709,7 +1709,7 @@ func (fh StoreImpl) PatchFHIRObservation(_ context.Context, id string, input dom

// ListFHIRQuestionnaire is used to list questionnaire resource using the name or the title of the resource.
func (fh StoreImpl) ListFHIRQuestionnaire(_ context.Context, params map[string]interface{}, tenant dto.TenantIdentifiers, pagination dto.Pagination) (*domain.PagedFHIRQuestionnaires, error) {
results, err := fh.Dataset.SearchFHIRResource(questionnaireResourceType, params, tenant, pagination)
results, err := fh.Dataset.SearchFHIRResource(questionnaireResourceType, params, &tenant, pagination)
if err != nil {
return nil, err
}
Expand Down Expand Up @@ -1818,7 +1818,7 @@ func (fh StoreImpl) CreateFHIRRiskAssessment(_ context.Context, input *domain.FH
func (fh StoreImpl) SearchFHIRRiskAssessment(_ context.Context, params map[string]interface{}, tenant dto.TenantIdentifiers, pagination dto.Pagination) (*domain.FHIRRiskAssessmentRelayConnection, error) {
output := domain.FHIRRiskAssessmentRelayConnection{}

resources, err := fh.Dataset.SearchFHIRResource(riskAssessmentResourceType, params, tenant, pagination)
resources, err := fh.Dataset.SearchFHIRResource(riskAssessmentResourceType, params, &tenant, pagination)
if err != nil {
return nil, err
}
Expand Down
Loading

0 comments on commit 81718c8

Please sign in to comment.