package se.cambio.cds.util.export.html;
import se.cambio.cds.gdl.model.Guide;
import se.cambio.cds.gdl.model.readable.ReadableGuide;
import se.cambio.cds.gdl.model.readable.rule.ReadableRule;
import se.cambio.cds.util.GuideImporter;
import se.cambio.openehr.controller.session.data.ArchetypeManager;
import se.cambio.openehr.util.exceptions.InternalErrorException;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
public class GuideHTMLExporter extends ClinicalModelHTMLExporter<Guide> {
public GuideHTMLExporter(ArchetypeManager archetypeManager) {
super(archetypeManager);
}
@Override
public Map<String, Object> getEntityObjectsMap() throws InternalErrorException {
String lang = getLanguage();
ReadableGuide readableGuide = GuideImporter.importGuide(getEntity(), lang, getArchetypeManager());
Collection<String> htmlReadableRules = getHTMLReadableRules(readableGuide, lang);
Map<String, Object> objectMap = new HashMap<String, Object>();
objectMap.put("guide", getEntity());
objectMap.put("guide_details", getEntity().getDescription().getDetails().get(lang));
objectMap.put("guide_definitions", readableGuide);
objectMap.put("guide_preconditions", readableGuide.getPreconditionRuleLines().getRuleLines());
objectMap.put("guide_rules", htmlReadableRules);
objectMap.put("guide_terms", getEntity().getOntology().getTermDefinitions().get(lang).getTerms());
return objectMap;
}
private static Collection<String> getHTMLReadableRules(ReadableGuide readableGuide, String lang){
Collection<String> htmlReadableRules = new ArrayList<String>();
for(ReadableRule readableRule: readableGuide.getReadableRules().values()){
htmlReadableRules.add(readableRule.toHTMLString(lang));
}
return htmlReadableRules;
}
@Override
public Map<String, String> getEntityTextMap() {
HashMap<String, String> textsMap = new HashMap<String, String>();
addText(textsMap, "GuideDetails");
addText(textsMap, "Preconditions");
addText(textsMap, "RuleList");
addText(textsMap, "Bindings");
return textsMap;
}
@Override
public InputStream getInputStreamTemplate() {
return GuideHTMLExporter.class.getClassLoader().getResourceAsStream("gdl.ftl");
}
}