diff --git a/src/test/java/org/openmrs/performance/Constants.java b/src/test/java/org/openmrs/performance/Constants.java index 27cdd4d..cda53f1 100644 --- a/src/test/java/org/openmrs/performance/Constants.java +++ b/src/test/java/org/openmrs/performance/Constants.java @@ -53,4 +53,8 @@ public class Constants { public static final String DIABETIC_KETOSIS_CONCEPT = "123107AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"; public static final String DIABETIC_FOOT_ULCER_CONCEPT = "149069AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA"; + // Vitals + public static final String VITALS_FORM_UUID = "9f26aad4-244a-46ca-be49-1196df1a8c9a"; + public static final String VITALS_LOCATION_UUID = "ba685651-ed3b-4e63-9b35-78893060758a"; + public static final String VITALS_ENCOUNTER_TYPE_UUID = "67a71486-1a54-468f-ac3e-7091a9a79584"; } diff --git a/src/test/java/org/openmrs/performance/http/DoctorHttpService.java b/src/test/java/org/openmrs/performance/http/DoctorHttpService.java index af28a4f..e2ed17a 100644 --- a/src/test/java/org/openmrs/performance/http/DoctorHttpService.java +++ b/src/test/java/org/openmrs/performance/http/DoctorHttpService.java @@ -7,6 +7,7 @@ import java.time.ZonedDateTime; import java.time.format.DateTimeFormatter; +import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; import java.util.List; @@ -14,25 +15,36 @@ 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.ARTERIAL_BLOOD_OXYGEN_SATURATION; 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; +import static org.openmrs.performance.Constants.DIASTOLIC_BLOOD_PRESSURE; import static org.openmrs.performance.Constants.DRUG_ORDER; +import static org.openmrs.performance.Constants.HEIGHT_CM; +import static org.openmrs.performance.Constants.MID_UPPER_ARM_CIRCUMFERENCE; import static org.openmrs.performance.Constants.ONCE_DAILY; import static org.openmrs.performance.Constants.ORAL; import static org.openmrs.performance.Constants.ORDER; import static org.openmrs.performance.Constants.OUTPATIENT_CLINIC_LOCATION_UUID; +import static org.openmrs.performance.Constants.PULSE; +import static org.openmrs.performance.Constants.RESPIRATORY_RATE; import static org.openmrs.performance.Constants.SEVERITY_UUID; +import static org.openmrs.performance.Constants.SYSTOLIC_BLOOD_PRESSURE; import static org.openmrs.performance.Constants.TABLET; +import static org.openmrs.performance.Constants.TEMPERATURE_C; 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; +import static org.openmrs.performance.Constants.VITALS_ENCOUNTER_TYPE_UUID; +import static org.openmrs.performance.Constants.VITALS_FORM_UUID; +import static org.openmrs.performance.Constants.VITALS_LOCATION_UUID; +import static org.openmrs.performance.Constants.WEIGHT_KG; public class DoctorHttpService extends HttpService { @@ -347,4 +359,37 @@ public HttpRequestActionBuilder saveDiagnosis(String patientUuid, String encount } } + public HttpRequestActionBuilder saveVitalsData(String patientUuid) { + ZonedDateTime now = ZonedDateTime.now(); + String encounterDatetime = now.format(DateTimeFormatter.ofPattern("yyyy-MM-dd'T'HH:mm:ss.SSSZ")); + + Map<String, Object> encounter = new HashMap<>(); + encounter.put("form", VITALS_FORM_UUID); + encounter.put("patient", patientUuid); + encounter.put("location", VITALS_LOCATION_UUID); + encounter.put("encounterType", VITALS_ENCOUNTER_TYPE_UUID); + encounter.put("encounterDatetime", encounterDatetime); + + List<Map<String, Object>> observations = new ArrayList<>(); + observations.add(Map.of("concept", SYSTOLIC_BLOOD_PRESSURE, "value", 34)); + observations.add(Map.of("concept", DIASTOLIC_BLOOD_PRESSURE, "value", 44)); + observations.add(Map.of("concept", RESPIRATORY_RATE, "value", 100)); + observations.add(Map.of("concept", ARTERIAL_BLOOD_OXYGEN_SATURATION, "value", 20)); + observations.add(Map.of("concept", PULSE, "value", 120)); + observations.add(Map.of("concept", TEMPERATURE_C, "value", 28)); + observations.add(Map.of("concept", WEIGHT_KG, "value", 60)); + observations.add(Map.of("concept", HEIGHT_CM, "value", 121)); + observations.add(Map.of("concept", MID_UPPER_ARM_CIRCUMFERENCE, "value", 34)); + + encounter.put("obs", observations); + + try { + String body = new ObjectMapper().writeValueAsString(encounter); // Convert Map to JSON + return http("Save Vitals").post("/openmrs/ws/rest/v1/encounter").body(StringBody(body)); + } + 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 02a2257..c46b94c 100644 --- a/src/test/java/org/openmrs/performance/http/HttpService.java +++ b/src/test/java/org/openmrs/performance/http/HttpService.java @@ -1,7 +1,6 @@ package org.openmrs.performance.http; import io.gatling.javaapi.http.HttpRequestActionBuilder; - import java.util.Set; import java.util.StringJoiner; @@ -115,4 +114,6 @@ public HttpRequestActionBuilder getActiveOrders(String patientUuid) { return http("Get Active Orders") .get("/openmrs/ws/rest/v1/order?patient="+patientUuid+"&careSetting=6f0c9a92-6f24-11e3-af88-005056821db0&status=ACTIVE&orderType=131168f4-15f5-102d-96e4-000c29c2a5d7&v=custom:(uuid,dosingType,orderNumber,accessionNumber,patient:ref,action,careSetting:ref,previousOrder:ref,dateActivated,scheduledDate,dateStopped,autoExpireDate,orderType:ref,encounter:ref,orderer:(uuid,display,person:(display)),orderReason,orderReasonNonCoded,orderType,urgency,instructions,commentToFulfiller,drug:(uuid,display,strength,dosageForm:(display,uuid),concept),dose,doseUnits:ref,frequency:ref,asNeeded,asNeededCondition,quantity,quantityUnits:ref,numRefills,dosingInstructions,duration,durationUnits:ref,route:ref,brandName,dispenseAsWritten)"); } + + } diff --git a/src/test/java/org/openmrs/performance/registries/DoctorRegistry.java b/src/test/java/org/openmrs/performance/registries/DoctorRegistry.java index f5a1f96..cfb6d9e 100644 --- a/src/test/java/org/openmrs/performance/registries/DoctorRegistry.java +++ b/src/test/java/org/openmrs/performance/registries/DoctorRegistry.java @@ -73,7 +73,8 @@ public ChainBuilder openVitalsAndBiometricsTab(String patientUuid) { MID_UPPER_ARM_CIRCUMFERENCE ); return exec(httpService.getPatientObservations(patientUuid, vitals)) - .exec(httpService.getPatientObservations(patientUuid, biometrics)); + .exec(httpService.getPatientObservations(patientUuid, biometrics)) + .exec(httpService.saveVitalsData(patientUuid)); } public ChainBuilder openMedicationsTab(String patientUuid) {