Summary Table

Categories Total Count
PII 0
URL 0
DNS 0
EKL 0
IP 0
PORT 0
VsID 0
CF 0
AI 0
VPD 0
PL 0
Other 0

File Content

package gov.va.vamf.scheduling.varutility.service;


import gov.va.vamf.scheduling.varutility.domain.ClinicalServices;
import gov.va.vamf.scheduling.varutility.domain.CoreSetting;
import gov.va.vamf.scheduling.varutility.domain.CoreSettings;
import gov.va.vamf.scheduling.varutility.domain.StopCodes;
import org.springframework.stereotype.Service;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

import static gov.va.vamf.scheduling.varutility.domain.CoreSettings.PRIMARY_CARE_ID;

@Service
public class CoreSettingsService {

public CoreSettings createDefaultCoreSettings(List<ClinicalServices> clinicalServices) {

CoreSettings cs = new CoreSettings();
for (ClinicalServices service: clinicalServices) {
Integer serviceSubmittedRequestLimit = service.getSubmittedRequestLimit();
String serviceName = service.getName();
String serviceId = service.getId();
StopCodes serviceStopCodes = service.getStopCodes();
cs = createCoreSettings(cs, serviceName, serviceId, serviceStopCodes, serviceSubmittedRequestLimit);
}
return cs;
}

public CoreSettings updateCriteriaCoreSettings(CoreSettings coreSettings, List<ClinicalServices> services) {

Map<String,String> coreSettingsIds = new HashMap<String, String>();
Map<String, String> servicesIds = new HashMap<String, String>();
Map<String, StopCodes> serviceStopCodes = new HashMap<String, StopCodes>();
Map<String, Integer> serviceSubmittedRequestLimits = new HashMap<String, Integer>();
CoreSettings newCoreSettings = new CoreSettings();
for (CoreSetting coreSetting: coreSettings) {
coreSettingsIds.put(coreSetting.getId(), coreSetting.getTypeOfCare());
}
for (ClinicalServices clinicalService: services) {
servicesIds.put(clinicalService.getId(), clinicalService.getName());
serviceStopCodes.put(clinicalService.getId(), clinicalService.getStopCodes());
serviceSubmittedRequestLimits.put(clinicalService.getId(), clinicalService.getSubmittedRequestLimit());
}
coreSettingsIds.keySet().retainAll(servicesIds.keySet());
for (CoreSetting coreSetting: coreSettings) {
String id = coreSetting.getId();
if (coreSettingsIds.containsKey(id)) {
coreSetting = determineSubmittedRequestLimit(coreSetting, serviceSubmittedRequestLimits, id);
coreSetting.setStopCodes(serviceStopCodes.get(id));
coreSetting.setEnterpriseSubmittedRequestLimit(serviceSubmittedRequestLimits.get(id));
coreSetting.setTypeOfCare(servicesIds.get(id));
newCoreSettings.add(coreSetting);
}
}
servicesIds.keySet().removeAll(coreSettingsIds.keySet());

for (Map.Entry<String, String> entry: servicesIds.entrySet()) {
newCoreSettings = createCoreSettings(newCoreSettings, entry.getValue(), entry.getKey(), serviceStopCodes.get(entry.getKey()), serviceSubmittedRequestLimits.get(entry.getKey()));
}
return newCoreSettings;
}

private CoreSettings createCoreSettings(CoreSettings coreSettings, String serviceName, String serviceId, StopCodes stopCodes, Integer submittedRequestLimit) {

coreSettings.add(new CoreSetting(serviceId, serviceName, "", 0, stopCodes, true, submittedRequestLimit, submittedRequestLimit));
return coreSettings;
}

private CoreSetting determineSubmittedRequestLimit(CoreSetting coreSetting, Map<String, Integer> serviceSubmittedRequestLimits, String id) {
if (coreSetting.getSubmittedRequestLimit() == null) {
coreSetting.setSubmittedRequestLimit(serviceSubmittedRequestLimits.get(id));
}
return coreSetting;
}
}