package com.nortal.jroad.client.ravimiregister; import com.nortal.jroad.client.exception.XRoadServiceConsumptionException; import com.nortal.jroad.client.ravimiregister.database.RavimiregisterXRoadDatabase; import com.nortal.jroad.client.ravimiregister.types.eu.x_road.ravimiregister.ATCKlassifikaator; import com.nortal.jroad.client.ravimiregister.types.eu.x_road.ravimiregister.ATCKlassifikaatoridByIDArrayDocument.ATCKlassifikaatoridByIDArray; import com.nortal.jroad.client.ravimiregister.types.eu.x_road.ravimiregister.ATCKlassifikaatoridDocument.ATCKlassifikaatorid; import com.nortal.jroad.client.ravimiregister.types.eu.x_road.ravimiregister.ArrayOfString; import com.nortal.jroad.client.ravimiregister.types.eu.x_road.ravimiregister.DateNotRequired; import com.nortal.jroad.client.ravimiregister.types.eu.x_road.ravimiregister.Haigus; import com.nortal.jroad.client.ravimiregister.types.eu.x_road.ravimiregister.HaigusedByIDArrayDocument.HaigusedByIDArray; import com.nortal.jroad.client.ravimiregister.types.eu.x_road.ravimiregister.HaigusedDocument.Haigused; import com.nortal.jroad.client.ravimiregister.types.eu.x_road.ravimiregister.Hinnakokkulepe; import com.nortal.jroad.client.ravimiregister.types.eu.x_road.ravimiregister.HinnakokkuleppedByIDArrayDocument.HinnakokkuleppedByIDArray; import com.nortal.jroad.client.ravimiregister.types.eu.x_road.ravimiregister.HinnakokkuleppedDocument.Hinnakokkulepped; import com.nortal.jroad.client.ravimiregister.types.eu.x_road.ravimiregister.MyygiloadByIDArrayDocument.MyygiloadByIDArray; import com.nortal.jroad.client.ravimiregister.types.eu.x_road.ravimiregister.MyygiloadDocument.Myygiload; import com.nortal.jroad.client.ravimiregister.types.eu.x_road.ravimiregister.Myygiluba; import com.nortal.jroad.client.ravimiregister.types.eu.x_road.ravimiregister.Pakend; import com.nortal.jroad.client.ravimiregister.types.eu.x_road.ravimiregister.PakendidByIDArrayDocument.PakendidByIDArray; import com.nortal.jroad.client.ravimiregister.types.eu.x_road.ravimiregister.PakendidDocument.Pakendid; import com.nortal.jroad.client.ravimiregister.types.eu.x_road.ravimiregister.Piirhind; import com.nortal.jroad.client.ravimiregister.types.eu.x_road.ravimiregister.PiirhinnadByIDArrayDocument.PiirhinnadByIDArray; import com.nortal.jroad.client.ravimiregister.types.eu.x_road.ravimiregister.PiirhinnadDocument.Piirhinnad; import com.nortal.jroad.client.ravimiregister.types.eu.x_road.ravimiregister.RavimiLiik; import com.nortal.jroad.client.ravimiregister.types.eu.x_road.ravimiregister.Ravimvorm; import com.nortal.jroad.client.ravimiregister.types.eu.x_road.ravimiregister.RavimvormidByIDArrayDocument.RavimvormidByIDArray; import com.nortal.jroad.client.ravimiregister.types.eu.x_road.ravimiregister.RavimvormidDocument.Ravimvormid; import com.nortal.jroad.client.ravimiregister.types.eu.x_road.ravimiregister.RetseptinoueLiik; import com.nortal.jroad.client.ravimiregister.types.eu.x_road.ravimiregister.Soodustus; import com.nortal.jroad.client.ravimiregister.types.eu.x_road.ravimiregister.SoodustusedByIDArrayDocument.SoodustusedByIDArray; import com.nortal.jroad.client.ravimiregister.types.eu.x_road.ravimiregister.SoodustusedDocument.Soodustused; import com.nortal.jroad.client.ravimiregister.types.eu.x_road.ravimiregister.Toimeaine; import com.nortal.jroad.client.ravimiregister.types.eu.x_road.ravimiregister.ToimeainedByIDArrayDocument.ToimeainedByIDArray; import com.nortal.jroad.client.ravimiregister.types.eu.x_road.ravimiregister.ToimeainedDocument.Toimeained; import com.nortal.jroad.client.service.XRoadDatabaseService; import java.util.Calendar; import java.util.Date; import java.util.List; import javax.annotation.Resource; import org.springframework.stereotype.Service; /** * @author Aleksei Bogdanov (aleksei.bogdanov@nortal.com) */ @Service("ravimiregisterXRoadService") public class RavimiregisterXRoadServiceImpl extends XRoadDatabaseService implements RavimiregisterXRoadService { @Resource private RavimiregisterXRoadDatabase ravimiregisterXRoadDatabase; @Override public List<ATCKlassifikaator> findATCKlassifikaatoridDetailandmed(List<String> items) throws XRoadServiceConsumptionException { ATCKlassifikaatoridByIDArray request = ATCKlassifikaatoridByIDArray.Factory.newInstance(); request.setKeha(createDetailsRequest(items)); return ravimiregisterXRoadDatabase.atcKlassifikaatoridByIDArrayV1(request).getKeha().getItemList(); } @Override public List<String> findATCKlassifikaatorid(Date date) throws XRoadServiceConsumptionException { ATCKlassifikaatorid request = ATCKlassifikaatorid.Factory.newInstance(); request.setKeha(createListRequest(date)); return ravimiregisterXRoadDatabase.atcKlassifikaatoridV1(request).getKeha().getItemList(); } @Override public List<Haigus> findHaigusedDetailandmed(List<String> items) throws XRoadServiceConsumptionException { HaigusedByIDArray request = HaigusedByIDArray.Factory.newInstance(); request.setKeha(createDetailsRequest(items)); return ravimiregisterXRoadDatabase.haigusedByIDArrayV1(request).getKeha().getItemList(); } @Override public List<String> findHaigused(Date date) throws XRoadServiceConsumptionException { Haigused request = Haigused.Factory.newInstance(); request.setKeha(createListRequest(date)); return ravimiregisterXRoadDatabase.haigusedV1(request).getKeha().getItemList(); } @Override public List<Pakend> findPakendidDetailandmed(List<String> items) throws XRoadServiceConsumptionException { PakendidByIDArray request = PakendidByIDArray.Factory.newInstance(); request.setKeha(createDetailsRequest(items)); return ravimiregisterXRoadDatabase.pakendidByIDArrayV3(request).getKeha().getItemList(); } @Override public List<String> findPakendid(Date date) throws XRoadServiceConsumptionException { Pakendid request = Pakendid.Factory.newInstance(); DateNotRequired alatesKp = DateNotRequired.Factory.newInstance(); request.addNewKeha(); setRequestStartDate(date, alatesKp); request.getKeha().setMuudatusedAlates(alatesKp); request.getKeha().setRavimiLiik(RavimiLiik.INIM); request.getKeha().setRetseptinoueLiik(RetseptinoueLiik.KXIK); return ravimiregisterXRoadDatabase.pakendidV1(request).getKeha().getItemList(); } @Override public List<Ravimvorm> findRavimvormidDetailandmed(List<String> items) throws XRoadServiceConsumptionException { RavimvormidByIDArray request = RavimvormidByIDArray.Factory.newInstance(); request.setKeha(createDetailsRequest(items)); return ravimiregisterXRoadDatabase.ravimvormidByIDArrayV1(request).getKeha().getItemList(); } @Override public List<String> findRavimvormid(Date date) throws XRoadServiceConsumptionException { Ravimvormid request = Ravimvormid.Factory.newInstance(); request.setKeha(createListRequest(date)); return ravimiregisterXRoadDatabase.ravimvormidV1(request).getKeha().getItemList(); } @Override public List<Soodustus> findSoodustusedDetailandmed(List<String> items) throws XRoadServiceConsumptionException { SoodustusedByIDArray request = SoodustusedByIDArray.Factory.newInstance(); request.setKeha(createDetailsRequest(items)); return ravimiregisterXRoadDatabase.soodustusedByIDArrayV1(request).getKeha().getItemList(); } @Override public List<String> findSoodustused(Date date) throws XRoadServiceConsumptionException { Soodustused request = Soodustused.Factory.newInstance(); request.setKeha(createListRequest(date)); return ravimiregisterXRoadDatabase.soodustusedV1(request).getKeha().getItemList(); } @Override public List<Toimeaine> findToimeainedDetailandmed(List<String> items) throws XRoadServiceConsumptionException { ToimeainedByIDArray request = ToimeainedByIDArray.Factory.newInstance(); request.setKeha(createDetailsRequest(items)); return ravimiregisterXRoadDatabase.toimeainedByIDArrayV1(request).getKeha().getItemList(); } @Override public List<String> findToimeained(Date date) throws XRoadServiceConsumptionException { Toimeained request = Toimeained.Factory.newInstance(); request.setKeha(createListRequest(date)); return ravimiregisterXRoadDatabase.toimeainedV1(request).getKeha().getItemList(); } @Override public List<String> findPiirhinnad(Date date) throws XRoadServiceConsumptionException { Piirhinnad request = Piirhinnad.Factory.newInstance(); request.setKeha(createListRequest(date)); return ravimiregisterXRoadDatabase.piirhinnadV1(request).getKeha().getItemList(); } @Override public List<Piirhind> findPiirhinnadDetailandmed(List<String> items) throws XRoadServiceConsumptionException { PiirhinnadByIDArray request = PiirhinnadByIDArray.Factory.newInstance(); request.setKeha(createDetailsRequest(items)); return ravimiregisterXRoadDatabase.piirhinnadByIDArrayV1(request).getKeha().getItemList(); } @Override public List<String> findHinnakokkulepped(Date date) throws XRoadServiceConsumptionException { Hinnakokkulepped request = Hinnakokkulepped.Factory.newInstance(); request.setKeha(createListRequest(date)); return ravimiregisterXRoadDatabase.hinnakokkuleppedV1(request).getKeha().getItemList(); } @Override public List<Hinnakokkulepe> findHinnakokkuleppedDetailandmed(List<String> items) throws XRoadServiceConsumptionException { HinnakokkuleppedByIDArray request = HinnakokkuleppedByIDArray.Factory.newInstance(); request.setKeha(createDetailsRequest(items)); return ravimiregisterXRoadDatabase.hinnakokkuleppedByIDArrayV1(request).getKeha().getItemList(); } @Override public List<String> findMyygiload(Date date) throws XRoadServiceConsumptionException { Myygiload request = Myygiload.Factory.newInstance(); request.setKeha(createListRequest(date)); return ravimiregisterXRoadDatabase.myygiloadV1(request).getKeha().getItemList(); } @Override public List<Myygiluba> findMyygiloadDetailandmed(List<String> items) throws XRoadServiceConsumptionException { MyygiloadByIDArray request = MyygiloadByIDArray.Factory.newInstance(); request.setKeha(createDetailsRequest(items)); return ravimiregisterXRoadDatabase.myygiloadByIDArrayV1(request).getKeha().getItemList(); } private ArrayOfString createDetailsRequest(List<String> items) { ArrayOfString request = ArrayOfString.Factory.newInstance(); String[] itemsArray = new String[items.size()]; request.setItemArray(items.toArray(itemsArray)); return request; } private DateNotRequired createListRequest(Date date) { DateNotRequired request = DateNotRequired.Factory.newInstance(); setRequestStartDate(date, request); return request; } private void setRequestStartDate(Date date, DateNotRequired request) { if (date != null) { Calendar calendar = Calendar.getInstance(); calendar.setTime(date); request.setKuupaev(calendar); } } public void setRavimiregisterXRoadDatabase(RavimiregisterXRoadDatabase ravimiregisterXRoadDatabase) { this.ravimiregisterXRoadDatabase = ravimiregisterXRoadDatabase; } }