@@ -208,19 +208,19 @@ impl EtlTools {
208208 key : HpoTermDuplet ,
209209 value : String )
210210 -> Result < ( ) , String > {
211- match map. entry ( key) {
212- Entry :: Occupied ( mut entry) => {
213- if entry. get ( ) != & value {
214- let resolved_val = Self :: resolve_hpo_conflict ( entry. get ( ) , & value) ?;
215- * entry. get_mut ( ) = resolved_val;
216- }
217- } ,
218- Entry :: Vacant ( entry) => {
219- entry. insert ( value) ;
211+ match map. entry ( key) {
212+ Entry :: Occupied ( mut entry) => {
213+ if entry. get ( ) != & value {
214+ let resolved_val = Self :: resolve_hpo_conflict ( entry. get ( ) , & value) ?;
215+ * entry. get_mut ( ) = resolved_val;
220216 }
217+ } ,
218+ Entry :: Vacant ( entry) => {
219+ entry. insert ( value) ;
221220 }
222- Ok ( ( ) )
223221 }
222+ Ok ( ( ) )
223+ }
224224
225225 /// Insert multiple HPO term observations into the given map.
226226 ///
@@ -263,17 +263,17 @@ impl EtlTools {
263263 let obs_pair: Vec < & str > = obs. split ( "-" ) . collect ( ) ;
264264 if obs_pair. len ( ) == 3 {
265265 // something like "current": "HP:0008846-observed-Congenital onset",
266+ // or "HP:0008846-observed-na" (i.e., not onset)
266267 let hp_id = obs_pair[ 0 ] ;
267268 let status = obs_pair[ 1 ] ;
268269 let onset = obs_pair[ 2 ] ;
269- if crate :: age:: is_valid_age_string ( onset) {
270+ if onset == "na" {
271+ observation_map. insert ( hp_id. to_string ( ) , status. to_string ( ) ) ;
272+ } else if crate :: age:: is_valid_age_string ( onset) {
270273 observation_map. insert ( hp_id. to_string ( ) , onset. to_string ( ) ) ;
271274 } else {
272275 return Err ( format ! ( "Malformed observation data onset='{onset}' ({obs})" ) )
273276 }
274- } else if obs_pair. len ( ) == 2 {
275- // i.e., no observation data
276- observation_map. insert ( obs_pair[ 0 ] . to_string ( ) , obs_pair[ 1 ] . to_string ( ) ) ;
277277 } else {
278278 return Err ( format ! ( "Malformed observation pair '{obs}'" ) )
279279 }
0 commit comments