/*******************************************************************************
* Copyright (c) 2014 MEDEVIT.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* MEDEVIT <office@medevit.at> - initial API and implementation
*******************************************************************************/
package at.medevit.elexis.impfplan.model.vaccplans;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
public class ImpfplanSchweiz2015 extends AbstractVaccinationPlan {
private List<RequiredVaccination> vaccPlan;
private final static String vaccPlanCH2013[] = {
"2;J07AF/B,J07AM/B,J07AJ/B,J07BF/B,J07AG/B,J07AL/E",
"4;J07AF/B,J07AM/B,J07AJ/B,J07BF/B,J07AG/B,J07AL/E",
"6;J07AF/B,J07AM/B,J07AJ/B,J07BF/B,J07AG/B",
"12;J07BD/B,J07BE/B,J07BJ/B,J07AL/E",
"12-15;J07AH/E",
"15-24;J07AF/B,J07AM/B,J07AJ/B,J07BF/B,J07AG/B,J07BD/B,J07BE/B,J07BJ/B",
"48-84;J07AF/B,J07AM/B,J07AJ/B,J07BF/B",
"132-180;J07AF/B,J07AM/B,J07AJ/B,J07BC01/B,J07BM/B",
"300-348;J07AF/B,J07AM/B,J07AJ/B",
"540;J07AF/B,J07AM/B",
"780;J07AF/B,J07AM/B,J07AL,J07BB"
};
public ImpfplanSchweiz2015(){
super("VACC_CH_2015", "Schweizerischer Impfplan 2015");
// vaccPlan is needed for initialization only
vaccPlan = null;
}
@Override
protected void initialize(){
vaccPlan = parseVaccPlan(new ArrayList<RequiredVaccination>());
}
@Override
public List<String> getOrderedBaseDiseases(){
List<String> rv = new ArrayList<>();
String[] values = "J07AF,J07AM,J07AJ,J07BF,J07AG,J07BC01,J07BC02,J07BD,J07BE,J07BJ,J07BM".split(",");
for (String string : values) {
rv.add(string);
}
Collections.reverse(rv);
return rv;
}
@Override
public List<String> getOrderedExtendedDiseases(){
List<String> rv = new ArrayList<>();
String[] values = "J07BK,J07AL,J07AH,J07BA01".split(",");
for (String string : values) {
rv.add(string);
}
Collections.reverse(rv);
return rv;
}
@Override
protected List<RequiredVaccination> addBaseVaccinations(List<RequiredVaccination> baseVaccinations){
for (RequiredVaccination rv : vaccPlan) {
if(rv.diseaseAtcCode.endsWith("/B")) baseVaccinations.add(rv);
}
return baseVaccinations;
}
@Override
protected List<RequiredVaccination> addExtendedVaccinations(
List<RequiredVaccination> extendedVaccinations){
for (RequiredVaccination rv : vaccPlan) {
if (rv.diseaseAtcCode.endsWith("/E")) extendedVaccinations.add(rv);
}
return extendedVaccinations;
}
private List<RequiredVaccination> parseVaccPlan(List<RequiredVaccination> vaccPlan){
for (String line : vaccPlanCH2013) {
String[] split = line.split(";");
int[] timeFrames = splitTimeFrames(split[0]);
List<String> atcCodes = Arrays.asList(split[1].split(","));
for (String atc : atcCodes) {
RequiredVaccination rv = new RequiredVaccination(timeFrames[0], timeFrames[1], atc);
vaccPlan.add(rv);
}
}
return vaccPlan;
}
private int[] splitTimeFrames(String timeString){
int[] retVal = new int[2];
Arrays.fill(retVal, -1);
String[] split = timeString.split("-");
for (int i = 0; i < split.length; i++) {
retVal[i] = Integer.parseInt(split[i]);
}
return retVal;
}
}