google / android-fhir

The Android FHIR SDK is a set of Kotlin libraries for building offline-capable, mobile-first healthcare applications using the HL7® FHIR® standard on Android.
https://google.github.io/android-fhir/
Apache License 2.0
465 stars 246 forks source link

ref/#2540-Move Search Logic from Search.execute() to FhirEngine.search() #2541

Closed itstanany closed 6 days ago

itstanany commented 1 month ago

IMPORTANT: All PRs must be linked to an issue (except for extremely trivial and straightforward changes).

Fixes #2540

Description Clear and concise code change description. I moved the search logic implementation from Search.execute to FhirEngine.search For better separation of concerns and single responsibility principles

Alternative(s) considered Have you considered any alternatives? And if so, why have you chosen the approach in this PR?

Type Choose one: Code health

Screenshots (if applicable)

Checklist

jingtang10 commented 2 weeks ago

the code is duplicated not moved.

jingtang10 commented 6 days ago

@itstanany will you be able to open another pr to move the api declaration of the search method to the actual search package? thanks for your contribution!

i will close this pr for now.

itstanany commented 6 days ago

@itstanany will you be able to open another pr to move the api declaration of the search method to the actual search package? thanks for your contribution!

i will close this pr for now.

@jingtang10 , the api declaration is already in search package, so if you see it is better to be in search package, there is no more actions to do. just leave it as it is.

Thanks for your consideration

jingtang10 commented 6 days ago

the search

https://github.com/itstanany/android-fhir/blob/601ebe18cd3b3d663fb4396dcf8058c60875c3eb/engine/src/main/java/com/google/android/fhir/FhirEngine.kt#L117

and count

https://github.com/itstanany/android-fhir/blob/601ebe18cd3b3d663fb4396dcf8058c60875c3eb/engine/src/main/java/com/google/android/fhir/FhirEngine.kt#L160

apis are defined in the com.google.android.fhir package. I think it might make more sense for them to be moved to the com.google.android.fhir.search package

@aditya-07 @MJ1998 @santosh-pingle fyi and feedback welcome

itstanany commented 6 days ago

the search

https://github.com/itstanany/android-fhir/blob/601ebe18cd3b3d663fb4396dcf8058c60875c3eb/engine/src/main/java/com/google/android/fhir/FhirEngine.kt#L117

and count

https://github.com/itstanany/android-fhir/blob/601ebe18cd3b3d663fb4396dcf8058c60875c3eb/engine/src/main/java/com/google/android/fhir/FhirEngine.kt#L160

apis are defined in the com.google.android.fhir package. I think it might make more sense for them to be moved to the com.google.android.fhir.search package

@aditya-07 @MJ1998 @santosh-pingle fyi and feedback welcome

@jingtang10

I noticed that search and count are defined as overload extension functions on FhirEngine within the search package (here: [link to search Search.kt#L25]

[link to count Search.kt#L33.

My question is: Should these functions stay as part of the public API for the engine package (like they're used in the demo app: [link to PatientListViewModel.kt#L90](https://github.com/itstanany/android-fhir/blob/da8e193f78cf75919d97809d6cafdf9738ac48a6/demo/src/main/java/com/google/android/fhir/demo/PatientListViewModel.kt#L90)) or be moved to the search package as suggested? This would require client code to be aware of the search package.

I'm a bit unsure of the best approach here. What are your thoughts?