Skip to content

Commit

Permalink
BAH-3460 | Kavitha | refactor save adhoc medications (#13)
Browse files Browse the repository at this point in the history
  • Loading branch information
kavitha-sundararajan authored Jan 16, 2024
1 parent 28efc13 commit d695d2e
Show file tree
Hide file tree
Showing 4 changed files with 27 additions and 18 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -26,9 +26,9 @@ public class MedicationAdministrationRequest {
private String drugUuid;
private String dosingInstructions;
private Double dose;
private String doseUnitsUuid;
private String routeUuid;
private String siteUuid;
private String doseUnits;
private String route;
private String site;
private Long administeredDateTime;
private String slotUuid;

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Getter;
import lombok.Setter;
import lombok.NoArgsConstructor;
import org.openmrs.module.ipd.api.util.DateTimeUtil;

Expand All @@ -13,6 +14,7 @@
import static org.openmrs.module.ipd.api.util.DateTimeUtil.convertEpocUTCToLocalTimeZone;

@Getter
@Setter
@Builder
@NoArgsConstructor
@AllArgsConstructor
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -61,9 +61,9 @@ public MedicationAdministration mapRequestToMedicationAdministration(MedicationA
medicationAdministration.setDrug(Context.getConceptService().getDrugByUuid(request.getDrugUuid()));
medicationAdministration.setDosingInstructions(request.getDosingInstructions());
medicationAdministration.setDose(request.getDose());
medicationAdministration.setDoseUnits(Context.getConceptService().getConceptByUuid(request.getDoseUnitsUuid()));
medicationAdministration.setRoute(Context.getConceptService().getConceptByUuid(request.getRouteUuid()));
medicationAdministration.setSite(Context.getConceptService().getConceptByUuid(request.getSiteUuid()));
medicationAdministration.setDoseUnits(Context.getConceptService().getConceptByName(request.getDoseUnits()));
medicationAdministration.setRoute(Context.getConceptService().getConceptByName(request.getRoute()));
medicationAdministration.setSite(Context.getConceptService().getConceptByName(request.getSite()));

return medicationAdministration;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,9 @@
import org.openmrs.module.ipd.api.translators.MedicationAdministrationToSlotStatusTranslator;
import org.openmrs.module.ipd.api.util.DateTimeUtil;
import org.openmrs.module.ipd.contract.MedicationAdministrationRequest;
import org.openmrs.module.ipd.contract.ScheduleMedicationRequest;
import org.openmrs.module.ipd.factory.MedicationAdministrationFactory;
import org.openmrs.module.ipd.factory.ScheduleFactory;
import org.openmrs.module.ipd.factory.SlotFactory;
import org.openmrs.module.ipd.service.IPDMedicationAdministrationService;
import org.springframework.beans.factory.annotation.Autowired;
Expand All @@ -41,14 +43,16 @@ public class IPDMedicationAdministrationServiceImpl implements IPDMedicationAdmi
private ScheduleService scheduleService;
private FhirMedicationAdministrationDao fhirMedicationAdministrationDao;
private MedicationAdministrationToSlotStatusTranslator medicationAdministrationToSlotStatusTranslator;
private ScheduleFactory scheduleFactory;

@Autowired
public IPDMedicationAdministrationServiceImpl(FhirMedicationAdministrationService fhirMedicationAdministrationService,
MedicationAdministrationTranslator medicationAdministrationTranslator,
MedicationAdministrationFactory medicationAdministrationFactory,
SlotFactory slotFactory, SlotService slotService, ScheduleService scheduleService,
FhirMedicationAdministrationDao fhirMedicationAdministrationDao,
MedicationAdministrationToSlotStatusTranslator medicationAdministrationToSlotStatusTranslator) {
MedicationAdministrationToSlotStatusTranslator medicationAdministrationToSlotStatusTranslator,
ScheduleFactory scheduleFactory) {
this.fhirMedicationAdministrationService = fhirMedicationAdministrationService;
this.medicationAdministrationTranslator = medicationAdministrationTranslator;
this.medicationAdministrationFactory = medicationAdministrationFactory;
Expand All @@ -57,6 +61,7 @@ public IPDMedicationAdministrationServiceImpl(FhirMedicationAdministrationServic
this.scheduleService = scheduleService;
this.fhirMedicationAdministrationDao = fhirMedicationAdministrationDao;
this.medicationAdministrationToSlotStatusTranslator=medicationAdministrationToSlotStatusTranslator;
this.scheduleFactory = scheduleFactory;
}

private org.hl7.fhir.r4.model.MedicationAdministration createMedicationAdministration(MedicationAdministrationRequest medicationAdministrationRequest) {
Expand Down Expand Up @@ -90,18 +95,20 @@ public org.hl7.fhir.r4.model.MedicationAdministration saveAdhocMedicationAdminis
Visit visit = Context.getVisitService().getActiveVisitsByPatient(patient).get(0);
Schedule schedule = scheduleService.getScheduleByVisit(visit);
if (schedule == null) {
throw new RuntimeException("Active Schedule not found");
} else {
org.hl7.fhir.r4.model.MedicationAdministration medicationAdministration = createMedicationAdministration(medicationAdministrationRequest);
MedicationAdministration openmrsMedicationAdministration = (MedicationAdministration) fhirMedicationAdministrationDao.get(medicationAdministration.getId());
List<LocalDateTime> slotsStartTime = new ArrayList<>();
slotsStartTime.add(DateTimeUtil.convertEpocUTCToLocalTimeZone(medicationAdministrationRequest.getAdministeredDateTime()));
ServiceType serviceType = openmrsMedicationAdministration.getDrugOrder() == null ? ServiceType.EMERGENCY_MEDICATION_REQUEST : ServiceType.AS_NEEDED_MEDICATION_REQUEST;
slotFactory.createSlotsForMedicationFrom(schedule, slotsStartTime, openmrsMedicationAdministration.getDrugOrder(),
openmrsMedicationAdministration, Slot.SlotStatus.COMPLETED, serviceType)
.forEach(slotService::saveSlot);
return medicationAdministration;
ScheduleMedicationRequest scheduleMedicationRequest = new ScheduleMedicationRequest();
scheduleMedicationRequest.setPatientUuid(medicationAdministrationRequest.getPatientUuid());
scheduleMedicationRequest.setProviderUuid(medicationAdministrationRequest.getProviders().get(0).getUuid());
schedule = scheduleService.saveSchedule(scheduleFactory.createScheduleForMedicationFrom(scheduleMedicationRequest, visit));
}
org.hl7.fhir.r4.model.MedicationAdministration medicationAdministration = createMedicationAdministration(medicationAdministrationRequest);
MedicationAdministration openmrsMedicationAdministration = (MedicationAdministration) fhirMedicationAdministrationDao.get(medicationAdministration.getId());
List<LocalDateTime> slotsStartTime = new ArrayList<>();
slotsStartTime.add(DateTimeUtil.convertEpocUTCToLocalTimeZone(medicationAdministrationRequest.getAdministeredDateTime()));
ServiceType serviceType = openmrsMedicationAdministration.getDrugOrder() == null ? ServiceType.EMERGENCY_MEDICATION_REQUEST : ServiceType.AS_NEEDED_MEDICATION_REQUEST;
slotFactory.createSlotsForMedicationFrom(schedule, slotsStartTime, openmrsMedicationAdministration.getDrugOrder(),
openmrsMedicationAdministration, Slot.SlotStatus.COMPLETED, serviceType)
.forEach(slotService::saveSlot);
return medicationAdministration;
}

}

0 comments on commit d695d2e

Please sign in to comment.