-
Notifications
You must be signed in to change notification settings - Fork 228
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
(test) O3-2943: Edit E2E test for the immunization recording workflow #1768
base: main
Are you sure you want to change the base?
Conversation
@kdaud This was passing in local instance,but in github cli, the test is failing |
@Vijaykv5 did you take a look at the logs? |
Here's the playwright report: Looks like the test is failing because there are no immunizations to edit. Maybe you need to combine the two specs. |
but @denniskigen we are separating each functions right? |
I defer to @jayasanka-sack for the ideal approach. |
Check line 10. When the edit test runs, it fails because it's using a brand-new patient with no existing data. We could switch to using A good fix would be to create an immunization record at the start of the edit test using the REST API. That should provide the necessary data for the test to work properly. Lemme know if you have any questions! :) |
@jayasanka-sack So do I need to call this API inside commands or I may need to create a separate file for creating immunization record using the REST API? |
@Vijaykv5 Write a command and call it within the edit test. Yes, you may need to create a new file under the commands directory. |
@jayasanka-sack could you please help Vijay get this over the line? |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@Vijaykv5 Follow these steps:
-
In
e2e/fixtures/api.ts
, update the base url of the API fixture to${process.env.E2E_BASE_URL}/ws
. So that we can invoke fhir endpoints -
Update existing API calls to use
/rest/
prefix. ex:const patientRes = await api.post('/rest/patient', {
-
Create a new function under
patient-operations.ts
file to create an immunization.
You should send a post request to the following endpoint with the given payload (feel free to edit).
/fhir2/R4/Immunization?_summary=data
{ "resourceType": "Immunization", "status": "completed", "vaccineCode": { "coding": [ { "code": "783AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA", "display": "Polio vaccination, oral" } ] }, "patient": { "type": "Patient", "reference": "Patient/703840a5-7339-4dc2-8993-f7cc7b96fc94" }, "encounter": { "type": "Encounter", "reference": "Encounter/fca94b00-8b1f-4468-b006-68e77f438978" }, "occurrenceDateTime": "2024-06-10T13:50:00.000Z", "expirationDate": "2052-06-29T18:30:00.000Z", "location": { "type": "Location", "reference": "Location/44c3efb0-2583-4c80-a79e-1f756a03c0a1" }, "performer": [ { "actor": { "type": "Practitioner", "reference": "Practitioner/f39e57d8-1185-4199-8567-6f1eeb160f05" } } ], "manufacturer": { "display": " Sanofi Pasteur SA" }, "lotNumber": "POLIO-001", "protocolApplied": [ { "doseNumberPositiveInt": 1, "series": null } ] }
-
Create a new spec file for the edit immunization
-
Call the created function from the
beforeEach
hook of the test.
@jayasanka-sack The PR now works fine locally with the help of |
Hi @Vijaykv5 , are you still available to work on this? You need to be able to debug test failures on your own. Especially if they are as straightforward as the one here. |
Sorry @brandones I was pinned with some other tickets. Will soon fix this up! |
I tested this locally with Docker and dev3 and it works fine. It only fails when running on GitHub Actions. I'm not sure why. This is the request and the response. @ibacher @mogoodrich @mseaton @mherman22 any idea what this error message means? Request: {
"resourceType": "Immunization",
"status": "completed",
"vaccineCode": {
"coding": [
{
"code": "783AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA",
"display": "Hepatitis B vaccination"
}
]
},
"patient": {
"type": "Patient",
"reference": "Patient/abd466a2-b4cc-4290-901c-5444c96662f0"
},
"encounter": {
"type": "Encounter",
"reference": "Encounter/a394aaa2-d9ef-42bd-9abc-813d91a68423"
},
"occurrenceDateTime": "2024-06-10T13:50:00.000Z",
"expirationDate": "2052-06-29T18:30:00.000Z",
"location": {
"type": "Location",
"reference": "Location/44c3efb0-2583-4c80-a79e-1f756a03c0a1"
},
"performer": [
{
"actor": {
"type": "Practitioner",
"reference": "Practitioner/f39e57d8-1185-4199-8567-6f1eeb160f05"
}
}
],
"manufacturer": {
"display": "Sanofi Pasteur SA"
},
"lotNumber": "POLIO-001",
"protocolApplied": [
{
"doseNumberPositiveInt": 1,
"series": null
}
]
} Response: {
"resourceType": "OperationOutcome",
"text": {
"status": "generated",
"div": "<div xmlns=\"http://www.w3.org/1999/xhtml\"><h1>Operation Outcome</h1><table border=\"0\"><tr><td style=\"font-weight: bold;\">ERROR</td><td>[]</td><td><pre>The Immunization resource is required to be attached to an OpenMRS encounter involving a single encounter provider with the role 'Clinician'. This is not the case for immunization '5f109c97-9f6f-4330-bb9f-a29d1d18fad9' attached to encounter 'f647ef65-07e6-42ff-9e1c-cb6e45f8ed3d'.</pre></td>\n\t\t\t</tr>\n\t\t</table>\n\t</div>"
},
"issue": [
{
"severity": "error",
"code": "business-rule",
"diagnostics": "The Immunization resource is required to be attached to an OpenMRS encounter involving a single encounter provider with the role 'Clinician'. This is not the case for immunization '5f109c97-9f6f-4330-bb9f-a29d1d18fad9' attached to encounter 'f647ef65-07e6-42ff-9e1c-cb6e45f8ed3d'."
}
]
} |
Not sure if this answers you but all it is saying here is that the immunization resource you are creating which is attached to the encounter above doesn't involve an encounter provider with the role 'Clinician' so i think you might need to create a visit then an encounter then encounter provider in that order -> see this https://github.com/openmrs/openmrs-module-fhir2/blob/de31a6838324ba2546b6eb71a69cdd77f36aa168/test-data/src/main/resources/org/openmrs/module/fhir2/api/dao/impl/FhirImmunizationDaoImplTest_initial_data.xml#L28-L36 |
@jayasanka-sack Well, the error is being produced by OpenMRS business logic, so it's not anything weird about how GitHub Actions works. There's probably just some difference between that server's setup and dev3 and the Docker setup. Maybe the user doesn't have the Clinician role, or maybe some UUIDs are different, or maybe the encounter isn't getting created the same way. |
The encounter should be an encounter and not a visit. I think it can be left blank. Granted that's probably less than ideal. |
Ohhh that's the issue! @Vijaykv5 could you please fix this? |
We should probably ticket this for the FHIR2 module, though. It should be possible to specify a visit and just create the encounter if required. |
Ping @Vijaykv5 |
Ping @Vijaykv5 , CC @jayasanka-sack |
@jayasanka-sack @denniskigen may you could help me with creating an order encounter to get the encounter ID? |
e2e/commands/patient-operations.ts
Outdated
{ | ||
actor: { | ||
type: 'Practitioner', | ||
reference: 'Practitioner/f39e57d8-1185-4199-8567-6f1eeb160f05', |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I had a chat with Ian, and it has nothing to do with the encounter but we suspect this is what causing issue as this UUID doesn't exist. Let me update the PR.
These are the valid values: https://github.com/openmrs/openmrs-module-referencedemodata/blob/2.x/api/src/main/java/org/openmrs/module/referencedemodata/ReferenceDemoDataConstants.java
Requirements
Summary
This PR introduces changes that edits E2E test for recording an immunization
Related Issue
O3-2943
Other