1717
1818MAX_HICN_HASH_LENGTH = 64
1919MAX_MBI_LENGTH = 11
20+ FHIR_ID_VERSIONS_TO_CHECK = [2 , 3 ]
2021
2122
2223class BBMyMedicareCallbackCrosswalkCreateException (APIException ):
@@ -68,25 +69,27 @@ def get_and_update_user(slsx_client: OAuth2ConfigSLSx, request):
6869 # If the lookup for the requested version fails, raise the exception
6970 # This is wrapped in the case that if the requested version fails, match_fhir_id
7071 # will still bubble up UpstreamServerException
71- for supported_version in Versions . supported_versions () :
72+ for supported_version in FHIR_ID_VERSIONS_TO_CHECK :
7273 try :
7374 fhir_id , hash_lookup_type = match_fhir_id (
7475 mbi = slsx_client .mbi ,
7576 hicn_hash = hicn_hash ,
7677 request = request ,
7778 version = supported_version ,
78-
7979 )
8080 versioned_fhir_ids [supported_version ] = fhir_id
8181 except UpstreamServerException as e :
8282 if supported_version == version :
8383 raise e
8484
85+ bfd_fhir_id_v2 = versioned_fhir_ids [Versions .V2 ]
86+ bfd_fhir_id_v3 = versioned_fhir_ids [Versions .V3 ]
87+
8588 log_dict = {
8689 'type' : 'mymedicare_cb:get_and_update_user' ,
8790 'subject' : slsx_client .user_id ,
88- 'fhir_id_v2' : versioned_fhir_ids . get ( Versions . V2 , None ) ,
89- 'fhir_id_v3' : versioned_fhir_ids . get ( Versions . V3 , None ) ,
91+ 'fhir_id_v2' : bfd_fhir_id_v2 ,
92+ 'fhir_id_v3' : bfd_fhir_id_v3 ,
9093 'hicn_hash' : slsx_client .hicn_hash ,
9194 'hash_lookup_type' : hash_lookup_type ,
9295 'crosswalk' : {},
@@ -104,7 +107,12 @@ def get_and_update_user(slsx_client: OAuth2ConfigSLSx, request):
104107 hicn_updated = True
105108
106109 update_fhir_id = False
107- if user .crosswalk .fhir_id (Versions .V2 ) == '' or user .crosswalk .fhir_id (Versions .V3 ) == '' :
110+ if (
111+ user .crosswalk .fhir_id (Versions .V2 ) == ''
112+ or user .crosswalk .fhir_id (Versions .V3 ) == ''
113+ or user .crosswalk .fhir_id (Versions .V2 ) != bfd_fhir_id_v2
114+ or user .crosswalk .fhir_id (Versions .V3 ) != bfd_fhir_id_v3
115+ ):
108116 update_fhir_id = True
109117 # Update Crosswalk if the user_mbi is null, but we have an mbi value from SLSx or
110118 # if the saved user_mbi value is different than what SLSx has
@@ -119,8 +127,8 @@ def get_and_update_user(slsx_client: OAuth2ConfigSLSx, request):
119127 'crosswalk_before' : {
120128 'id' : user .crosswalk .id ,
121129 'user_hicn_hash' : user .crosswalk .user_hicn_hash ,
122- 'fhir_id_v2' : versioned_fhir_ids . get ( Versions . V2 , None ) ,
123- 'fhir_id_v3' : versioned_fhir_ids . get ( Versions . V3 , None ) ,
130+ 'fhir_id_v2' : bfd_fhir_id_v2 ,
131+ 'fhir_id_v3' : bfd_fhir_id_v3 ,
124132 'user_id_type' : user .crosswalk .user_id_type ,
125133 },
126134 })
@@ -129,8 +137,8 @@ def get_and_update_user(slsx_client: OAuth2ConfigSLSx, request):
129137 # Archive to audit crosswalk changes
130138 ArchivedCrosswalk .create (user .crosswalk )
131139 if update_fhir_id :
132- user .crosswalk .fhir_id_v2 = versioned_fhir_ids . get ( Versions . V2 )
133- user .crosswalk .fhir_id_v3 = versioned_fhir_ids . get ( Versions . V3 )
140+ user .crosswalk .fhir_id_v2 = bfd_fhir_id_v2
141+ user .crosswalk .fhir_id_v3 = bfd_fhir_id_v3
134142 # Update crosswalk per changes
135143 user .crosswalk .user_id_type = hash_lookup_type
136144 user .crosswalk .user_hicn_hash = slsx_client .hicn_hash
@@ -147,8 +155,8 @@ def get_and_update_user(slsx_client: OAuth2ConfigSLSx, request):
147155 'crosswalk' : {
148156 'id' : user .crosswalk .id ,
149157 'user_hicn_hash' : user .crosswalk .user_hicn_hash ,
150- 'fhir_id_v2' : versioned_fhir_ids . get ( Versions . V2 , None ) ,
151- 'fhir_id_v3' : versioned_fhir_ids . get ( Versions . V3 , None ) ,
158+ 'fhir_id_v2' : bfd_fhir_id_v2 ,
159+ 'fhir_id_v3' : bfd_fhir_id_v3 ,
152160 'user_id_type' : user .crosswalk .user_id_type ,
153161 },
154162 })
@@ -160,8 +168,8 @@ def get_and_update_user(slsx_client: OAuth2ConfigSLSx, request):
160168
161169 user = create_beneficiary_record (
162170 slsx_client ,
163- fhir_id_v2 = versioned_fhir_ids . get ( Versions . V2 , None ) ,
164- fhir_id_v3 = versioned_fhir_ids . get ( Versions . V3 , None ) ,
171+ fhir_id_v2 = bfd_fhir_id_v2 ,
172+ fhir_id_v3 = bfd_fhir_id_v3 ,
165173 user_id_type = hash_lookup_type ,
166174 request = request
167175 )
@@ -175,8 +183,8 @@ def get_and_update_user(slsx_client: OAuth2ConfigSLSx, request):
175183 'crosswalk' : {
176184 'id' : user .crosswalk .id ,
177185 'user_hicn_hash' : user .crosswalk .user_hicn_hash ,
178- 'fhir_id_v2' : versioned_fhir_ids . get ( Versions . V2 , None ) ,
179- 'fhir_id_v3' : versioned_fhir_ids . get ( Versions . V3 , None ) ,
186+ 'fhir_id_v2' : bfd_fhir_id_v2 ,
187+ 'fhir_id_v3' : bfd_fhir_id_v3 ,
180188 'user_id_type' : user .crosswalk .user_id_type ,
181189 },
182190 })
0 commit comments