diff --git a/pom.xml b/pom.xml
index a1a6664..c48e8d8 100644
--- a/pom.xml
+++ b/pom.xml
@@ -5,7 +5,7 @@
4.0.0
com.iemr.admin
admin-api
- 3.6.2
+ 3.8.1
war
Admin-API
Admin Page
diff --git a/src/main/java/com/iemr/admin/controller/facilitytype/FacilitytypeController.java b/src/main/java/com/iemr/admin/controller/facilitytype/FacilitytypeController.java
index bf55ebe..da7af7a 100644
--- a/src/main/java/com/iemr/admin/controller/facilitytype/FacilitytypeController.java
+++ b/src/main/java/com/iemr/admin/controller/facilitytype/FacilitytypeController.java
@@ -28,20 +28,20 @@
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
-
+import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import com.iemr.admin.data.facilitytype.M_facilitytype;
+import com.iemr.admin.data.store.M_FacilityLevel;
import com.iemr.admin.service.facilitytype.M_facilitytypeInter;
import com.iemr.admin.utils.mapper.InputMapper;
import com.iemr.admin.utils.response.OutputResponse;
import io.swagger.v3.oas.annotations.Operation;
-
@RestController
public class FacilitytypeController {
private Logger logger = LoggerFactory.getLogger(this.getClass().getSimpleName());
@@ -186,4 +186,100 @@ public String checkFacilityTypeCode(@RequestBody String deleteManufacturer) {
return response.toString();
}
+
+ @Operation(summary = "Get facility types by rural/urban")
+ @RequestMapping(value = "/getFacilityTypesByRuralUrban", headers = "Authorization", method = {
+ RequestMethod.POST }, produces = { "application/json" })
+ public String getFacilityTypesByRuralUrban(@RequestBody String request) {
+
+ OutputResponse response = new OutputResponse();
+
+ try {
+
+ M_facilitytype facilityDetails = InputMapper.gson().fromJson(request, M_facilitytype.class);
+
+ ArrayList facilityData = m_facilitytypeInter
+ .getFacilityTypesByRuralUrban(facilityDetails.getProviderServiceMapID(),
+ facilityDetails.getRuralUrban());
+
+ response.setResponse(facilityData.toString());
+
+ } catch (Exception e) {
+
+ logger.error("Unexpected error:", e);
+ response.setError(e);
+
+ }
+
+ return response.toString();
+ }
+
+ @Operation(summary = "Get all facility levels")
+ @RequestMapping(value = "/getFacilityLevels", headers = "Authorization", method = {
+ RequestMethod.GET }, produces = { "application/json" })
+ public String getFacilityLevels() {
+
+ OutputResponse response = new OutputResponse();
+ try {
+ ArrayList data = m_facilitytypeInter.getFacilityLevels();
+ response.setResponse(data.toString());
+ } catch (Exception e) {
+ logger.error("Unexpected error:", e);
+ response.setError(e);
+ }
+ return response.toString();
+ }
+
+ @Operation(summary = "Get facility types by block")
+ @RequestMapping(value = "/getFacilityTypesByBlock", headers = "Authorization", method = {
+ RequestMethod.POST }, produces = { "application/json" })
+ public String getFacilityTypesByBlock(@RequestBody String request) {
+
+ OutputResponse response = new OutputResponse();
+ try {
+ M_facilitytype facilityDetails = InputMapper.gson().fromJson(request, M_facilitytype.class);
+ ArrayList data = m_facilitytypeInter.getFacilityTypesByBlock(facilityDetails.getBlockID());
+ response.setResponse(data.toString());
+ } catch (Exception e) {
+ logger.error("Unexpected error:", e);
+ response.setError(e);
+ }
+ return response.toString();
+ }
+
+ @Operation(summary = "Get facility types by state")
+ @RequestMapping(value = "/getFacilityTypesByState", headers = "Authorization", method = {
+ RequestMethod.POST }, produces = { "application/json" })
+ public String getFacilityTypesByState(@RequestBody String request) {
+
+ OutputResponse response = new OutputResponse();
+ try {
+ M_facilitytype facilityDetails = InputMapper.gson().fromJson(request, M_facilitytype.class);
+ ArrayList data = m_facilitytypeInter.getFacilityTypesByState(facilityDetails.getStateID());
+ response.setResponse(data.toString());
+ } catch (Exception e) {
+ logger.error("Unexpected error:", e);
+ response.setError(e);
+ }
+ return response.toString();
+ }
+
+ @Operation(summary = "Check if facility type name exists in state")
+ @RequestMapping(value = "/checkFacilityTypeName", headers = "Authorization", method = {
+ RequestMethod.POST }, produces = { "application/json" })
+ public String checkFacilityTypeName(@RequestBody String request) {
+
+ OutputResponse response = new OutputResponse();
+ try {
+ M_facilitytype facilityDetails = InputMapper.gson().fromJson(request, M_facilitytype.class);
+ boolean exists = m_facilitytypeInter.checkFacilityTypeNameExists(
+ facilityDetails.getFacilityTypeName(), facilityDetails.getStateID());
+ response.setResponse(String.valueOf(exists));
+ } catch (Exception e) {
+ logger.error("Unexpected error:", e);
+ response.setError(e);
+ }
+ return response.toString();
+ }
+
}
diff --git a/src/main/java/com/iemr/admin/controller/store/StoreController.java b/src/main/java/com/iemr/admin/controller/store/StoreController.java
index afd4be4..359c39b 100644
--- a/src/main/java/com/iemr/admin/controller/store/StoreController.java
+++ b/src/main/java/com/iemr/admin/controller/store/StoreController.java
@@ -35,6 +35,8 @@
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
+import com.iemr.admin.data.store.FacilityHierarchyRequest;
+import com.iemr.admin.data.store.FacilityVillageMapping;
import com.iemr.admin.data.store.M_Facility;
import com.iemr.admin.data.store.M_facilityMap;
import com.iemr.admin.data.store.V_FetchFacility;
@@ -286,6 +288,23 @@ public String getMapStore(@RequestBody V_FetchFacility facilitymap) {
}
+ @Operation(summary = "Get facilities by block/taluk")
+ @RequestMapping(value = "/getFacilitiesByBlock", headers = "Authorization", method = { RequestMethod.POST }, produces = {
+ "application/json" })
+ public String getFacilitiesByBlock(@RequestBody String request) {
+
+ OutputResponse response = new OutputResponse();
+ try {
+ M_Facility facility = InputMapper.gson().fromJson(request, M_Facility.class);
+ ArrayList data = storeService.getFacilitiesByBlock(facility.getBlockID());
+ response.setResponse(data.toString());
+ } catch (Exception e) {
+ logger.error("Unexpected error:", e);
+ response.setError(e);
+ }
+ return response.toString();
+ }
+
@Operation(summary = "Check store code")
@RequestMapping(value = "/checkStoreCode", headers = "Authorization", method = { RequestMethod.POST }, produces = {
"application/json" })
@@ -311,4 +330,110 @@ public String checkStoreCode(@RequestBody String deleteManufacturer) {
return response.toString();
}
+
+ @Operation(summary = "Get facilities by block and facility level")
+ @RequestMapping(value = "/getFacilitiesByBlockAndLevel", headers = "Authorization", method = {
+ RequestMethod.POST }, produces = { "application/json" })
+ public String getFacilitiesByBlockAndLevel(@RequestBody String request) {
+
+ OutputResponse response = new OutputResponse();
+ try {
+ com.iemr.admin.data.facilitytype.M_facilitytype reqObj = InputMapper.gson().fromJson(request,
+ com.iemr.admin.data.facilitytype.M_facilitytype.class);
+ ArrayList data = storeService.getFacilitiesByBlockAndLevel(reqObj.getBlockID(),
+ reqObj.getFacilityLevelID());
+ response.setResponse(data.toString());
+ } catch (Exception e) {
+ logger.error("Unexpected error:", e);
+ response.setError(e);
+ }
+ return response.toString();
+ }
+
+ @Operation(summary = "Create facility with hierarchy mapping")
+ @RequestMapping(value = "/createFacilityWithHierarchy", headers = "Authorization", method = {
+ RequestMethod.POST }, produces = { "application/json" })
+ public String createFacilityWithHierarchy(@RequestBody String request) {
+
+ OutputResponse response = new OutputResponse();
+ try {
+ FacilityHierarchyRequest reqObj = InputMapper.gson().fromJson(request, FacilityHierarchyRequest.class);
+ M_Facility savedFacility = storeService.createFacilityWithHierarchy(reqObj.getFacility(),
+ reqObj.getVillageIDs(), reqObj.getChildFacilityIDs());
+ response.setResponse(savedFacility.toString());
+ } catch (Exception e) {
+ logger.error("Unexpected error:", e);
+ response.setError(e);
+ }
+ return response.toString();
+ }
+
+ @Operation(summary = "Get village IDs already mapped to facilities in a block")
+ @RequestMapping(value = "/getMappedVillageIDs", headers = "Authorization", method = {
+ RequestMethod.POST }, produces = { "application/json" })
+ public String getMappedVillageIDs(@RequestBody String request) {
+
+ OutputResponse response = new OutputResponse();
+ try {
+ M_Facility facility = InputMapper.gson().fromJson(request, M_Facility.class);
+ List mappedIDs = storeService.getMappedVillageIDs(facility.getBlockID());
+ response.setResponse(mappedIDs.toString());
+ } catch (Exception e) {
+ logger.error("Unexpected error:", e);
+ response.setError(e);
+ }
+ return response.toString();
+ }
+
+ @Operation(summary = "Get village mappings for a facility")
+ @RequestMapping(value = "/getVillageMappingsByFacility", headers = "Authorization", method = {
+ RequestMethod.POST }, produces = { "application/json" })
+ public String getVillageMappingsByFacility(@RequestBody String request) {
+
+ OutputResponse response = new OutputResponse();
+ try {
+ M_Facility facility = InputMapper.gson().fromJson(request, M_Facility.class);
+ ArrayList mappings = storeService.getVillageMappingsByFacility(facility.getFacilityID());
+ response.setResponse(mappings.toString());
+ } catch (Exception e) {
+ logger.error("Unexpected error:", e);
+ response.setError(e);
+ }
+ return response.toString();
+ }
+
+ @Operation(summary = "Get child facilities by parent facility ID")
+ @RequestMapping(value = "/getChildFacilitiesByParent", headers = "Authorization", method = {
+ RequestMethod.POST }, produces = { "application/json" })
+ public String getChildFacilitiesByParent(@RequestBody String request) {
+
+ OutputResponse response = new OutputResponse();
+ try {
+ M_Facility facility = InputMapper.gson().fromJson(request, M_Facility.class);
+ ArrayList children = storeService.getChildFacilitiesByParent(facility.getFacilityID());
+ response.setResponse(children.toString());
+ } catch (Exception e) {
+ logger.error("Unexpected error:", e);
+ response.setError(e);
+ }
+ return response.toString();
+ }
+
+ @Operation(summary = "Update facility with hierarchy mapping")
+ @RequestMapping(value = "/updateFacilityWithHierarchy", headers = "Authorization", method = {
+ RequestMethod.POST }, produces = { "application/json" })
+ public String updateFacilityWithHierarchy(@RequestBody String request) {
+
+ OutputResponse response = new OutputResponse();
+ try {
+ FacilityHierarchyRequest reqObj = InputMapper.gson().fromJson(request, FacilityHierarchyRequest.class);
+ M_Facility updatedFacility = storeService.updateFacilityWithHierarchy(reqObj.getFacility(),
+ reqObj.getVillageIDs(), reqObj.getChildFacilityIDs());
+ response.setResponse(updatedFacility.toString());
+ } catch (Exception e) {
+ logger.error("Unexpected error:", e);
+ response.setError(e);
+ }
+ return response.toString();
+ }
}
diff --git a/src/main/java/com/iemr/admin/data/facilitytype/M_facilitytype.java b/src/main/java/com/iemr/admin/data/facilitytype/M_facilitytype.java
index 2a14596..16d65ea 100644
--- a/src/main/java/com/iemr/admin/data/facilitytype/M_facilitytype.java
+++ b/src/main/java/com/iemr/admin/data/facilitytype/M_facilitytype.java
@@ -35,7 +35,7 @@
import jakarta.persistence.Transient;
@Entity
-@Table(name="m_facilitytype")
+@Table(name = "m_facilitytype")
public class M_facilitytype {
@Id
@@ -43,59 +43,67 @@ public class M_facilitytype {
@Column(name = "FacilityTypeID")
@Expose
private Integer facilityTypeID;
-
+
@Column(name = "FacilityTypeName")
@Expose
private String facilityTypeName;
-
+
@Column(name = "FacilityTypeDesc")
@Expose
private String facilityTypeDesc;
-
+
@Column(name = "FacilityTypeCode")
@Expose
private String facilityTypeCode;
-
+
@Column(name = "Status")
@Expose
private String status;
-
+
@Column(name = "ProviderServiceMapID")
@Expose
private Integer providerServiceMapID;
-
+
@Column(name = "Deleted", insertable = false, updatable = true)
@Expose
private Boolean deleted;
-
+
@Column(name = "CreatedBy")
@Expose
private String createdBy;
-
+
@Column(name = "CreatedDate", insertable = false, updatable = false)
@Expose
private Timestamp createdDate;
-
+
@Column(name = "ModifiedBy")
@Expose
private String modifiedBy;
-
+
@Column(name = "LastModDate", insertable = false, updatable = false)
@Expose
private Timestamp lastModDate;
-
-
-
+
+ @Expose
+ @Column(name = "RuralUrban")
+ private String ruralUrban;
+
+ @Expose
+ @Column(name = "FacilityLevelID")
+ private Integer facilityLevelID;
+
+ @Expose
+ @Column(name = "StateID")
+ private Integer stateID;
+
+ @Transient
+ @Expose
+ private Integer blockID;
+
public M_facilitytype() {
// TODO Auto-generated constructor stub
}
-
-
-
-
-
-
-
+
public Integer getFacilityTypeID() {
return facilityTypeID;
}
@@ -160,8 +168,6 @@ public void setCreatedBy(String createdBy) {
this.createdBy = createdBy;
}
-
-
public String getModifiedBy() {
return modifiedBy;
}
@@ -170,50 +176,60 @@ public void setModifiedBy(String modifiedBy) {
this.modifiedBy = modifiedBy;
}
-
-
public Timestamp getCreatedDate() {
return createdDate;
}
-
-
-
-
-
-
public void setCreatedDate(Timestamp createdDate) {
this.createdDate = createdDate;
}
-
-
-
-
-
-
public Timestamp getLastModDate() {
return lastModDate;
}
+ public void setLastModDate(Timestamp lastModDate) {
+ this.lastModDate = lastModDate;
+ }
+ @Transient
+ private OutputMapper outputMapper = new OutputMapper();
+ @Override
+ public String toString() {
+ return outputMapper.gson().toJson(this);
+ }
+ public String getRuralUrban() {
+ return ruralUrban;
+ }
+ public void setRuralUrban(String ruralUrban) {
+ this.ruralUrban = ruralUrban;
+ }
+ public Integer getFacilityLevelID() {
+ return facilityLevelID;
+ }
- public void setLastModDate(Timestamp lastModDate) {
- this.lastModDate = lastModDate;
+ public void setFacilityLevelID(Integer facilityLevelID) {
+ this.facilityLevelID = facilityLevelID;
}
+ public Integer getStateID() {
+ return stateID;
+ }
+ public void setStateID(Integer stateID) {
+ this.stateID = stateID;
+ }
- @Transient
- private OutputMapper outputMapper = new OutputMapper();
+ public Integer getBlockID() {
+ return blockID;
+ }
- @Override
- public String toString() {
- return outputMapper.gson().toJson(this);
+ public void setBlockID(Integer blockID) {
+ this.blockID = blockID;
}
}
diff --git a/src/main/java/com/iemr/admin/data/store/FacilityHierarchyRequest.java b/src/main/java/com/iemr/admin/data/store/FacilityHierarchyRequest.java
new file mode 100644
index 0000000..5d3fdef
--- /dev/null
+++ b/src/main/java/com/iemr/admin/data/store/FacilityHierarchyRequest.java
@@ -0,0 +1,21 @@
+package com.iemr.admin.data.store;
+
+import java.util.List;
+
+import com.google.gson.annotations.Expose;
+
+import lombok.Data;
+
+@Data
+public class FacilityHierarchyRequest {
+
+ @Expose
+ private M_Facility facility;
+
+ @Expose
+ private List villageIDs;
+
+ @Expose
+ private List childFacilityIDs;
+
+}
diff --git a/src/main/java/com/iemr/admin/data/store/FacilityVillageMapping.java b/src/main/java/com/iemr/admin/data/store/FacilityVillageMapping.java
new file mode 100644
index 0000000..aaa84db
--- /dev/null
+++ b/src/main/java/com/iemr/admin/data/store/FacilityVillageMapping.java
@@ -0,0 +1,68 @@
+package com.iemr.admin.data.store;
+
+import jakarta.persistence.Column;
+import jakarta.persistence.Entity;
+import jakarta.persistence.GeneratedValue;
+import jakarta.persistence.GenerationType;
+import jakarta.persistence.Id;
+import jakarta.persistence.Table;
+import jakarta.persistence.Transient;
+import java.sql.Timestamp;
+
+import org.hibernate.annotations.Formula;
+
+import com.google.gson.annotations.Expose;
+import com.iemr.admin.utils.mapper.OutputMapper;
+
+import lombok.Data;
+
+@Entity
+@Table(name = "facility_village_mapping")
+@Data
+public class FacilityVillageMapping {
+ @Id
+ @GeneratedValue(strategy = GenerationType.IDENTITY)
+ @Expose
+ @Column(name = "FacilityVillageMappingID")
+ private Long facilityVillageMappingID;
+
+ @Expose
+ @Column(name = "FacilityID")
+ private Integer facilityID;
+
+ @Expose
+ @Column(name = "DistrictBranchID")
+ private Integer districtBranchID;
+
+ @Expose
+ @Formula("(SELECT dbm.VillageName FROM m_DistrictBranchMapping dbm WHERE dbm.DistrictBranchID = {alias}.DistrictBranchID)")
+ private String villageName;
+
+ @Expose
+ @Column(name = "Deleted", insertable = true, updatable = true)
+ private Boolean deleted = false;
+
+ @Expose
+ @Column(name = "CreatedBy")
+ private String createdBy;
+
+ @Expose
+ @Column(name = "CreatedDate", insertable = false, updatable = false)
+ private Timestamp createdDate;
+
+ @Expose
+ @Column(name = "ModifiedBy")
+ private String modifiedBy;
+
+ @Expose
+ @Column(name = "LastModDate", insertable = false, updatable = false)
+ private Timestamp lastModDate;
+
+ @Transient
+ private OutputMapper outputMapper = new OutputMapper();
+
+ @Override
+ public String toString() {
+ return outputMapper.gson().toJson(this);
+ }
+}
diff --git a/src/main/java/com/iemr/admin/data/store/M_Facility.java b/src/main/java/com/iemr/admin/data/store/M_Facility.java
index fdb575d..fc825b2 100644
--- a/src/main/java/com/iemr/admin/data/store/M_Facility.java
+++ b/src/main/java/com/iemr/admin/data/store/M_Facility.java
@@ -78,6 +78,18 @@ public class M_Facility {
@Expose
@Column(name="ProviderServiceMapID")
private Integer providerServiceMapID;
+ @Expose
+ @Column(name="StateID")
+ private Integer stateID;
+ @Expose
+ @Column(name="DistrictID")
+ private Integer districtID;
+ @Expose
+ @Column(name="BlockID")
+ private Integer blockID;
+ @Expose
+ @Column(name="ParentFacilityID")
+ private Integer parentFacilityID;
@Expose
@Column(name="Deleted",insertable = false, updatable = true)
@@ -204,6 +216,38 @@ public void setProviderServiceMapID(Integer providerServiceMapID) {
this.providerServiceMapID = providerServiceMapID;
}
+ public Integer getStateID() {
+ return stateID;
+ }
+
+ public void setStateID(Integer stateID) {
+ this.stateID = stateID;
+ }
+
+ public Integer getDistrictID() {
+ return districtID;
+ }
+
+ public void setDistrictID(Integer districtID) {
+ this.districtID = districtID;
+ }
+
+ public Integer getBlockID() {
+ return blockID;
+ }
+
+ public void setBlockID(Integer blockID) {
+ this.blockID = blockID;
+ }
+
+ public Integer getParentFacilityID() {
+ return parentFacilityID;
+ }
+
+ public void setParentFacilityID(Integer parentFacilityID) {
+ this.parentFacilityID = parentFacilityID;
+ }
+
public Boolean getDeleted() {
return deleted;
}
diff --git a/src/main/java/com/iemr/admin/data/store/M_FacilityLevel.java b/src/main/java/com/iemr/admin/data/store/M_FacilityLevel.java
new file mode 100644
index 0000000..ef8de67
--- /dev/null
+++ b/src/main/java/com/iemr/admin/data/store/M_FacilityLevel.java
@@ -0,0 +1,88 @@
+/*
+* AMRIT – Accessible Medical Records via Integrated Technology
+* Integrated EHR (Electronic Health Records) Solution
+*
+* Copyright (C) "Piramal Swasthya Management and Research Institute"
+*
+* This file is part of AMRIT.
+*
+* This program is free software: you can redistribute it and/or modify
+* it under the terms of the GNU General Public License as published by
+* the Free Software Foundation, either version 3 of the License, or
+* (at your option) any later version.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License
+* along with this program. If not, see https://www.gnu.org/licenses/.
+*/
+package com.iemr.admin.data.store;
+
+import java.sql.Date;
+
+import com.google.gson.annotations.Expose;
+import com.iemr.admin.utils.mapper.OutputMapper;
+
+import jakarta.persistence.Column;
+import jakarta.persistence.Entity;
+import jakarta.persistence.GeneratedValue;
+import jakarta.persistence.GenerationType;
+import jakarta.persistence.Id;
+import jakarta.persistence.Table;
+import jakarta.persistence.Transient;
+import lombok.Data;
+
+@Entity
+@Table(name = "m_facility_level")
+@Data
+public class M_FacilityLevel {
+
+ @Id
+ @GeneratedValue(strategy = GenerationType.IDENTITY)
+ @Expose
+ @Column(name = "FacilityLevelID")
+ private Integer facilityLevelID;
+
+ @Expose
+ @Column(name = "LevelName")
+ private String levelName;
+
+ @Expose
+ @Column(name = "LevelDescription")
+ private String levelDescription;
+
+ @Expose
+ @Column(name = "LevelValue")
+ private Integer levelValue;
+
+ @Expose
+ @Column(name = "Deleted", insertable = false, updatable = true)
+ private Boolean deleted;
+
+ @Expose
+ @Column(name = "CreatedBy")
+ private String createdBy;
+
+ @Expose
+ @Column(name = "CreatedDate", insertable = false, updatable = false)
+ private Date createdDate;
+
+ @Expose
+ @Column(name = "ModifiedBy")
+ private String modifiedBy;
+
+ @Expose
+ @Column(name = "LastModDate", insertable = false, updatable = false)
+ private Date lastModDate;
+
+ @Transient
+ private OutputMapper outputMapper = new OutputMapper();
+
+ @Override
+ public String toString() {
+ return outputMapper.gson().toJson(this);
+ }
+}
diff --git a/src/main/java/com/iemr/admin/repository/facilitytype/M_FacilityLevelRepo.java b/src/main/java/com/iemr/admin/repository/facilitytype/M_FacilityLevelRepo.java
new file mode 100644
index 0000000..0dd5d93
--- /dev/null
+++ b/src/main/java/com/iemr/admin/repository/facilitytype/M_FacilityLevelRepo.java
@@ -0,0 +1,36 @@
+/*
+* AMRIT – Accessible Medical Records via Integrated Technology
+* Integrated EHR (Electronic Health Records) Solution
+*
+* Copyright (C) "Piramal Swasthya Management and Research Institute"
+*
+* This file is part of AMRIT.
+*
+* This program is free software: you can redistribute it and/or modify
+* it under the terms of the GNU General Public License as published by
+* the Free Software Foundation, either version 3 of the License, or
+* (at your option) any later version.
+*
+* This program is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU General Public License for more details.
+*
+* You should have received a copy of the GNU General Public License
+* along with this program. If not, see https://www.gnu.org/licenses/.
+*/
+package com.iemr.admin.repository.facilitytype;
+
+import java.util.ArrayList;
+
+import org.springframework.data.repository.CrudRepository;
+import org.springframework.stereotype.Repository;
+
+import com.iemr.admin.data.store.M_FacilityLevel;
+
+@Repository
+public interface M_FacilityLevelRepo extends CrudRepository {
+
+ ArrayList findByDeletedFalseOrderByLevelName();
+
+}
diff --git a/src/main/java/com/iemr/admin/repository/facilitytype/M_facilitytypeRepo.java b/src/main/java/com/iemr/admin/repository/facilitytype/M_facilitytypeRepo.java
index f4a2155..9c459c8 100644
--- a/src/main/java/com/iemr/admin/repository/facilitytype/M_facilitytypeRepo.java
+++ b/src/main/java/com/iemr/admin/repository/facilitytype/M_facilitytypeRepo.java
@@ -32,16 +32,29 @@
import com.iemr.admin.data.facilitytype.M_facilitytype;
@Repository
-public interface M_facilitytypeRepo extends CrudRepository{
+public interface M_facilitytypeRepo extends CrudRepository {
-
-
@Query("SELECT u FROM M_facilitytype u WHERE u.providerServiceMapID=:providerServiceMapID order by u.facilityTypeName")
ArrayList getAllFicilityData(@Param("providerServiceMapID") Integer providerServiceMapID);
List findByFacilityTypeCodeAndProviderServiceMapID(String facilityTypeCode,
Integer providerServiceMapID);
-
+
M_facilitytype findByFacilityTypeID(Integer facilityTypeID);
+ @Query("SELECT f FROM M_facilitytype f WHERE f.providerServiceMapID=:psm AND f.ruralUrban=:ruralUrban AND f.deleted=false ORDER BY f.facilityTypeName")
+ List findByProviderServiceMapIDAndRuralUrban(@Param("psm") Integer psm,
+ @Param("ruralUrban") String ruralUrban);
+
+ @Query("SELECT DISTINCT ft FROM M_facilitytype ft WHERE ft.facilityTypeID IN " +
+ "(SELECT DISTINCT f.facilityTypeID FROM com.iemr.admin.data.store.M_Facility f " +
+ "WHERE f.blockID = :blockID AND f.deleted = false) " +
+ "AND ft.deleted = false ORDER BY ft.facilityTypeName")
+ List findFacilityTypesByBlock(@Param("blockID") Integer blockID);
+
+ @Query("SELECT f FROM M_facilitytype f WHERE f.stateID = :stateID AND f.deleted = false ORDER BY f.facilityTypeName")
+ List findByStateID(@Param("stateID") Integer stateID);
+
+ boolean existsByFacilityTypeNameAndStateIDAndDeletedFalse(String facilityTypeName, Integer stateID);
+
}
diff --git a/src/main/java/com/iemr/admin/repository/store/FacilityVillageMappingRepo.java b/src/main/java/com/iemr/admin/repository/store/FacilityVillageMappingRepo.java
new file mode 100644
index 0000000..c1857f5
--- /dev/null
+++ b/src/main/java/com/iemr/admin/repository/store/FacilityVillageMappingRepo.java
@@ -0,0 +1,23 @@
+package com.iemr.admin.repository.store;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import org.springframework.data.jpa.repository.Query;
+import org.springframework.data.repository.CrudRepository;
+import org.springframework.data.repository.query.Param;
+import org.springframework.stereotype.Repository;
+
+import com.iemr.admin.data.store.FacilityVillageMapping;
+
+@Repository
+public interface FacilityVillageMappingRepo extends CrudRepository {
+
+ ArrayList findByFacilityIDAndDeletedFalse(Integer facilityID);
+
+ @Query("SELECT DISTINCT fvm.districtBranchID FROM FacilityVillageMapping fvm WHERE fvm.facilityID IN " +
+ "(SELECT f.facilityID FROM M_Facility f WHERE f.blockID = :blockID AND f.deleted = false) " +
+ "AND fvm.deleted = false")
+ List findMappedVillageIDsByBlockID(@Param("blockID") Integer blockID);
+
+}
diff --git a/src/main/java/com/iemr/admin/repository/store/MainStoreRepo.java b/src/main/java/com/iemr/admin/repository/store/MainStoreRepo.java
index 644a795..5cb0a0d 100644
--- a/src/main/java/com/iemr/admin/repository/store/MainStoreRepo.java
+++ b/src/main/java/com/iemr/admin/repository/store/MainStoreRepo.java
@@ -24,6 +24,7 @@
import java.util.ArrayList;
import java.util.List;
+import org.springframework.data.jpa.repository.Modifying;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.CrudRepository;
import org.springframework.data.repository.query.Param;
@@ -55,6 +56,19 @@ ArrayList getAllMainFacility(@Param("providerServiceMapID")Integer p
List findByFacilityCodeAndProviderServiceMapID(String facilityCode, Integer providerServiceMapID);
M_Facility findByFacilityID(Integer facilityID);
-
+
+ ArrayList findByBlockIDAndDeletedFalseOrderByFacilityName(Integer blockID);
+
+ @Query("SELECT f FROM M_Facility f WHERE f.blockID = :blockID AND f.facilityTypeID IN " +
+ "(SELECT ft.facilityTypeID FROM M_facilitytype ft WHERE ft.facilityLevelID = :facilityLevelID " +
+ "AND ft.deleted = false) AND f.deleted = false AND f.parentFacilityID IS NULL ORDER BY f.facilityName")
+ ArrayList findByBlockIDAndFacilityLevel(@Param("blockID") Integer blockID,
+ @Param("facilityLevelID") Integer facilityLevelID);
+
+ ArrayList findByParentFacilityIDAndDeletedFalseOrderByFacilityName(Integer parentFacilityID);
+
+ @Modifying
+ @Query("UPDATE M_Facility f SET f.parentFacilityID = NULL, f.modifiedBy = :modifiedBy WHERE f.parentFacilityID = :parentFacilityID")
+ int clearParentFacilityID(@Param("parentFacilityID") Integer parentFacilityID, @Param("modifiedBy") String modifiedBy);
}
diff --git a/src/main/java/com/iemr/admin/service/facilitytype/M_facilitytypeInter.java b/src/main/java/com/iemr/admin/service/facilitytype/M_facilitytypeInter.java
index bcb14d1..a3c8d3f 100644
--- a/src/main/java/com/iemr/admin/service/facilitytype/M_facilitytypeInter.java
+++ b/src/main/java/com/iemr/admin/service/facilitytype/M_facilitytypeInter.java
@@ -38,4 +38,14 @@ public interface M_facilitytypeInter {
Boolean checkFacilityTypeCode(M_facilitytype manufacturer);
+ ArrayList getFacilityTypesByRuralUrban(Integer providerServiceMapID, String ruralUrban);
+
+ ArrayList getFacilityLevels();
+
+ ArrayList getFacilityTypesByBlock(Integer blockID);
+
+ ArrayList getFacilityTypesByState(Integer stateID);
+
+ boolean checkFacilityTypeNameExists(String facilityTypeName, Integer stateID);
+
}
diff --git a/src/main/java/com/iemr/admin/service/facilitytype/M_facilitytypeServiceImpl.java b/src/main/java/com/iemr/admin/service/facilitytype/M_facilitytypeServiceImpl.java
index 17bb0d7..1188c3b 100644
--- a/src/main/java/com/iemr/admin/service/facilitytype/M_facilitytypeServiceImpl.java
+++ b/src/main/java/com/iemr/admin/service/facilitytype/M_facilitytypeServiceImpl.java
@@ -28,46 +28,76 @@
import org.springframework.stereotype.Service;
import com.iemr.admin.data.facilitytype.M_facilitytype;
-import com.iemr.admin.data.manufacturer.M_Manufacturer;
+import com.iemr.admin.data.store.M_FacilityLevel;
+import com.iemr.admin.repository.facilitytype.M_FacilityLevelRepo;
import com.iemr.admin.repository.facilitytype.M_facilitytypeRepo;
@Service
-public class M_facilitytypeServiceImpl implements M_facilitytypeInter{
+public class M_facilitytypeServiceImpl implements M_facilitytypeInter {
@Autowired
private M_facilitytypeRepo m_facilitytypeRepo;
+ @Autowired
+ private M_FacilityLevelRepo m_facilityLevelRepo;
+
@Override
public ArrayList getAllFicilityData(Integer providerServiceMapID) {
- ArrayList data=m_facilitytypeRepo.getAllFicilityData(providerServiceMapID);
+ ArrayList data = m_facilitytypeRepo.getAllFicilityData(providerServiceMapID);
return data;
}
+ @Override
+ public ArrayList getFacilityTypesByRuralUrban(Integer providerServiceMapID, String ruralUrban) {
+ return new ArrayList<>(m_facilitytypeRepo.findByProviderServiceMapIDAndRuralUrban(providerServiceMapID, ruralUrban));
+ }
+
@Override
public ArrayList addAllFicilityData(List addfacilityDetails) {
- ArrayList data=(ArrayList) m_facilitytypeRepo.saveAll(addfacilityDetails);
+ ArrayList data = (ArrayList) m_facilitytypeRepo.saveAll(addfacilityDetails);
return data;
}
@Override
public M_facilitytype editAllFicilityData(Integer facilityTypeID) {
- M_facilitytype data=m_facilitytypeRepo.findByFacilityTypeID(facilityTypeID);
+ M_facilitytype data = m_facilitytypeRepo.findByFacilityTypeID(facilityTypeID);
return data;
}
@Override
public M_facilitytype updateFacilityData(M_facilitytype allFacilityData) {
- M_facilitytype data=m_facilitytypeRepo.save(allFacilityData);
+ M_facilitytype data = m_facilitytypeRepo.save(allFacilityData);
return data;
}
@Override
public Boolean checkFacilityTypeCode(M_facilitytype manufacturer) {
// TODO Auto-generated method stub
- List manuList=m_facilitytypeRepo.findByFacilityTypeCodeAndProviderServiceMapID(manufacturer.getFacilityTypeCode() ,manufacturer.getProviderServiceMapID());
- if(manuList.size()>0)
+ List manuList = m_facilitytypeRepo.findByFacilityTypeCodeAndProviderServiceMapID(
+ manufacturer.getFacilityTypeCode(), manufacturer.getProviderServiceMapID());
+ if (manuList.size() > 0)
return true;
return false;
}
+ @Override
+ public ArrayList getFacilityLevels() {
+ return m_facilityLevelRepo.findByDeletedFalseOrderByLevelName();
+ }
+
+ @Override
+ public ArrayList getFacilityTypesByBlock(Integer blockID) {
+ return new ArrayList<>(m_facilitytypeRepo.findFacilityTypesByBlock(blockID));
+ }
+
+ @Override
+ public ArrayList getFacilityTypesByState(Integer stateID) {
+ return new ArrayList<>(m_facilitytypeRepo.findByStateID(stateID));
+ }
+
+ @Override
+ public boolean checkFacilityTypeNameExists(String facilityTypeName, Integer stateID) {
+ return m_facilitytypeRepo.existsByFacilityTypeNameAndStateIDAndDeletedFalse(facilityTypeName, stateID);
+ }
+
}
diff --git a/src/main/java/com/iemr/admin/service/store/StoreService.java b/src/main/java/com/iemr/admin/service/store/StoreService.java
index 3c0edd2..2768781 100644
--- a/src/main/java/com/iemr/admin/service/store/StoreService.java
+++ b/src/main/java/com/iemr/admin/service/store/StoreService.java
@@ -24,6 +24,7 @@
import java.util.ArrayList;
import java.util.List;
+import com.iemr.admin.data.store.FacilityVillageMapping;
import com.iemr.admin.data.store.M_Facility;
import com.iemr.admin.data.store.M_facilityMap;
import com.iemr.admin.data.store.V_FetchFacility;
@@ -54,9 +55,19 @@ public interface StoreService {
List getMapStore(V_FetchFacility facilitymap);
Boolean checkStoreCode(M_Facility manufacturer);
-
-
-
-
+ ArrayList getFacilitiesByBlock(Integer blockID);
+
+ ArrayList getFacilitiesByBlockAndLevel(Integer blockID, Integer facilityLevelID);
+
+ M_Facility createFacilityWithHierarchy(M_Facility facility, List villageIDs, List childFacilityIDs);
+
+ List getMappedVillageIDs(Integer blockID);
+
+ ArrayList getVillageMappingsByFacility(Integer facilityID);
+
+ ArrayList getChildFacilitiesByParent(Integer parentFacilityID);
+
+ M_Facility updateFacilityWithHierarchy(M_Facility facility, List villageIDs, List childFacilityIDs);
+
}
diff --git a/src/main/java/com/iemr/admin/service/store/StoreServiceImpl.java b/src/main/java/com/iemr/admin/service/store/StoreServiceImpl.java
index da1bba8..7ea3b42 100644
--- a/src/main/java/com/iemr/admin/service/store/StoreServiceImpl.java
+++ b/src/main/java/com/iemr/admin/service/store/StoreServiceImpl.java
@@ -26,14 +26,17 @@
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
import com.iemr.admin.data.facilitytype.M_facilitytype;
import com.iemr.admin.data.parkingPlace.M_Parkingplace;
+import com.iemr.admin.data.store.FacilityVillageMapping;
import com.iemr.admin.data.store.M_Facility;
import com.iemr.admin.data.store.M_facilityMap;
import com.iemr.admin.data.store.V_FetchFacility;
import com.iemr.admin.data.vanMaster.M_Van;
import com.iemr.admin.repository.parkingPlace.ParkingPlaceRepository;
+import com.iemr.admin.repository.store.FacilityVillageMappingRepo;
import com.iemr.admin.repository.store.MainStoreRepo;
import com.iemr.admin.repository.store.V_FetchFacilityRepo;
import com.iemr.admin.repository.vanMaster.VanMasterRepository;
@@ -54,6 +57,9 @@ public class StoreServiceImpl implements StoreService {
@Autowired
private V_FetchFacilityRepo fetchFacilityRepo;
+ @Autowired
+ private FacilityVillageMappingRepo facilityVillageMappingRepo;
+
// @Autowired
// private SubStoreRepo subStoreRepo;
@@ -233,4 +239,107 @@ public Boolean checkStoreCode(M_Facility manufacturer) {
return false;
}
+ @Override
+ public ArrayList getFacilitiesByBlock(Integer blockID) {
+ return mainStoreRepo.findByBlockIDAndDeletedFalseOrderByFacilityName(blockID);
+ }
+
+ @Override
+ public ArrayList getFacilitiesByBlockAndLevel(Integer blockID, Integer facilityLevelID) {
+ return mainStoreRepo.findByBlockIDAndFacilityLevel(blockID, facilityLevelID);
+ }
+
+ @Transactional
+ @Override
+ public M_Facility createFacilityWithHierarchy(M_Facility facility, List villageIDs,
+ List childFacilityIDs) {
+ M_Facility savedFacility = mainStoreRepo.save(facility);
+
+ if (villageIDs != null && !villageIDs.isEmpty()) {
+ for (Integer villageID : villageIDs) {
+ FacilityVillageMapping mapping = new FacilityVillageMapping();
+ mapping.setFacilityID(savedFacility.getFacilityID());
+ mapping.setDistrictBranchID(villageID);
+ mapping.setCreatedBy(facility.getCreatedBy());
+ mapping.setDeleted(false);
+ facilityVillageMappingRepo.save(mapping);
+ }
+ }
+
+ if (childFacilityIDs != null && !childFacilityIDs.isEmpty()) {
+ for (Integer childID : childFacilityIDs) {
+ M_Facility child = mainStoreRepo.findByFacilityID(childID);
+ if (child != null) {
+ child.setParentFacilityID(savedFacility.getFacilityID());
+ child.setModifiedBy(facility.getCreatedBy());
+ mainStoreRepo.save(child);
+ }
+ }
+ }
+
+ return savedFacility;
+ }
+
+ @Override
+ public List getMappedVillageIDs(Integer blockID) {
+ return facilityVillageMappingRepo.findMappedVillageIDsByBlockID(blockID);
+ }
+
+ @Override
+ public ArrayList getVillageMappingsByFacility(Integer facilityID) {
+ return facilityVillageMappingRepo.findByFacilityIDAndDeletedFalse(facilityID);
+ }
+
+ @Override
+ public ArrayList getChildFacilitiesByParent(Integer parentFacilityID) {
+ return mainStoreRepo.findByParentFacilityIDAndDeletedFalseOrderByFacilityName(parentFacilityID);
+ }
+
+ @Transactional
+ @Override
+ public M_Facility updateFacilityWithHierarchy(M_Facility facility, List villageIDs,
+ List childFacilityIDs) {
+ M_Facility existing = mainStoreRepo.findByFacilityID(facility.getFacilityID());
+ if (existing == null) {
+ throw new RuntimeException("Facility not found");
+ }
+
+ existing.setFacilityName(facility.getFacilityName());
+ existing.setFacilityDesc(facility.getFacilityDesc());
+ existing.setModifiedBy(facility.getModifiedBy());
+ M_Facility savedFacility = mainStoreRepo.save(existing);
+
+ if (villageIDs != null) {
+ List oldMappings = facilityVillageMappingRepo
+ .findByFacilityIDAndDeletedFalse(facility.getFacilityID());
+ for (FacilityVillageMapping old : oldMappings) {
+ old.setDeleted(true);
+ old.setModifiedBy(facility.getModifiedBy());
+ facilityVillageMappingRepo.save(old);
+ }
+ for (Integer villageID : villageIDs) {
+ FacilityVillageMapping mapping = new FacilityVillageMapping();
+ mapping.setFacilityID(savedFacility.getFacilityID());
+ mapping.setDistrictBranchID(villageID);
+ mapping.setCreatedBy(facility.getModifiedBy());
+ mapping.setDeleted(false);
+ facilityVillageMappingRepo.save(mapping);
+ }
+ }
+
+ if (childFacilityIDs != null) {
+ mainStoreRepo.clearParentFacilityID(facility.getFacilityID(), facility.getModifiedBy());
+ for (Integer childID : childFacilityIDs) {
+ M_Facility child = mainStoreRepo.findByFacilityID(childID);
+ if (child != null) {
+ child.setParentFacilityID(savedFacility.getFacilityID());
+ child.setModifiedBy(facility.getModifiedBy());
+ mainStoreRepo.save(child);
+ }
+ }
+ }
+
+ return savedFacility;
+ }
+
}