From c4349afdd152f89e0f09c9286206e5be07f7e6bf Mon Sep 17 00:00:00 2001 From: makombe Date: Fri, 16 Aug 2024 10:21:03 +0300 Subject: [PATCH 1/2] Add insurance benefits package table --- .../api/model/InsuranceBenefitsPackage.java | 174 ++++++++++++++++++ .../main/resources/InsurancePackage.hbm.xml | 49 +++++ omod/src/main/resources/config.xml | 1 + omod/src/main/resources/hibernate.cfg.xml | 1 + omod/src/main/resources/liquibase.xml | 37 ++++ 5 files changed, 262 insertions(+) create mode 100644 api/src/main/java/org/openmrs/module/kenyaemr/cashier/api/model/InsuranceBenefitsPackage.java create mode 100644 api/src/main/resources/InsurancePackage.hbm.xml diff --git a/api/src/main/java/org/openmrs/module/kenyaemr/cashier/api/model/InsuranceBenefitsPackage.java b/api/src/main/java/org/openmrs/module/kenyaemr/cashier/api/model/InsuranceBenefitsPackage.java new file mode 100644 index 0000000..460a92a --- /dev/null +++ b/api/src/main/java/org/openmrs/module/kenyaemr/cashier/api/model/InsuranceBenefitsPackage.java @@ -0,0 +1,174 @@ +package org.openmrs.module.kenyaemr.cashier.api.model; + +import org.openmrs.BaseOpenmrsData; + +public class InsuranceBenefitsPackage extends BaseOpenmrsData { + + public static final long serialVersionUID = 0L; + private int benefitId; + private String interventionName; + private String shaCode; + private String description; + private String interventionType; + private Boolean requiresPreAuth; + private String benefitDistribution; + private Integer tariff; + private Integer lowerAgeLimit; + private Integer upperAgeLimit; + private Boolean needsReferral; + private String packageName; + private String packageCode; + private Integer insurer; + private String gender; + private String accessPoint; + private String subCategory; + + public int getBenefitId() { + return benefitId; + } + + public void setBenefitId(int benefitId) { + this.benefitId = benefitId; + } + + public String getShaCode() { + return shaCode; + } + + public void setShaCode(String shaCode) { + this.shaCode = shaCode; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + public String getInterventionType() { + return interventionType; + } + + public void setInterventionType(String interventionType) { + this.interventionType = interventionType; + } + + public Boolean getRequiresPreAuth() { + return requiresPreAuth; + } + + public void setRequiresPreAuth(Boolean requiresPreAuth) { + this.requiresPreAuth = requiresPreAuth; + } + + public String getBenefitDistribution() { + return benefitDistribution; + } + + public void setBenefitDistribution(String benefitDistribution) { + this.benefitDistribution = benefitDistribution; + } + + public Integer getTariff() { + return tariff; + } + + public void setTariff(Integer tariff) { + this.tariff = tariff; + } + + @Override + public Integer getId() { + return getBenefitId(); + } + + @Override + public void setId(Integer integer) { + setBenefitId(integer); + } + + + public Integer getLowerAgeLimit() { + return lowerAgeLimit; + } + + public void setLowerAgeLimit(Integer lowerAgeLimit) { + this.lowerAgeLimit = lowerAgeLimit; + } + + public Integer getUpperAgeLimit() { + return upperAgeLimit; + } + + public void setUpperAgeLimit(Integer upperAgeLimit) { + this.upperAgeLimit = upperAgeLimit; + } + + public Boolean getNeedsReferral() { + return needsReferral; + } + + public void setNeedsReferral(Boolean needsReferral) { + this.needsReferral = needsReferral; + } + + public String getPackageName() { + return packageName; + } + + public void setPackageName(String packageName) { + this.packageName = packageName; + } + + public String getPackageCode() { + return packageCode; + } + + public void setPackageCode(String packageCode) { + this.packageCode = packageCode; + } + + public Integer getInsurer() { + return insurer; + } + + public void setInsurer(Integer insurer) { + this.insurer = insurer; + } + + public String getGender() { + return gender; + } + + public void setGender(String gender) { + this.gender = gender; + } + + public String getAccessPoint() { + return accessPoint; + } + + public void setAccessPoint(String accessPoint) { + this.accessPoint = accessPoint; + } + + public String getSubCategory() { + return subCategory; + } + + public void setSubCategory(String subCategory) { + this.subCategory = subCategory; + } + + public String getInterventionName() { + return interventionName; + } + + public void setInterventionName(String interventionName) { + this.interventionName = interventionName; + } + + +} diff --git a/api/src/main/resources/InsurancePackage.hbm.xml b/api/src/main/resources/InsurancePackage.hbm.xml new file mode 100644 index 0000000..412a1e6 --- /dev/null +++ b/api/src/main/resources/InsurancePackage.hbm.xml @@ -0,0 +1,49 @@ + + + + + + + + + + + insurance_benefits_package_id_seq + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/omod/src/main/resources/config.xml b/omod/src/main/resources/config.xml index 933621a..4b70d5e 100644 --- a/omod/src/main/resources/config.xml +++ b/omod/src/main/resources/config.xml @@ -276,6 +276,7 @@ Bill.hbm.xml Cashier.hbm.xml SequentialReceiptNumberGenerator.hbm.xml + InsurancePackage.hbm.xml diff --git a/omod/src/main/resources/hibernate.cfg.xml b/omod/src/main/resources/hibernate.cfg.xml index 1494c30..a139163 100644 --- a/omod/src/main/resources/hibernate.cfg.xml +++ b/omod/src/main/resources/hibernate.cfg.xml @@ -15,5 +15,6 @@ + \ No newline at end of file diff --git a/omod/src/main/resources/liquibase.xml b/omod/src/main/resources/liquibase.xml index 11133b5..49e1b12 100644 --- a/omod/src/main/resources/liquibase.xml +++ b/omod/src/main/resources/liquibase.xml @@ -32,6 +32,43 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + From 4e69bae9155698b359e7049ddc3ccb42945ea627 Mon Sep 17 00:00:00 2001 From: makombe Date: Sat, 17 Aug 2024 14:48:55 +0300 Subject: [PATCH 2/2] Add insurance benefits package search resouce by packagename, packagecode, sha-code and subcategory --- .../api/IInsuranceBenefitsPackageService.java | 13 +++ .../InsuranceBenefitsPackageServiceImpl.java | 57 ++++++++++ ...a => InsuranceBenefitsPackageService.java} | 2 +- ...InsuranceBenefitsPackageServiceSearch.java | 39 +++++++ .../main/resources/InsurancePackage.hbm.xml | 2 +- .../resources/moduleApplicationContext.xml | 18 ++++ ...suranceBenefitsPackageServiceResource.java | 102 ++++++++++++++++++ 7 files changed, 231 insertions(+), 2 deletions(-) create mode 100644 api/src/main/java/org/openmrs/module/kenyaemr/cashier/api/IInsuranceBenefitsPackageService.java create mode 100644 api/src/main/java/org/openmrs/module/kenyaemr/cashier/api/impl/InsuranceBenefitsPackageServiceImpl.java rename api/src/main/java/org/openmrs/module/kenyaemr/cashier/api/model/{InsuranceBenefitsPackage.java => InsuranceBenefitsPackageService.java} (98%) create mode 100644 api/src/main/java/org/openmrs/module/kenyaemr/cashier/api/search/InsuranceBenefitsPackageServiceSearch.java create mode 100644 omod/src/main/java/org/openmrs/module/kenyaemr/cashier/rest/resource/InsuranceBenefitsPackageServiceResource.java diff --git a/api/src/main/java/org/openmrs/module/kenyaemr/cashier/api/IInsuranceBenefitsPackageService.java b/api/src/main/java/org/openmrs/module/kenyaemr/cashier/api/IInsuranceBenefitsPackageService.java new file mode 100644 index 0000000..5ff72d0 --- /dev/null +++ b/api/src/main/java/org/openmrs/module/kenyaemr/cashier/api/IInsuranceBenefitsPackageService.java @@ -0,0 +1,13 @@ +package org.openmrs.module.kenyaemr.cashier.api; + +import org.openmrs.module.kenyaemr.cashier.api.base.entity.IEntityDataService; +import org.openmrs.module.kenyaemr.cashier.api.model.InsuranceBenefitsPackageService; +import org.openmrs.module.kenyaemr.cashier.api.search.InsuranceBenefitsPackageServiceSearch; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; + +@Transactional +public interface IInsuranceBenefitsPackageService extends IEntityDataService { + List findServices(final InsuranceBenefitsPackageServiceSearch search); +} diff --git a/api/src/main/java/org/openmrs/module/kenyaemr/cashier/api/impl/InsuranceBenefitsPackageServiceImpl.java b/api/src/main/java/org/openmrs/module/kenyaemr/cashier/api/impl/InsuranceBenefitsPackageServiceImpl.java new file mode 100644 index 0000000..4251aba --- /dev/null +++ b/api/src/main/java/org/openmrs/module/kenyaemr/cashier/api/impl/InsuranceBenefitsPackageServiceImpl.java @@ -0,0 +1,57 @@ +package org.openmrs.module.kenyaemr.cashier.api.impl; + +import org.hibernate.Criteria; +import org.openmrs.module.kenyaemr.cashier.api.IInsuranceBenefitsPackageService; +import org.openmrs.module.kenyaemr.cashier.api.base.entity.impl.BaseEntityDataServiceImpl; +import org.openmrs.module.kenyaemr.cashier.api.base.entity.security.IEntityAuthorizationPrivileges; +import org.openmrs.module.kenyaemr.cashier.api.base.f.Action1; +import org.openmrs.module.kenyaemr.cashier.api.model.InsuranceBenefitsPackageService; +import org.openmrs.module.kenyaemr.cashier.api.search.InsuranceBenefitsPackageServiceSearch; +import org.springframework.transaction.annotation.Transactional; + +import java.util.List; + +@Transactional +public class InsuranceBenefitsPackageServiceImpl extends BaseEntityDataServiceImpl implements IEntityAuthorizationPrivileges + , IInsuranceBenefitsPackageService { + + @Override + public List findServices(final InsuranceBenefitsPackageServiceSearch serviceSearch) { + return executeCriteria(InsuranceBenefitsPackageService.class, null, new Action1() { + @Override + public void apply(Criteria criteria) { + serviceSearch.updateCriteria(criteria); + } + }); + } + + @Override + protected IEntityAuthorizationPrivileges getPrivileges() { + return this; + } + + @Override + protected void validate(InsuranceBenefitsPackageService object) { + + } + + @Override + public String getVoidPrivilege() { + return null; + } + + @Override + public String getSavePrivilege() { + return null; + } + + @Override + public String getPurgePrivilege() { + return null; + } + + @Override + public String getGetPrivilege() { + return null; + } +} diff --git a/api/src/main/java/org/openmrs/module/kenyaemr/cashier/api/model/InsuranceBenefitsPackage.java b/api/src/main/java/org/openmrs/module/kenyaemr/cashier/api/model/InsuranceBenefitsPackageService.java similarity index 98% rename from api/src/main/java/org/openmrs/module/kenyaemr/cashier/api/model/InsuranceBenefitsPackage.java rename to api/src/main/java/org/openmrs/module/kenyaemr/cashier/api/model/InsuranceBenefitsPackageService.java index 460a92a..ba864b7 100644 --- a/api/src/main/java/org/openmrs/module/kenyaemr/cashier/api/model/InsuranceBenefitsPackage.java +++ b/api/src/main/java/org/openmrs/module/kenyaemr/cashier/api/model/InsuranceBenefitsPackageService.java @@ -2,7 +2,7 @@ import org.openmrs.BaseOpenmrsData; -public class InsuranceBenefitsPackage extends BaseOpenmrsData { +public class InsuranceBenefitsPackageService extends BaseOpenmrsData { public static final long serialVersionUID = 0L; private int benefitId; diff --git a/api/src/main/java/org/openmrs/module/kenyaemr/cashier/api/search/InsuranceBenefitsPackageServiceSearch.java b/api/src/main/java/org/openmrs/module/kenyaemr/cashier/api/search/InsuranceBenefitsPackageServiceSearch.java new file mode 100644 index 0000000..ca3df31 --- /dev/null +++ b/api/src/main/java/org/openmrs/module/kenyaemr/cashier/api/search/InsuranceBenefitsPackageServiceSearch.java @@ -0,0 +1,39 @@ +package org.openmrs.module.kenyaemr.cashier.api.search; + +import org.hibernate.Criteria; +import org.hibernate.criterion.Restrictions; +import org.openmrs.module.kenyaemr.cashier.api.base.entity.search.BaseDataTemplateSearch; +import org.openmrs.module.kenyaemr.cashier.api.model.InsuranceBenefitsPackageService; + +public class InsuranceBenefitsPackageServiceSearch extends BaseDataTemplateSearch { + public InsuranceBenefitsPackageServiceSearch() { + this(new InsuranceBenefitsPackageService(), false); + } + + public InsuranceBenefitsPackageServiceSearch(InsuranceBenefitsPackageService template) { + this(template, false); + } + + public InsuranceBenefitsPackageServiceSearch(InsuranceBenefitsPackageService template, Boolean includeRetired) { + super(template, includeRetired); + } + + @Override + public void updateCriteria(Criteria criteria) { + super.updateCriteria(criteria); + + InsuranceBenefitsPackageService InsurancePackageService = getTemplate(); + if (InsurancePackageService.getPackageCode() != null) { + criteria.add(Restrictions.eq("packageCode", InsurancePackageService.getPackageCode())); + } + if (InsurancePackageService.getPackageName() != null) { + criteria.add(Restrictions.eq("packageName", InsurancePackageService.getPackageName())); + } + if (InsurancePackageService.getSubCategory() != null) { + criteria.add(Restrictions.eq("subCategory", InsurancePackageService.getSubCategory())); + } + if (InsurancePackageService.getShaCode() != null) { + criteria.add(Restrictions.eq("shaCode", InsurancePackageService.getShaCode())); + } + } +} diff --git a/api/src/main/resources/InsurancePackage.hbm.xml b/api/src/main/resources/InsurancePackage.hbm.xml index 412a1e6..e226c12 100644 --- a/api/src/main/resources/InsurancePackage.hbm.xml +++ b/api/src/main/resources/InsurancePackage.hbm.xml @@ -5,7 +5,7 @@ - + diff --git a/api/src/main/resources/moduleApplicationContext.xml b/api/src/main/resources/moduleApplicationContext.xml index 4021ddd..17d23e7 100644 --- a/api/src/main/resources/moduleApplicationContext.xml +++ b/api/src/main/resources/moduleApplicationContext.xml @@ -98,6 +98,14 @@ + + + + org.openmrs.module.kenyaemr.cashier.api.IInsuranceBenefitsPackageService + + + + @@ -206,6 +214,16 @@ + + + + + + + + + + diff --git a/omod/src/main/java/org/openmrs/module/kenyaemr/cashier/rest/resource/InsuranceBenefitsPackageServiceResource.java b/omod/src/main/java/org/openmrs/module/kenyaemr/cashier/rest/resource/InsuranceBenefitsPackageServiceResource.java new file mode 100644 index 0000000..d068fea --- /dev/null +++ b/omod/src/main/java/org/openmrs/module/kenyaemr/cashier/rest/resource/InsuranceBenefitsPackageServiceResource.java @@ -0,0 +1,102 @@ +package org.openmrs.module.kenyaemr.cashier.rest.resource; + +import org.openmrs.api.context.Context; +import org.openmrs.module.kenyaemr.cashier.api.IInsuranceBenefitsPackageService; +import org.openmrs.module.kenyaemr.cashier.api.base.entity.IEntityDataService; +import org.openmrs.module.kenyaemr.cashier.api.model.*; +import org.openmrs.module.kenyaemr.cashier.api.search.InsuranceBenefitsPackageServiceSearch; +import org.openmrs.module.kenyaemr.cashier.base.resource.BaseRestDataResource; +import org.openmrs.module.kenyaemr.cashier.rest.controller.base.CashierResourceController; +import org.openmrs.module.webservices.rest.web.RequestContext; +import org.openmrs.module.webservices.rest.web.RestConstants; +import org.openmrs.module.webservices.rest.web.annotation.Resource; +import org.openmrs.module.webservices.rest.web.representation.CustomRepresentation; +import org.openmrs.module.webservices.rest.web.representation.DefaultRepresentation; +import org.openmrs.module.webservices.rest.web.representation.FullRepresentation; +import org.openmrs.module.webservices.rest.web.representation.Representation; +import org.openmrs.module.webservices.rest.web.resource.impl.AlreadyPaged; +import org.openmrs.module.webservices.rest.web.resource.impl.DelegatingResourceDescription; +import org.openmrs.module.webservices.rest.web.response.ResourceDoesNotSupportOperationException; + + +@Resource(name = RestConstants.VERSION_1 + CashierResourceController.KENYAEMR_CASHIER_NAMESPACE + "/insuranceBenefitsPackage", supportedClass = InsuranceBenefitsPackageService.class, + supportedOpenmrsVersions = {"2.0 - 2.*"}) +public class InsuranceBenefitsPackageServiceResource extends BaseRestDataResource { + + @Override + public InsuranceBenefitsPackageService newDelegate() { + return new InsuranceBenefitsPackageService(); + } + + @Override + public Class> getServiceClass() { + return IInsuranceBenefitsPackageService.class; + } + + @Override + public InsuranceBenefitsPackageService getByUniqueId(String uuid) { + return getService().getByUuid(uuid); + } + + @Override + public InsuranceBenefitsPackageService save(InsuranceBenefitsPackageService delegate) { + return super.save(delegate); + } + + @Override + protected AlreadyPaged doSearch(RequestContext context) { + + String packageCode = context.getParameter("packageCode"); + String packageName = context.getParameter("packageName"); + String subCategory = context.getParameter("subCategory"); + String shaCode = context.getParameter("shaCode"); + + InsuranceBenefitsPackageService searchTemplate = new InsuranceBenefitsPackageService(); + searchTemplate.setPackageCode(packageCode); + searchTemplate.setPackageName(packageName); + searchTemplate.setShaCode(shaCode); + searchTemplate.setSubCategory(subCategory); + + IInsuranceBenefitsPackageService service = Context.getService(IInsuranceBenefitsPackageService.class); + return new AlreadyPaged<>(context, service.findServices(new InsuranceBenefitsPackageServiceSearch(searchTemplate, false)), false); + } + + @Override + public DelegatingResourceDescription getRepresentationDescription(Representation rep) { + DelegatingResourceDescription description = new DelegatingResourceDescription(); + + description.addProperty("uuid"); + description.addProperty("interventionName"); + description.addProperty("shaCode"); + description.addProperty("description"); + description.addProperty("interventionType"); + description.addProperty("requiresPreAuth"); + description.addProperty("benefitDistribution"); + description.addProperty("tariff"); + description.addProperty("lowerAgeLimit"); + description.addProperty("upperAgeLimit"); + description.addProperty("needsReferral"); + description.addProperty("packageName"); + description.addProperty("packageCode"); + description.addProperty("insurer"); + description.addProperty("gender"); + description.addProperty("accessPoint"); + description.addProperty("subCategory"); + + if (rep instanceof FullRepresentation) { + description.addProperty("auditInfo"); + } + + return description; + } + + @Override + public DelegatingResourceDescription getCreatableProperties() { + return getRepresentationDescription(new DefaultRepresentation()); + } + + @Override + public DelegatingResourceDescription getUpdatableProperties() throws ResourceDoesNotSupportOperationException { + return getCreatableProperties(); + } +} \ No newline at end of file