Skip to content

Commit cdacfa8

Browse files
Merge branch 'PSMRI:develop' into develop
2 parents 2c823aa + 3a8e67f commit cdacfa8

28 files changed

Lines changed: 333 additions & 139 deletions

Dockerfile

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
# --- Stage 1: Build the application using Maven ---
2+
FROM maven:3.9.6-eclipse-temurin-17 AS build
3+
4+
WORKDIR /app
5+
6+
COPY . .
7+
8+
# Build the application while caching Maven dependencies to speed up future builds
9+
RUN --mount=type=cache,target=/root/.m2 \
10+
mvn clean package -DENV_VAR=docker -DskipTests -Dgit.skip=true
11+
12+
# --- Stage 2: Run the application with a minimal JRE image ---
13+
FROM eclipse-temurin:17-jre
14+
15+
WORKDIR /app
16+
17+
# Copy the built WAR file from the build stage
18+
COPY --from=build /app/target/*.war app.war
19+
20+
EXPOSE 8080
21+
22+
ENTRYPOINT ["java", "-jar", "app.war"]

pom.xml

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -451,6 +451,18 @@
451451
</execution>
452452
</executions>
453453
</plugin>
454+
<plugin>
455+
<groupId>org.springframework.boot</groupId>
456+
<artifactId>spring-boot-maven-plugin</artifactId>
457+
<version>3.2.2</version>
458+
<executions>
459+
<execution>
460+
<goals>
461+
<goal>repackage</goal>
462+
</goals>
463+
</execution>
464+
</executions>
465+
</plugin>
454466
</plugins>
455467
</build>
456468
<dependencyManagement>

src/main/environment/common_ci.properties

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -115,3 +115,8 @@ jwt.secret=@env.JWT_SECRET_KEY@
115115

116116
springdoc.api-docs.enabled=@env.SWAGGER_DOC_ENABLED@
117117
springdoc.swagger-ui.enabled=@env.SWAGGER_DOC_ENABLED@
118+
119+
# Redis IP
120+
spring.redis.host=@env.REDIS_HOST@
121+
122+
cors.allowed-origins=@env.CORS_ALLOWED_ORIGINS@
Lines changed: 120 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,120 @@
1+
benSearchByBenIDURL=${COMMON_API_BASE_URL}beneficiary/searchUserByID
2+
userAuthURL=${COMMON_API_BASE_URL}user/userAuthenticate
3+
4+
# E-aushadhi
5+
eaushadhiStoreStockDetailsUrl=${EAUSHADHI_URL}/rest/storeStockDetailsService/
6+
eaushadhiStoreStockAckUrl=${EAUSHADHI_URL}/rest/AcknowledgeStoreStockService/
7+
8+
fhirUserName=${FHIR_USER_NAME}
9+
fhirPassword=${FHIR_PASSWORD}
10+
11+
# DB Connections (MySQL)
12+
spring.datasource.url=${DATABASE_URL}
13+
spring.datasource.username=${DATABASE_USERNAME}
14+
spring.datasource.password=${DATABASE_PASSWORD}
15+
spring.datasource.driver-class-name=com.mysql.jdbc.Driver
16+
17+
# DB Connection (Mongo DB)
18+
spring.data.mongodb.host=${MONGO_HOST}
19+
spring.data.mongodb.port=27017
20+
spring.data.mongodb.authentication-database=${MONGO_AUTH_DBNAME}
21+
spring.data.mongodb.database=${MONGO_DBNAME}
22+
spring.data.mongodb.username=${MONGO_USERNAME}
23+
spring.data.mongodb.password=${MONGO_PASSWORD}
24+
25+
atomsFeedStartPage=1
26+
parentUrl=${BAHMINI_URL}
27+
28+
atomFeedURLPatientDemographic=/openmrs/ws/atomfeed/patient/
29+
atomFeedURLPatientEncounter=/openmrs/ws/atomfeed/encounter/
30+
31+
feedAuthUserName=${FEED_AUTH_URL}
32+
feedAuthPassword=${FEED_AUTH_PASSWORD}
33+
34+
eAushadhiDummy=yes
35+
36+
##NDHM ABHA API
37+
clientID=${NDHM_ABHA_CLIENT_ID}
38+
clientSecret=${NDHM_ABHA_CLIENT_SECRET_KEY}
39+
40+
##Default ABDM Facility ID
41+
abdmFacilityId= ${ABDM_FACILITY_ID}
42+
43+
ndhmuserAuthenticate=${ABDM_BASE_URL}/gateway/v0.5/sessions
44+
ndhmGenerateOTP=${ABDM_HEALTH_ID_BASE_URL}/api/v1/registration/mobile/generateOtp
45+
ndhmVerifyOTP=${ABDM_HEALTH_ID_BASE_URL}/api/v1/registration/mobile/verifyOtp
46+
ndhmCreateHealthID=${ABDM_HEALTH_ID_BASE_URL}/api/v1/registration/mobile/createHealthId
47+
48+
## ABHA with aadhaar
49+
ndhmGenerateOTPWithAadhaar=${ABDM_HEALTH_ID_BASE_URL}/api/v1/registration/aadhaar/generateOtp
50+
ndhmCreateHealthIDWithAadhaar=${ABDM_HEALTH_ID_BASE_URL}/api/v1/registration/aadhaar/createHealthIdWithAadhaarOtp
51+
52+
## ABHA Creation New APIs
53+
abdmVerifyOTP= ${ABDM_HEALTH_ID_BASE_URL}/api/v1/registration/aadhaar/verifyOTP
54+
abdmCheckAndGenerateMobileOTP= ${ABDM_HEALTH_ID_BASE_URL}/api/v2/registration/aadhaar/checkAndGenerateMobileOTP
55+
abdmVerifyMobileOTP= ${ABDM_HEALTH_ID_BASE_URL}/api/v1/registration/aadhaar/verifyMobileOTP
56+
abdmcreateHealthIdWithPreVerified= ${ABDM_HEALTH_ID_BASE_URL}/api/v1/registration/aadhaar/createHealthIdWithPreVerified
57+
58+
59+
##CareContext Creation API
60+
generateOTPForCareContext=${ABDM_BASE_URL}/gateway/v0.5/users/auth/init
61+
addCareContext = ${ABDM_BASE_URL}/gateway/v0.5/links/link/add-contexts
62+
validateOTPForCareContext=${ABDM_BASE_URL}/gateway/v0.5/users/auth/confirm
63+
64+
##ABHA Card API
65+
## Auth init - aadhar / mobile
66+
generateOTP_ForCard=${ABDM_HEALTH_ID_BASE_URL}/api/v1/auth/init
67+
## confirm with mobile OTP
68+
verifyOTP_ForCard=${ABDM_HEALTH_ID_BASE_URL}/api/v1/auth/confirmWithMobileOTP
69+
## confirm with Aadhaar
70+
verifyOTP_ForCard_Aadhaar=${ABDM_HEALTH_ID_BASE_URL}/api/v1/auth/confirmWithAadhaarOtp
71+
## print ABHA card - PNG
72+
generateHealthCard=${ABDM_HEALTH_ID_BASE_URL}/api/v1/health/facility/getPngCard
73+
generateHealthIDCard=${ABDM_HEALTH_ID_BASE_URL}/api/v1/account/getPngCard
74+
75+
## Generate Notify SMS once episode completed
76+
generateABDM_NotifySMS=${ABDM_BASE_URL}/gateway/v1/patients/sms/notify2
77+
78+
##verifyBio
79+
abdmVerifyBio=${ABDM_HEALTH_ID_BASE_URL}/api/v1/registration/aadhaar/verifyBio
80+
abdmGenerateMobileOTP=${ABDM_HEALTH_ID_BASE_URL}/api/v1/registration/aadhaar/generateMobileOTP
81+
abdmConfirmAadhaarBio=${ABDM_HEALTH_ID_BASE_URL}/api/v1/auth/confirmWithAadhaarBio
82+
abdmAccountProfile=${ABDM_ACCOUNT_ID_BASE_URL}/api/v1/account/profile
83+
84+
##ABDM Facility services
85+
getAbdmFacilityServicies= ${ABDM_HIECM_BASE_URL}/api/hiecm/gateway/v3/bridge-services
86+
87+
##ABDM V3 APIs
88+
abdmV3UserAuthenticate = ${ABDM_HIECM_BASE_URL}/api/hiecm/gateway/v3/sessions
89+
getAuthCertPublicKey = ${ABDM_ABHA_V3_URL}/v3/profile/public/certificate
90+
requestOtpForEnrollment = ${ABDM_ABHA_V3_URL}/v3/enrollment/request/otp
91+
abhaEnrollByAadhaar = ${ABDM_ABHA_V3_URL}/v3/enrollment/enrol/byAadhaar
92+
printAbhaCard = ${ABDM_ABHA_V3_URL}/v3/profile/account/abha-card
93+
abhaLoginRequestOtp = ${ABDM_ABHA_V3_URL}/v3/profile/login/request/otp
94+
verifyAbhaLogin = ${ABDM_ABHA_V3_URL}/v3/profile/login/verify
95+
abhaProfileLoginVerifyUser = ${ABDM_ABHA_V3_URL}/v3/profile/login/verify/user
96+
requestAuthByAbdm = ${ABDM_ABHA_V3_URL}/v3/enrollment/auth/byAbdm
97+
webLoginAbhaRequestOtp = ${ABDM_PHR_URL}/login/abha/request/otp
98+
webLoginAbhaVerify = ${ABDM_PHR_URL}/login/abha/verify
99+
webLoginPhrCard = ${ABDM_PHR_URL}/login/profile/abha/phr-card
100+
101+
x-CM-ID=${X_CM_ID}
102+
abhaMode=${ABHA_MODE}
103+
104+
#logging.pattern.level=DEBUG
105+
logging.level.root=INFO
106+
logging.level.org.springframework.web=INFO
107+
logging.level.org.hibernate=INFO
108+
logging.level.com.iemr=DEBUG
109+
logging.level.org.springframework=INFO
110+
111+
#ELK logging file name
112+
logging.path=logs/
113+
logging.file.name=${FHIR_API_LOGGING_FILE_NAME}
114+
jwt.secret=${JWT_SECRET_KEY}
115+
116+
springdoc.api-docs.enabled=${SWAGGER_DOC_ENABLED}
117+
springdoc.swagger-ui.enabled=${SWAGGER_DOC_ENABLED}
118+
119+
# Redis IP
120+
spring.redis.host=${REDIS_HOST}

src/main/environment/common_example.properties

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -111,4 +111,6 @@ logging.level.com.iemr=DEBUG
111111
logging.level.org.springframework=INFO
112112
jwt.secret=my-32-character-ultra-secure-and-ultra-long-secret
113113
logging.path=logs/
114-
logging.file.name=logs/fhir-api.log
114+
logging.file.name=logs/fhir-api.log
115+
116+
cors.allowed-origins=http://localhost:*
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
package com.wipro.fhir.config;
2+
3+
import org.springframework.context.annotation.Configuration;
4+
import org.springframework.web.servlet.config.annotation.CorsRegistry;
5+
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;
6+
import java.util.Arrays;
7+
import org.springframework.beans.factory.annotation.Value;
8+
9+
@Configuration
10+
public class CorsConfig implements WebMvcConfigurer {
11+
12+
@Value("${cors.allowed-origins}")
13+
private String allowedOrigins;
14+
15+
@Override
16+
public void addCorsMappings(CorsRegistry registry) {
17+
registry.addMapping("/**")
18+
.allowedOriginPatterns(
19+
Arrays.stream(allowedOrigins.split(","))
20+
.map(String::trim)
21+
.toArray(String[]::new))
22+
.allowedMethods("GET", "POST", "PUT", "DELETE", "OPTIONS")
23+
.allowedHeaders("Content-Type", "Authorization")
24+
.exposedHeaders("Authorization")
25+
.allowCredentials(true)
26+
.maxAge(3600);
27+
}
28+
}

src/main/java/com/wipro/fhir/controller/carecontext/CareContextController.java

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
import org.slf4j.Logger;
2525
import org.slf4j.LoggerFactory;
2626
import org.springframework.beans.factory.annotation.Autowired;
27-
import org.springframework.web.bind.annotation.CrossOrigin;
27+
2828
import org.springframework.web.bind.annotation.PostMapping;
2929
import org.springframework.web.bind.annotation.RequestBody;
3030
import org.springframework.web.bind.annotation.RequestHeader;
@@ -38,15 +38,13 @@
3838
import io.lettuce.core.dynamic.annotation.Param;
3939
import io.swagger.v3.oas.annotations.Operation;
4040

41-
@CrossOrigin
4241
@RestController
4342
@RequestMapping(value = "/careContext", headers = "Authorization", consumes = "application/json", produces = "application/json")
4443
public class CareContextController {
4544
private final Logger logger = LoggerFactory.getLogger(this.getClass().getName());
4645
@Autowired
4746
private CareContextService careContextService;
4847

49-
@CrossOrigin
5048
@Operation(summary = "Generate OTP for care context linking")
5149
@PostMapping(value = { "/generateOTPForCareContext" })
5250
public String generateOTP(
@@ -69,7 +67,6 @@ public String generateOTP(
6967
return response.toString();
7068
}
7169

72-
@CrossOrigin
7370
@Operation(summary = "Validate OTP and create care context")
7471
@PostMapping(value = { "/validateOTPAndCreateCareContext" })
7572
public String validateOTPAndCreateCareContext(
@@ -94,7 +91,6 @@ public String validateOTPAndCreateCareContext(
9491
return response.toString();
9592
}
9693

97-
@CrossOrigin
9894
@Operation(summary = "Add care context to Mongo")
9995
@PostMapping(value = { "/addCarecontextToMongo" })
10096
public String saveCareContextToMongo(@Param(value = "{}") @RequestBody String request,

src/main/java/com/wipro/fhir/controller/eaushdhi/EAushadhiController.java

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@
2727
import org.slf4j.Logger;
2828
import org.slf4j.LoggerFactory;
2929
import org.springframework.beans.factory.annotation.Autowired;
30-
import org.springframework.web.bind.annotation.CrossOrigin;
30+
3131
import org.springframework.web.bind.annotation.PostMapping;
3232
import org.springframework.web.bind.annotation.RequestBody;
3333
import org.springframework.web.bind.annotation.RequestHeader;
@@ -46,8 +46,6 @@
4646
/**
4747
* @author DE40034072 Date 01-12-2021
4848
*/
49-
50-
@CrossOrigin
5149
@RestController
5250
@RequestMapping(value = "/eAushadhi", headers = "Authorization", consumes = "application/json", produces = "application/json")
5351
public class EAushadhiController {
@@ -56,7 +54,6 @@ public class EAushadhiController {
5654
private EAushadhiService eAushadhiService;
5755
private final Logger logger = LoggerFactory.getLogger(this.getClass().getName());
5856

59-
@CrossOrigin
6057
@Operation(summary = "Getting store stock details from e-aushadhi")
6158
@PostMapping(value = { "/getStoreStockDetails" })
6259
public String getStoreStockDetails(@Param(value = "{\"facilityID\":\"Integer\"}") @RequestBody String request,
@@ -90,7 +87,6 @@ public String getStoreStockDetails(@Param(value = "{\"facilityID\":\"Integer\"}"
9087
* @param Authorization
9188
* @return sync dispense data and patient information to E-Aushadhi.
9289
*/
93-
@CrossOrigin
9490
@Operation(summary = "Sync drug dispense data and patient details with e-aushadhi")
9591
@PostMapping(value = { "/syncDrugDispenseDetails" })
9692
public String syncDrugDispenseAndPatientDetails(
@@ -113,7 +109,6 @@ public String syncDrugDispenseAndPatientDetails(
113109
return response.toString();
114110
}
115111

116-
@CrossOrigin
117112
@Operation(summary = "Get log for stock processing")
118113
@PostMapping(value = { "/getFacilityStockProcessLog" })
119114
public String getFacilityStockProcessLog(@RequestBody String request) {
@@ -134,7 +129,6 @@ public String getFacilityStockProcessLog(@RequestBody String request) {
134129
return response.toString();
135130
}
136131

137-
@CrossOrigin
138132
@Operation(summary = "Sync e-aushadhi for patient issue details")
139133
@PostMapping(value = { "/updatePatientIssueSyncStatus" })
140134
public String addFacility(@RequestBody String request) {

src/main/java/com/wipro/fhir/controller/facility/FacilityController.java

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
import org.slf4j.Logger;
44
import org.slf4j.LoggerFactory;
55
import org.springframework.beans.factory.annotation.Autowired;
6-
import org.springframework.web.bind.annotation.CrossOrigin;
6+
77
import org.springframework.web.bind.annotation.GetMapping;
88
import org.springframework.web.bind.annotation.PostMapping;
99
import org.springframework.web.bind.annotation.RequestBody;
@@ -19,8 +19,6 @@
1919

2020
import io.swagger.v3.oas.annotations.Operation;
2121

22-
23-
@CrossOrigin
2422
@RestController
2523
@RequestMapping(value = "/facility", headers = "Authorization")
2624
public class FacilityController {
@@ -31,7 +29,6 @@ public class FacilityController {
3129

3230
Logger logger = LoggerFactory.getLogger(this.getClass().getName());
3331

34-
@CrossOrigin
3532
@Operation(summary = "Get ABDM Registered Facilities")
3633
@GetMapping(value = { "/getAbdmRegisteredFacilities" })
3734
public String getAbdmRegisteredFacilities(@RequestHeader(value = "Authorization") String Authorization) {
@@ -52,9 +49,6 @@ public String getAbdmRegisteredFacilities(@RequestHeader(value = "Authorization"
5249
logger.info("Get ABDM Registered facilities API response" + response.toString());
5350
return response.toString();
5451
}
55-
56-
57-
@CrossOrigin
5852
@Operation(summary = "Get ABDM Registered Facilities")
5953
@PostMapping(value = { "/saveAbdmFacilityId" })
6054
public String saveAbdmFacilityForVisit(@RequestHeader(value = "Authorization") String Authorization, @RequestBody() String reqObj) {

src/main/java/com/wipro/fhir/controller/generateresource/ResourceRequestGateway.java

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@
2424
import org.slf4j.Logger;
2525
import org.slf4j.LoggerFactory;
2626
import org.springframework.beans.factory.annotation.Autowired;
27-
import org.springframework.web.bind.annotation.CrossOrigin;
27+
2828
import org.springframework.web.bind.annotation.PostMapping;
2929
import org.springframework.web.bind.annotation.RequestBody;
3030
import org.springframework.web.bind.annotation.RequestHeader;
@@ -48,8 +48,6 @@
4848
* fetch from Mongo instead creating again ***
4949
*
5050
*/
51-
52-
@CrossOrigin
5351
@RestController
5452
@RequestMapping(value = "/get/resource", headers = "Authorization", consumes = "application/json", produces = "application/json")
5553
public class ResourceRequestGateway {
@@ -73,7 +71,6 @@ public class ResourceRequestGateway {
7371
* DocumentReference}
7472
*
7573
*/
76-
@CrossOrigin
7774
@Operation(summary = "Get OP consult record bundle")
7875
@PostMapping(value = { "/OPConsultRecord" })
7976
public String getPatientResource(@RequestBody ResourceRequestHandler patientResourceRequest,
@@ -100,7 +97,6 @@ public String getPatientResource(@RequestBody ResourceRequestHandler patientReso
10097
* DocumentReference}
10198
*
10299
*/
103-
@CrossOrigin
104100
@Operation(summary = "Get diagnostic report record bundle")
105101
@PostMapping(value = { "/DiagnosticReportRecord" })
106102
public String getDiagnosticReportRecord(@RequestBody ResourceRequestHandler patientResourceRequest,
@@ -126,7 +122,6 @@ public String getDiagnosticReportRecord(@RequestBody ResourceRequestHandler pati
126122
* || Organization || MedicationRequest || Binary}
127123
*
128124
*/
129-
@CrossOrigin
130125
@Operation(summary = "Get prescription record")
131126
@PostMapping(value = { "/PrescriptionRecord" })
132127
public String getPrescriptionRecord(@RequestBody ResourceRequestHandler patientResourceRequest,

0 commit comments

Comments
 (0)