package ch.pharmed.phmprescriber; import java.util.ArrayList; import java.util.List; import ch.elexis.data.Rezept; import ch.pharmedsolutions.www.interactionservice.InteractionPortType; import ch.pharmedsolutions.www.interactionservice.InteractionRequest; import ch.pharmedsolutions.www.interactionservice.InteractionService; import ch.pharmedsolutions.www.interactionservice.Interactions; public class Interaction { public Interaction() { // TODO Auto-generated constructor stub } //Check a prescription for interactions public List<String> checkPrescription(Rezept rp){ //If only 1 product, don't run the check an proceed normally if (rp.getLines().size() < 2) { return null; } //Input parameter ch.pharmedsolutions.www.interactionservice.InteractionRequest IARequest = new ch.pharmedsolutions.www.interactionservice.InteractionRequest(); //Assign all products IARequest.setKey("kdMie893Kaop"); List<String> atc_codes = new ArrayList<String>(); for(int i = 0; i < rp.getLines().size(); i = i+1) { IARequest.getAtcCodes().add(rp.getLines().get(i).getArtikel().getATC_code()); atc_codes.add(IARequest.getAtcCodes().get(i)); } Interactions interactions = new Interactions(); try { //Get the information interactions = consumService(IARequest); if (!(interactions == null) && interactions.getInteractions().getInteraction().size() > 0) { return getDescription(rp,interactions, atc_codes); }; } catch (Exception ex) { System.out.println( "Exception: " + ex); } return null; } private Interactions consumService(InteractionRequest IAReqest) { InteractionService service = new InteractionService(); InteractionPortType port = service.getInteractionPort(); return port.checkInteraction(IAReqest); } private List<String> getDescription(Rezept rp, Interactions interactions, List<String> atc_codes) { //Define the final list List<String> Descriptions = new ArrayList<String>(); for (int i = 0; i< interactions.getInteractions().getInteraction().size(); i = i+1) { String atc1 = interactions.getInteractions().getInteraction().get(i).getAtcCode1(); String atc2 = interactions.getInteractions().getInteraction().get(i).getAtcCode2(); int indexLeft = atc_codes.indexOf(atc1); int indexRight = atc_codes.indexOf(atc2); Descriptions.add(rp.getLines().get(indexLeft).getArtikel().getName() + " <--> " + rp.getLines().get(indexRight).getArtikel().getName()); Descriptions.add(interactions.getInteractions().getInteraction().get(i).getDescr()); } return Descriptions; } }