diff --git a/src/test/java/org/openmrs/performance/Constants.java b/src/test/java/org/openmrs/performance/Constants.java index ccb5c44..6b2e74d 100644 --- a/src/test/java/org/openmrs/performance/Constants.java +++ b/src/test/java/org/openmrs/performance/Constants.java @@ -42,4 +42,10 @@ public class Constants { public static final String ALLERGY_REACTION_UUID = "162553AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"; public static final String CODED_ALLERGEN_UUID = "71617AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"; public static final String SEVERITY_UUID = "1498AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"; + + //Visit Notes + public static final String VISIT_NOTE_FORM_UUID = "c75f120a-04ec-11e3-8780-2b40bef9a44b"; + public static final String CLINICIAN_ENCOUNTER_ROLE = "240b26f9-dd88-4172-823d-4a8bfeb7841f"; + public static final String VISIT_NOTE_ENCOUNTER_TYPE_UUID = "d7151f82-c1f3-4152-a605-2f9ea7414a79"; + public static final String VISIT_NOTE_CONCEPT_UUID = "162169AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"; } diff --git a/src/test/java/org/openmrs/performance/http/DoctorHttpService.java b/src/test/java/org/openmrs/performance/http/DoctorHttpService.java index 22f0657..df90443 100644 --- a/src/test/java/org/openmrs/performance/http/DoctorHttpService.java +++ b/src/test/java/org/openmrs/performance/http/DoctorHttpService.java @@ -13,10 +13,12 @@ import static io.gatling.javaapi.core.CoreDsl.StringBody; import static io.gatling.javaapi.core.CoreDsl.bodyString; +import static io.gatling.javaapi.core.CoreDsl.exec; import static io.gatling.javaapi.core.CoreDsl.jsonPath; import static io.gatling.javaapi.http.HttpDsl.http; import static org.openmrs.performance.Constants.ALLERGY_REACTION_UUID; import static org.openmrs.performance.Constants.CARE_SETTING_UUID; +import static org.openmrs.performance.Constants.CLINICIAN_ENCOUNTER_ROLE; import static org.openmrs.performance.Constants.CODED_ALLERGEN_UUID; import static org.openmrs.performance.Constants.DAYS; import static org.openmrs.performance.Constants.DEFAULT_DOSING_TYPE; @@ -27,6 +29,9 @@ import static org.openmrs.performance.Constants.OUTPATIENT_CLINIC_LOCATION_UUID; import static org.openmrs.performance.Constants.SEVERITY_UUID; import static org.openmrs.performance.Constants.TABLET; +import static org.openmrs.performance.Constants.VISIT_NOTE_CONCEPT_UUID; +import static org.openmrs.performance.Constants.VISIT_NOTE_ENCOUNTER_TYPE_UUID; +import static org.openmrs.performance.Constants.VISIT_NOTE_FORM_UUID; public class DoctorHttpService extends HttpService { @@ -36,15 +41,11 @@ public HttpRequestActionBuilder getVisitTypes() { } public HttpRequestActionBuilder getVisitsOfPatient(String patientUuid) { - String customRepresentation = "custom:(uuid,encounters:(uuid,diagnoses:(uuid,display,rank,diagnosis)," - + "form:(uuid,display),encounterDatetime,orders:full," - + "obs:(uuid,concept:(uuid,display,conceptClass:(uuid,display)),display," - + "groupMembers:(uuid,concept:(uuid,display),value:(uuid,display),display)," - + "value,obsDatetime),encounterType:(uuid,display,viewPrivilege,editPrivilege)," - + "encounterProviders:(uuid,display,encounterRole:(uuid,display)," - + "provider:(uuid,person:(uuid,display)))),visitType:(uuid,name,display)," - + "startDatetime,stopDatetime,patient," - + "attributes:(attributeType:ref,display,uuid,value))"; + String customRepresentation = "custom:(uuid,display,voided,indication,startDatetime,stopDatetime," + + "encounters:(uuid,display,encounterDatetime,form:(uuid,name),location:ref,encounterType:ref,encounterProviders:(uuid,display,provider:(uuid,display)))," + + "patient:(uuid,display)," + "visitType:(uuid,name,display)," + + "attributes:(uuid,display,attributeType:(name,datatypeClassname,uuid),value)," + + "location:(uuid,name,display))"; return http("Get Visits of Patient") .get("/openmrs/ws/rest/v1/visit?patient=" + patientUuid + "&v=" + customRepresentation); @@ -287,4 +288,37 @@ public HttpRequestActionBuilder saveOrder(String patientUuid, String visitUuid, throw new RuntimeException(e); } } + + public HttpRequestActionBuilder saveVisitNote(String patientUuid, String currentUser, String value) { + ZonedDateTime now = ZonedDateTime.now(); + String encounterDatetime = now.format(DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSSZ")); + + Map<String, Object> visitNote = new HashMap<>(); + visitNote.put("form", VISIT_NOTE_FORM_UUID); + visitNote.put("patient", patientUuid); + visitNote.put("location", OUTPATIENT_CLINIC_LOCATION_UUID); + visitNote.put("encounterType", VISIT_NOTE_ENCOUNTER_TYPE_UUID); + visitNote.put("encounterDatetime", encounterDatetime); + + Map<String, Object> encounterProvider = new HashMap<>(); + encounterProvider.put("encounterRole", CLINICIAN_ENCOUNTER_ROLE); + encounterProvider.put("provider", currentUser); + + Map<String, Object> obs = new HashMap<>(); + obs.put("concept", Map.of("uuid", VISIT_NOTE_CONCEPT_UUID)); + obs.put("value", value); + + visitNote.put("encounterProviders", List.of(encounterProvider)); + visitNote.put("obs", List.of(obs)); + + try { + String body = new ObjectMapper().writeValueAsString(visitNote); // Convert Map to JSON + + return http("Save Visit Note").post("/openmrs/ws/rest/v1/encounter").body(StringBody(body)) + .check(jsonPath("$.uuid").saveAs("encounterUuid")); // Store encounter UUID + } + catch (JsonProcessingException e) { + throw new RuntimeException("Error converting visitNote to JSON", e); + } + } } diff --git a/src/test/java/org/openmrs/performance/http/HttpService.java b/src/test/java/org/openmrs/performance/http/HttpService.java index 9a7522d..02a2257 100644 --- a/src/test/java/org/openmrs/performance/http/HttpService.java +++ b/src/test/java/org/openmrs/performance/http/HttpService.java @@ -82,7 +82,7 @@ public HttpRequestActionBuilder getVisitQueueEntry(String patientUuid) { public HttpRequestActionBuilder getCurrentVisit(String patientUuid) { return http("Get Patient's current visit") - .get("/openmrs/ws/rest/v1/visit?patient="+patientUuid+"&v=custom:(uuid,encounters:(uuid,encounterDatetime,form:(uuid,name),location:ref,encounterType:ref,encounterProviders:(uuid,display,provider:(uuid,display,person:(display))),patient:(uuid,uuid),visitType:(uuid,name,display),attributes:(uuid,display,attributeType:(name,datatypeClassname,uuid),value),location:(uuid,name,display),startDatetime,stopDatetime)&includeInactive=false"); + .get("/openmrs/ws/rest/v1/visit?patient="+patientUuid+"&v=custom:(uuid,encounters:(uuid,diagnoses:(uuid,display,rank,diagnosis),form:(uuid,display),encounterDatetime,orders:full,obs:full,encounterType:(uuid,display,viewPrivilege,editPrivilege),encounterProviders:(uuid,display,encounterRole:(uuid,display),provider:(uuid,person:(uuid,display)))),visitType:(uuid,name,display),startDatetime,stopDatetime,patient,attributes:(attributeType:ref,display,uuid,value)&limit=5"); } public HttpRequestActionBuilder getPatientSummaryData(String patientUuid) { diff --git a/src/test/java/org/openmrs/performance/registries/DoctorRegistry.java b/src/test/java/org/openmrs/performance/registries/DoctorRegistry.java index d37fc0f..dc6760d 100644 --- a/src/test/java/org/openmrs/performance/registries/DoctorRegistry.java +++ b/src/test/java/org/openmrs/performance/registries/DoctorRegistry.java @@ -144,4 +144,9 @@ public ChainBuilder addDrugOrder(String patientUuid, String visitUuid, String cu ); } + + public ChainBuilder addVisitNote(String patientUuid, String currentUserUuid) { + String visitNoteText = "Patient visit note"; + return exec(httpService.saveVisitNote(patientUuid, currentUserUuid, visitNoteText)); + } } diff --git a/src/test/java/org/openmrs/performance/scenarios/VisitPatientScenario.java b/src/test/java/org/openmrs/performance/scenarios/VisitPatientScenario.java index ba215df..cbb37fe 100644 --- a/src/test/java/org/openmrs/performance/scenarios/VisitPatientScenario.java +++ b/src/test/java/org/openmrs/performance/scenarios/VisitPatientScenario.java @@ -35,6 +35,9 @@ public ScenarioBuilder getScenarioBuilder() { .exec(registry.openImmunizationsTab("#{patient_uuid}")) .exec(registry.openAttachmentsTab("#{patient_uuid}")) .exec(registry.addDrugOrder("#{patient_uuid}", "#{visitUuid}", "#{currentUserUuid}")) + .pause(5) + .exec(registry.addVisitNote("#{patient_uuid}", "#{currentUserUuid}")) + .pause(10) .exec(registry.endVisit("#{patient_uuid}")); } }