@@ -12,7 +12,11 @@ import { FcWebcam } from 'react-icons/fc';
12
12
import './verifyHealthId.scss' ;
13
13
import DemoAuth from "../demo-auth/demoAuth" ;
14
14
import CreateHealthId from "../otp-verification/create-healthId" ;
15
- import { enableHealthIdVerificationThroughMobileNumber } from "../../api/constants" ;
15
+ import {
16
+ abhaAddressUnavailableError , activeStatus ,
17
+ enableHealthIdVerificationThroughMobileNumber ,
18
+ inactiveAbhaAddressError
19
+ } from "../../api/constants" ;
16
20
import VerifyHealthIdThroughMobileNumber from "./verifyHealthIdThroughMobileNumber" ;
17
21
import { formatAbhaNumber , validateAbhaNumber } from "../Common/FormatAndValidationUtils" ;
18
22
import VerifyThroughAadhaarNumber from "./verifyThroughAadhaarNumber" ;
@@ -41,6 +45,8 @@ const VerifyHealthId = () => {
41
45
const [ isMobileOtpVerified , setIsMobileOtpVerified ] = useState ( false ) ;
42
46
const [ isVerifyByAbhaAddress , setIsVerifyByAbhaAddress ] = useState ( false ) ;
43
47
const [ selectedIdentifierType , setSelectedIdentifierType ] = useState ( '' ) ;
48
+ const [ enableABHACardView , setEnableABHACardView ] = useState ( true ) ;
49
+
44
50
45
51
function identifierTypeOnChangeHandler ( e ) {
46
52
setShowError ( false ) ;
@@ -70,10 +76,10 @@ const VerifyHealthId = () => {
70
76
setErrorMessage ( "Invalid ABHA Number. ABHA Number should be 14 digits" ) ;
71
77
return ;
72
78
}
79
+ const formattedAbhaNumber = formatAbhaNumber ( abhaNumber ) ;
73
80
setLoader ( true ) ;
74
81
setShowError ( false ) ;
75
- setIsVerifyByAbhaAddress ( false ) ;
76
- const matchingPatientId = await fetchPatientFromBahmniWithHealthId ( abhaNumber ) ;
82
+ const matchingPatientId = await fetchPatientFromBahmniWithHealthId ( formattedAbhaNumber ) ;
77
83
const healthIdStatus = matchingPatientId . Error !== undefined ? await getHealthIdStatus ( matchingPatientId . patientUuid ) : false ;
78
84
if ( matchingPatientId . Error === undefined ) {
79
85
if ( healthIdStatus === true )
@@ -95,34 +101,44 @@ const VerifyHealthId = () => {
95
101
}
96
102
97
103
async function searchByAbhaAddress ( ) {
98
- setShowError ( false ) ;
99
- setErrorMessage ( '' ) ;
100
- if ( abhaAddress === '' ) {
104
+ if ( ! abhaAddress ?. trim ( ) ) {
101
105
setShowError ( true ) ;
102
- setErrorMessage ( "Please enter ABHA Address" ) ;
106
+ setErrorMessage ( abhaAddressUnavailableError . error . message ) ;
103
107
return ;
104
108
}
105
109
setLoader ( true ) ;
106
- const response = await searchAbhaAddress ( abhaAddress ) ;
107
- setLoader ( false ) ;
108
- setIsVerifyByAbhaAddress ( true ) ;
109
- if ( response . data !== undefined ) {
110
- setIsVerifyThroughABHAService ( true ) ;
111
- if ( response . data . status === "ACTIVE" ) {
112
- setShowAuthModes ( true ) ;
113
- setAuthModes ( response . data . authMethods !== undefined ?
114
- response . data . authMethods . filter ( e => supportedHealthIdAuthModes . includes ( e ) ) : [ ] ) ;
115
- }
116
- else
117
- {
118
- setShowError ( true )
119
- setErrorMessage ( "Abha address is not active" ) ;
110
+ setShowError ( false ) ;
111
+ setErrorMessage ( '' ) ;
112
+ const existingPatientId = await fetchPatientFromBahmniWithHealthId ( abhaAddress ) ;
113
+ const healthIdStatus = existingPatientId ?. Error ? await getHealthIdStatus ( existingPatientId . patientUuid ) : false ;
114
+ if ( existingPatientId ?. Error === undefined ) {
115
+ if ( healthIdStatus === true )
116
+ setHealthIdIsVoided ( true ) ;
117
+ else if ( existingPatientId ?. validPatient === true ) {
118
+ setMatchingPatientFound ( true ) ;
119
+ setMatchingPatientUuid ( existingPatientId . patientUuid ) ;
120
+ } else {
121
+ const response = await searchAbhaAddress ( abhaAddress ) ;
122
+ setLoader ( false ) ;
123
+ setIsVerifyByAbhaAddress ( true ) ;
124
+ if ( response . data !== undefined ) {
125
+ setIsVerifyThroughABHAService ( true ) ;
126
+ if ( response . data . status === activeStatus ) {
127
+ setShowAuthModes ( true ) ;
128
+ setAuthModes ( response . data . authMethods !== undefined ?
129
+ response . data . authMethods . filter ( e => supportedHealthIdAuthModes . includes ( e ) ) : [ ] ) ;
130
+ } else {
131
+ setShowError ( true )
132
+ setErrorMessage ( inactiveAbhaAddressError . error . message ) ;
133
+ }
134
+ }
120
135
}
121
136
}
122
137
else {
123
138
setShowError ( true )
124
- setErrorMessage ( response . error . message ) ;
139
+ setErrorMessage ( existingPatientId . error . message ) ;
125
140
}
141
+ setLoader ( false ) ;
126
142
}
127
143
128
144
function getIfVaild ( str ) {
@@ -157,6 +173,7 @@ const VerifyHealthId = () => {
157
173
}
158
174
159
175
async function handleScan ( scannedData ) {
176
+ setEnableABHACardView ( false ) ;
160
177
if ( scannedData != null ) {
161
178
var ndhmDetails = mapToNdhmDetails ( scannedData )
162
179
setScanningStatus ( false ) ;
@@ -288,7 +305,10 @@ const VerifyHealthId = () => {
288
305
{ isDemoAuth && ! checkIfNotNull ( ndhmDetails ) && < DemoAuth id = { abhaNumber } ndhmDetails = { ndhmDetails } setNdhmDetails = { setNdhmDetails } setBack = { setBack } /> }
289
306
{ ( isVerifyThroughABHASerice || isVerifyThroughMobileNumberEnabled ) && checkIfNotNull ( ndhmDetails ) && ndhmDetails . id === undefined && < CreateHealthId ndhmDetails = { ndhmDetails } setNdhmDetails = { setNdhmDetails } setIsHealthIdCreated = { setIsHealthIdCreated } /> }
290
307
{ ! matchingPatientFound && ! healthIdIsVoided && checkIfNotNull ( ndhmDetails ) && ( ndhmDetails . id !== undefined || isHealthIdCreated || isVerifyABHAThroughFetchModes )
291
- && < PatientDetails enableABHACardView = { true } ndhmDetails = { ndhmDetails } id = { abhaNumber } setBack = { setBack } isVerifyABHAThroughFetchModes = { isVerifyABHAThroughFetchModes || ! isHealthIdCreated } isVerifyByAbhaAddress = { isVerifyByAbhaAddress } /> }
308
+ && < PatientDetails enableABHACardView = { enableABHACardView } ndhmDetails = { ndhmDetails } id = { abhaNumber }
309
+ setBack = { setBack }
310
+ isVerifyABHAThroughFetchModes = { isVerifyABHAThroughFetchModes || ! isHealthIdCreated }
311
+ isVerifyByAbhaAddress = { isVerifyByAbhaAddress } /> }
292
312
</ div >
293
313
) ;
294
314
}
0 commit comments