Skip to content

Commit 4e097d7

Browse files
authoredFeb 25, 2025
O3-4280: Save a note in Visit Patient scenario (#66)
* O3-4280: implement Save a note in Visit Patient scenario * remove saveDiagnosis and fix indentation * fix indentation * change comment in Constants.java * change customRepresentation in Get visits of patent * add some pause after AddDrugOrder and after AddVisitNote * change custom representation in getCurrentVisit * change custom representation in getCurrentVisit and send real time * change custom representation in getCurrentVisit and send real time
1 parent b9ed673 commit 4e097d7

File tree

5 files changed

+58
-10
lines changed

5 files changed

+58
-10
lines changed
 

‎src/test/java/org/openmrs/performance/Constants.java

+6
Original file line numberDiff line numberDiff line change
@@ -42,4 +42,10 @@ public class Constants {
4242
public static final String ALLERGY_REACTION_UUID = "162553AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA";
4343
public static final String CODED_ALLERGEN_UUID = "71617AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA";
4444
public static final String SEVERITY_UUID = "1498AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA";
45+
46+
//Visit Notes
47+
public static final String VISIT_NOTE_FORM_UUID = "c75f120a-04ec-11e3-8780-2b40bef9a44b";
48+
public static final String CLINICIAN_ENCOUNTER_ROLE = "240b26f9-dd88-4172-823d-4a8bfeb7841f";
49+
public static final String VISIT_NOTE_ENCOUNTER_TYPE_UUID = "d7151f82-c1f3-4152-a605-2f9ea7414a79";
50+
public static final String VISIT_NOTE_CONCEPT_UUID = "162169AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA";
4551
}

‎src/test/java/org/openmrs/performance/http/DoctorHttpService.java

+43-9
Original file line numberDiff line numberDiff line change
@@ -13,10 +13,12 @@
1313

1414
import static io.gatling.javaapi.core.CoreDsl.StringBody;
1515
import static io.gatling.javaapi.core.CoreDsl.bodyString;
16+
import static io.gatling.javaapi.core.CoreDsl.exec;
1617
import static io.gatling.javaapi.core.CoreDsl.jsonPath;
1718
import static io.gatling.javaapi.http.HttpDsl.http;
1819
import static org.openmrs.performance.Constants.ALLERGY_REACTION_UUID;
1920
import static org.openmrs.performance.Constants.CARE_SETTING_UUID;
21+
import static org.openmrs.performance.Constants.CLINICIAN_ENCOUNTER_ROLE;
2022
import static org.openmrs.performance.Constants.CODED_ALLERGEN_UUID;
2123
import static org.openmrs.performance.Constants.DAYS;
2224
import static org.openmrs.performance.Constants.DEFAULT_DOSING_TYPE;
@@ -27,6 +29,9 @@
2729
import static org.openmrs.performance.Constants.OUTPATIENT_CLINIC_LOCATION_UUID;
2830
import static org.openmrs.performance.Constants.SEVERITY_UUID;
2931
import static org.openmrs.performance.Constants.TABLET;
32+
import static org.openmrs.performance.Constants.VISIT_NOTE_CONCEPT_UUID;
33+
import static org.openmrs.performance.Constants.VISIT_NOTE_ENCOUNTER_TYPE_UUID;
34+
import static org.openmrs.performance.Constants.VISIT_NOTE_FORM_UUID;
3035

3136
public class DoctorHttpService extends HttpService {
3237

@@ -36,15 +41,11 @@ public HttpRequestActionBuilder getVisitTypes() {
3641
}
3742

3843
public HttpRequestActionBuilder getVisitsOfPatient(String patientUuid) {
39-
String customRepresentation = "custom:(uuid,encounters:(uuid,diagnoses:(uuid,display,rank,diagnosis),"
40-
+ "form:(uuid,display),encounterDatetime,orders:full,"
41-
+ "obs:(uuid,concept:(uuid,display,conceptClass:(uuid,display)),display,"
42-
+ "groupMembers:(uuid,concept:(uuid,display),value:(uuid,display),display),"
43-
+ "value,obsDatetime),encounterType:(uuid,display,viewPrivilege,editPrivilege),"
44-
+ "encounterProviders:(uuid,display,encounterRole:(uuid,display),"
45-
+ "provider:(uuid,person:(uuid,display)))),visitType:(uuid,name,display),"
46-
+ "startDatetime,stopDatetime,patient,"
47-
+ "attributes:(attributeType:ref,display,uuid,value))";
44+
String customRepresentation = "custom:(uuid,display,voided,indication,startDatetime,stopDatetime,"
45+
+ "encounters:(uuid,display,encounterDatetime,form:(uuid,name),location:ref,encounterType:ref,encounterProviders:(uuid,display,provider:(uuid,display))),"
46+
+ "patient:(uuid,display)," + "visitType:(uuid,name,display),"
47+
+ "attributes:(uuid,display,attributeType:(name,datatypeClassname,uuid),value),"
48+
+ "location:(uuid,name,display))";
4849

4950
return http("Get Visits of Patient")
5051
.get("/openmrs/ws/rest/v1/visit?patient=" + patientUuid + "&v=" + customRepresentation);
@@ -287,4 +288,37 @@ public HttpRequestActionBuilder saveOrder(String patientUuid, String visitUuid,
287288
throw new RuntimeException(e);
288289
}
289290
}
291+
292+
public HttpRequestActionBuilder saveVisitNote(String patientUuid, String currentUser, String value) {
293+
ZonedDateTime now = ZonedDateTime.now();
294+
String encounterDatetime = now.format(DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSSZ"));
295+
296+
Map<String, Object> visitNote = new HashMap<>();
297+
visitNote.put("form", VISIT_NOTE_FORM_UUID);
298+
visitNote.put("patient", patientUuid);
299+
visitNote.put("location", OUTPATIENT_CLINIC_LOCATION_UUID);
300+
visitNote.put("encounterType", VISIT_NOTE_ENCOUNTER_TYPE_UUID);
301+
visitNote.put("encounterDatetime", encounterDatetime);
302+
303+
Map<String, Object> encounterProvider = new HashMap<>();
304+
encounterProvider.put("encounterRole", CLINICIAN_ENCOUNTER_ROLE);
305+
encounterProvider.put("provider", currentUser);
306+
307+
Map<String, Object> obs = new HashMap<>();
308+
obs.put("concept", Map.of("uuid", VISIT_NOTE_CONCEPT_UUID));
309+
obs.put("value", value);
310+
311+
visitNote.put("encounterProviders", List.of(encounterProvider));
312+
visitNote.put("obs", List.of(obs));
313+
314+
try {
315+
String body = new ObjectMapper().writeValueAsString(visitNote); // Convert Map to JSON
316+
317+
return http("Save Visit Note").post("/openmrs/ws/rest/v1/encounter").body(StringBody(body))
318+
.check(jsonPath("$.uuid").saveAs("encounterUuid")); // Store encounter UUID
319+
}
320+
catch (JsonProcessingException e) {
321+
throw new RuntimeException("Error converting visitNote to JSON", e);
322+
}
323+
}
290324
}

‎src/test/java/org/openmrs/performance/http/HttpService.java

+1-1
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ public HttpRequestActionBuilder getVisitQueueEntry(String patientUuid) {
8282

8383
public HttpRequestActionBuilder getCurrentVisit(String patientUuid) {
8484
return http("Get Patient's current visit")
85-
.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");
85+
.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");
8686
}
8787

8888
public HttpRequestActionBuilder getPatientSummaryData(String patientUuid) {

‎src/test/java/org/openmrs/performance/registries/DoctorRegistry.java

+5
Original file line numberDiff line numberDiff line change
@@ -144,4 +144,9 @@ public ChainBuilder addDrugOrder(String patientUuid, String visitUuid, String cu
144144
);
145145

146146
}
147+
148+
public ChainBuilder addVisitNote(String patientUuid, String currentUserUuid) {
149+
String visitNoteText = "Patient visit note";
150+
return exec(httpService.saveVisitNote(patientUuid, currentUserUuid, visitNoteText));
151+
}
147152
}

‎src/test/java/org/openmrs/performance/scenarios/VisitPatientScenario.java

+3
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,9 @@ public ScenarioBuilder getScenarioBuilder() {
3535
.exec(registry.openImmunizationsTab("#{patient_uuid}"))
3636
.exec(registry.openAttachmentsTab("#{patient_uuid}"))
3737
.exec(registry.addDrugOrder("#{patient_uuid}", "#{visitUuid}", "#{currentUserUuid}"))
38+
.pause(5)
39+
.exec(registry.addVisitNote("#{patient_uuid}", "#{currentUserUuid}"))
40+
.pause(10)
3841
.exec(registry.endVisit("#{patient_uuid}"));
3942
}
4043
}

0 commit comments

Comments
 (0)
Failed to load comments.