diff --git a/pom.xml b/pom.xml
index 42c2f42d..661f9567 100644
--- a/pom.xml
+++ b/pom.xml
@@ -6,7 +6,7 @@
com.iemr.tm
tm-api
- 3.6.2
+ 3.9.0
war
TM-API
diff --git a/src/main/java/com/iemr/tm/data/nurse/BeneficiaryVisitDetail.java b/src/main/java/com/iemr/tm/data/nurse/BeneficiaryVisitDetail.java
index b5e983d1..7255bad7 100644
--- a/src/main/java/com/iemr/tm/data/nurse/BeneficiaryVisitDetail.java
+++ b/src/main/java/com/iemr/tm/data/nurse/BeneficiaryVisitDetail.java
@@ -135,6 +135,22 @@ public class BeneficiaryVisitDetail {
@Column(name = "VisitFlowStatusFlag", insertable = false)
private @SQLInjectionSafe String visitFlowStatusFlag;
+ @Expose
+ @Column(name = "NurseID")
+ private Long nurseID;
+
+ @Expose
+ @Column(name = "DoctorID")
+ private Long doctorID;
+
+ @Expose
+ @Column(name = "PharmacistID")
+ private Long pharmacistID;
+
+ @Expose
+ @Column(name = "LabTechnicianID")
+ private Long labTechnicianID;
+
@Expose
@Column(name = "VanSerialNo")
private Long vanSerialNo;
@@ -444,6 +460,38 @@ public void setVisitFlowStatusFlag(String visitFlowStatusFlag) {
this.visitFlowStatusFlag = visitFlowStatusFlag;
}
+ public Long getNurseID() {
+ return nurseID;
+ }
+
+ public void setNurseID(Long nurseID) {
+ this.nurseID = nurseID;
+ }
+
+ public Long getDoctorID() {
+ return doctorID;
+ }
+
+ public void setDoctorID(Long doctorID) {
+ this.doctorID = doctorID;
+ }
+
+ public Long getPharmacistID() {
+ return pharmacistID;
+ }
+
+ public void setPharmacistID(Long pharmacistID) {
+ this.pharmacistID = pharmacistID;
+ }
+
+ public Long getLabTechnicianID() {
+ return labTechnicianID;
+ }
+
+ public void setLabTechnicianID(Long labTechnicianID) {
+ this.labTechnicianID = labTechnicianID;
+ }
+
public ProviderServiceMapping getProviderServiceMapping() {
return providerServiceMapping;
}
diff --git a/src/main/java/com/iemr/tm/repo/login/UserLoginRepo.java b/src/main/java/com/iemr/tm/repo/login/UserLoginRepo.java
index f0b2f746..5ae3b4d1 100644
--- a/src/main/java/com/iemr/tm/repo/login/UserLoginRepo.java
+++ b/src/main/java/com/iemr/tm/repo/login/UserLoginRepo.java
@@ -15,6 +15,9 @@ public interface UserLoginRepo extends CrudRepository {
@Query(" SELECT u FROM Users u WHERE u.userID = :userID AND u.Deleted = false ")
public Users getUserByUserID(@Param("userID") Long userID);
+ @Query(" SELECT u FROM Users u WHERE u.userName = :UserName AND u.Deleted = false ")
+ public Users getUserByUsername(@Param("UserName") String username);
+
@Query(nativeQuery = true,value = "select rolename from m_role where roleid in (select roleid from m_userservicerolemapping where userid=:userID)")
List getRoleNamebyUserId(@Param("userID") Long userID);
diff --git a/src/main/java/com/iemr/tm/repo/nurse/BenVisitDetailRepo.java b/src/main/java/com/iemr/tm/repo/nurse/BenVisitDetailRepo.java
index 33ca2c8b..df7f3908 100644
--- a/src/main/java/com/iemr/tm/repo/nurse/BenVisitDetailRepo.java
+++ b/src/main/java/com/iemr/tm/repo/nurse/BenVisitDetailRepo.java
@@ -110,4 +110,16 @@ public int updateFileID(@Param("fileIDs") String fileIDs, @Param("regID") Long r
@Query(nativeQuery = true, value = " SELECT v.visitCode FROM t_benvisitdetail v WHERE v.beneficiaryRegID=:benRegId AND v.providerServiceMapID=:psmId ORDER BY BenVisitID DESC LIMIT 1 ")
public Long getVisitCode(@Param("benRegId") Long benRegId, @Param("psmId") Integer psmId);
+ // store responsible doctor's user ID against the visit
+ @Transactional
+ @Modifying
+ @Query("UPDATE BeneficiaryVisitDetail set doctorID = :doctorID where visitCode = :visitCode ")
+ public Integer updateDoctorID(@Param("doctorID") Long doctorID, @Param("visitCode") Long visitCode);
+
+ // store responsible lab technician's user ID against the visit
+ @Transactional
+ @Modifying
+ @Query("UPDATE BeneficiaryVisitDetail set labTechnicianID = :labTechnicianID where visitCode = :visitCode ")
+ public Integer updateLabTechnicianID(@Param("labTechnicianID") Long labTechnicianID, @Param("visitCode") Long visitCode);
+
}
diff --git a/src/main/java/com/iemr/tm/service/common/transaction/CommonDoctorServiceImpl.java b/src/main/java/com/iemr/tm/service/common/transaction/CommonDoctorServiceImpl.java
index 32661569..85b1a802 100644
--- a/src/main/java/com/iemr/tm/service/common/transaction/CommonDoctorServiceImpl.java
+++ b/src/main/java/com/iemr/tm/service/common/transaction/CommonDoctorServiceImpl.java
@@ -119,6 +119,33 @@ public class CommonDoctorServiceImpl {
@Autowired
private PNCDiagnosisRepo pNCDiagnosisRepo;
@Autowired
+ private com.iemr.tm.repo.nurse.BenVisitDetailRepo benVisitDetailRepo;
+ @Autowired
+ private com.iemr.tm.repo.login.UserLoginRepo userLoginRepo;
+
+ /**
+ * Resolve the numeric user ID of the responsible staff member from the username
+ * captured in createdBy. Returns null if it cannot be resolved so an unknown
+ * staff member never blocks the flow.
+ */
+ private Long resolveUserId(String username) {
+ if (username == null || username.trim().isEmpty())
+ return null;
+ com.iemr.tm.data.login.Users user = userLoginRepo.getUserByUsername(username.trim());
+ return user != null ? user.getUserID() : null;
+ }
+
+ /**
+ * Store the responsible doctor's user ID on the visit record, taken from createdBy.
+ */
+ private void storeDoctorIDOnVisit(CommonUtilityClass commonUtilityClass) {
+ if (commonUtilityClass == null || commonUtilityClass.getVisitCode() == null)
+ return;
+ Long doctorID = resolveUserId(commonUtilityClass.getCreatedBy());
+ if (doctorID != null)
+ benVisitDetailRepo.updateDoctorID(doctorID, commonUtilityClass.getVisitCode());
+ }
+ @Autowired
private PrescriptionDetailRepo prescriptionDetailRepo;
@Autowired
private NCDCareDiagnosisRepo NCDCareDiagnosisRepo;
@@ -717,6 +744,9 @@ public int updateBenFlowtableAfterDocDataSave(CommonUtilityClass commonUtilityCl
Long tmpBenVisitID = commonUtilityClass.getBenVisitID();
Long tmpbeneficiaryRegID = commonUtilityClass.getBeneficiaryRegID();
+ // Store the responsible doctor's user ID against the visit
+ storeDoctorIDOnVisit(commonUtilityClass);
+
if (commonUtilityClass != null && commonUtilityClass.getVisitCategoryID() != null
&& commonUtilityClass.getVisitCategoryID() == 4) {
ArrayList foetalMonitorData = foetalMonitorRepo
@@ -862,6 +892,9 @@ public int updateBenFlowtableAfterDocDataUpdate(CommonUtilityClass commonUtility
Long tmpBenVisitID = commonUtilityClass.getBenVisitID();
Long tmpbeneficiaryRegID = commonUtilityClass.getBeneficiaryRegID();
+ // Store the responsible doctor's user ID against the visit
+ storeDoctorIDOnVisit(commonUtilityClass);
+
// Foetal monitor related update in visitcode and lab flag
if (commonUtilityClass != null && commonUtilityClass.getVisitCategoryID() != null
&& commonUtilityClass.getVisitCategoryID() == 4) {
diff --git a/src/main/java/com/iemr/tm/service/common/transaction/CommonNurseServiceImpl.java b/src/main/java/com/iemr/tm/service/common/transaction/CommonNurseServiceImpl.java
index e2f47509..8f8cce5d 100644
--- a/src/main/java/com/iemr/tm/service/common/transaction/CommonNurseServiceImpl.java
+++ b/src/main/java/com/iemr/tm/service/common/transaction/CommonNurseServiceImpl.java
@@ -148,6 +148,22 @@ public class CommonNurseServiceImpl implements CommonNurseService {
private Integer TMReferredWL;
private BenVisitDetailRepo benVisitDetailRepo;
+
+ @org.springframework.beans.factory.annotation.Autowired
+ private com.iemr.tm.repo.login.UserLoginRepo userLoginRepo;
+
+ /**
+ * Resolve the numeric user ID of the responsible staff member from the username
+ * captured in createdBy. Returns null if it cannot be resolved so an unknown
+ * staff member never blocks the save.
+ */
+ private Long resolveUserId(String username) {
+ if (username == null || username.trim().isEmpty())
+ return null;
+ com.iemr.tm.data.login.Users user = userLoginRepo.getUserByUsername(username.trim());
+ return user != null ? user.getUserID() : null;
+ }
+
private BenChiefComplaintRepo benChiefComplaintRepo;
private BenMedHistoryRepo benMedHistoryRepo;
private BencomrbidityCondRepo bencomrbidityCondRepo;
@@ -413,6 +429,10 @@ public Long saveBeneficiaryVisitDetails(BeneficiaryVisitDetail beneficiaryVisitD
}
beneficiaryVisitDetail.setReportFilePath(sb.toString());
+ // Store the responsible nurse's user ID (resolved from the createdBy username)
+ if (beneficiaryVisitDetail.getNurseID() == null)
+ beneficiaryVisitDetail.setNurseID(resolveUserId(beneficiaryVisitDetail.getCreatedBy()));
+
response = benVisitDetailRepo.save(beneficiaryVisitDetail);
if (response != null) {
diff --git a/src/main/java/com/iemr/tm/service/labtechnician/LabTechnicianServiceImpl.java b/src/main/java/com/iemr/tm/service/labtechnician/LabTechnicianServiceImpl.java
index 20a73b51..7b2e1265 100644
--- a/src/main/java/com/iemr/tm/service/labtechnician/LabTechnicianServiceImpl.java
+++ b/src/main/java/com/iemr/tm/service/labtechnician/LabTechnicianServiceImpl.java
@@ -52,6 +52,22 @@ public class LabTechnicianServiceImpl implements LabTechnicianService {
private ECGAbnormalFindingMasterRepo ecgAbnormalFindingMasterRepo;
private CommonBenStatusFlowServiceImpl commonBenStatusFlowServiceImpl;
+ @org.springframework.beans.factory.annotation.Autowired
+ private com.iemr.tm.repo.nurse.BenVisitDetailRepo benVisitDetailRepo;
+ @org.springframework.beans.factory.annotation.Autowired
+ private com.iemr.tm.repo.login.UserLoginRepo userLoginRepo;
+
+ /**
+ * Resolve the numeric user ID of the responsible staff member from the username
+ * captured in createdBy. Returns null if it cannot be resolved.
+ */
+ private Long resolveUserId(String username) {
+ if (username == null || username.trim().isEmpty())
+ return null;
+ com.iemr.tm.data.login.Users user = userLoginRepo.getUserByUsername(username.trim());
+ return user != null ? user.getUserID() : null;
+ }
+
@Autowired
public void setCommonBenStatusFlowServiceImpl(CommonBenStatusFlowServiceImpl commonBenStatusFlowServiceImpl) {
this.commonBenStatusFlowServiceImpl = commonBenStatusFlowServiceImpl;
@@ -360,6 +376,12 @@ public Integer saveLabTestResult(JsonObject requestOBJ) throws Exception {
labResultSaveFlag = saveLabTestResult(wrapperLabResults);
if (labResultSaveFlag == 1) {
+ // Store the responsible lab technician's user ID against the visit
+ if (wrapperLabResults.getVisitCode() != null) {
+ Long labTechnicianID = resolveUserId(wrapperLabResults.getCreatedBy());
+ if (labTechnicianID != null)
+ benVisitDetailRepo.updateLabTechnicianID(labTechnicianID, wrapperLabResults.getVisitCode());
+ }
int i = updateBenFlowStatusFlagAfterLabResultEntry(wrapperLabResults.getLabCompleted(),
wrapperLabResults.getBenFlowID(), wrapperLabResults.getBeneficiaryRegID(),
wrapperLabResults.getVisitID(), wrapperLabResults.getNurseFlag(),