TRUNK-6462: (feat) Align FulfillerStatus enum with FHIR Task Status codes on platform 3.x
Description of what I changed
Adding FHIR-aligned statuses to FulfillerStatus enum to better support task/order lifecycle management.
Reference: https://hl7.org/fhir/codesystem-task-status.html
New statuses being added:
- DRAFT
- REQUESTED
- ACCEPTED
- REJECTED
- READY
- CANCELLED
- FAILED
- ENTERED_IN_ERROR
This will allow OpenMRS to better represent the complete lifecycle of orders/tasks in FHIR-compliant ways. DEMO Video
Issue I worked on
see https://openmrs.atlassian.net/browse/TRUNK-6462
Checklist: I completed these to help reviewers :)
-
[ ] My IDE is configured to follow the code style of this project.
No? Unsure? -> configure your IDE, format the code and add the changes with
git add . && git commit --amend -
[ ] I have added tests to cover my changes. (If you refactored existing code that was well tested you do not have to add tests)
No? -> write tests and add them to this commit
git add . && git commit --amend -
[ ] I ran
mvn clean packageright before creating this pull request and added all formatting changes to my commit.No? -> execute above command
-
[ ] All new and existing tests passed.
No? -> figure out why and add the fix to your commit. It is your responsibility to make sure your code works.
-
[ ] My pull request is based on the latest changes of the master branch.
No? Unsure? -> execute command
git pull --rebase upstream master
@chibongho ping
Looks good, but deferring to others with more experience with core.
Context: https://github.com/openmrs/openmrs-esm-laboratory-app/pull/445#discussion_r2406882262 This change aligns with FHIR's medicationrequest-status
@its-kios09 did you get a chance to look at the this: https://openmrs.atlassian.net/wiki/spaces/docs/pages/25477199/Pull+Request+Tips?
@wikumChamith You can confirm from this reference https://openmrs.atlassian.net/browse/TRUNK-6462
@mseaton Yes, DRAFT is a valid FulfillerStatus that I'm adding in this PR. You're correct that the JavaDoc needs to be updated.
I agree with @mseaton's points. DRAFT is not a reasonable "fulfiller status". I'm also uncertain about using Task Status here. Orders are not FHIR tasks, though I suppose they might result in one. We've historically been using something similar to this valueset as a model: https://www.hl7.org/fhir/valueset-diagnostic-report-status.html, which is more directly a valueset of "statuses of results", which is really what an order should expect.
If we want to be able to track tasks resulting from orders, we should just build a data model that supports tracking tasks, not try to bolt it onto the order, especially via this already overloaded FulfillerStatus enum.
We've had some discussion of supporting draft elements, but that would be a matter of marking the order itself as a draft (for example). FHIR and OpenMRS have somewhat different workflows and just adopting a FHIR valueset with different semantics here leads to a field with a very unclear meaning.