adding support for terminiology server.
This commit is contained in:
parent
f5b0fb59d7
commit
0fa4e78e06
|
@ -21,6 +21,7 @@ export enum NlmSearchType {
|
|||
Procedure = 'Procedure',
|
||||
Vaccine = 'Vaccine',
|
||||
|
||||
Countries = 'Countries',
|
||||
PrePopulated = 'PrePopulated'
|
||||
|
||||
}
|
||||
|
@ -44,8 +45,10 @@ export enum NlmSearchType {
|
|||
})
|
||||
export class NlmTypeaheadComponent implements ControlValueAccessor {
|
||||
@Input() searchType: NlmSearchType = NlmSearchType.Condition;
|
||||
@Input() debugMode: Boolean = false;
|
||||
@Input() openOnFocus: Boolean = false;
|
||||
@Input() debugMode: Boolean = false; //if true, will show the debug panel
|
||||
@Input() openOnFocus: Boolean = false; //if true, will display results on focus
|
||||
@Input() idResult: Boolean = false; //if true, will return the id of the result instead of an object, implies editable = false
|
||||
@Input() editable: Boolean = true; //if true, will allow the user to enter values not in the list
|
||||
@Input() prePopulatedOptions: NlmSearchResults[] = []
|
||||
|
||||
@ViewChild('instance', { static: true }) instance: NgbTypeahead;
|
||||
|
@ -79,6 +82,11 @@ export class NlmTypeaheadComponent implements ControlValueAccessor {
|
|||
case NlmSearchType.Condition:
|
||||
searchOpFn = this.nlmClinicalTableSearchService.searchCondition
|
||||
break
|
||||
case NlmSearchType.Countries:
|
||||
searchOpFn = this.nlmClinicalTableSearchService.searchCountries
|
||||
this.idResult = true
|
||||
this.editable = false
|
||||
break
|
||||
case NlmSearchType.MedicalContactIndividualProfession:
|
||||
searchOpFn = this.nlmClinicalTableSearchService.searchMedicalContactIndividualProfession
|
||||
this.openOnFocus = true
|
||||
|
@ -151,15 +159,25 @@ export class NlmTypeaheadComponent implements ControlValueAccessor {
|
|||
this.markAsTouched()
|
||||
console.log("bubbling modelChange event", event)
|
||||
if(typeof event === 'string'){
|
||||
if(this.idResult){
|
||||
this.onChange(null);
|
||||
return
|
||||
}
|
||||
if (event.length === 0) {
|
||||
this.onChange(null);
|
||||
} else {
|
||||
this.onChange({text: event});
|
||||
}
|
||||
} else{
|
||||
if(this.idResult){
|
||||
this.onChange(event.id);
|
||||
return
|
||||
}
|
||||
else {
|
||||
this.onChange(event);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// If `openOnFocus` is true, we want to show dropdown/typeahead when the field is clicked or in focus, even if there is no text entered.
|
||||
//See:https://ng-bootstrap.github.io/#/components/typeahead/examples#focus
|
||||
|
|
|
@ -457,7 +457,7 @@
|
|||
</div><!-- col -->
|
||||
<div class="col-6 mg-t-10 mg-lg-t-0">
|
||||
<p class="mg-b-10">Country</p>
|
||||
<input formControlName="country" class="form-control" placeholder="Country" type="text">
|
||||
<app-nlm-typeahead formControlName="country" searchType="Countries" [debugMode]="debugMode"></app-nlm-typeahead>
|
||||
</div><!-- col -->
|
||||
</ng-container>
|
||||
</ng-container>
|
||||
|
@ -531,7 +531,7 @@
|
|||
</div><!-- col -->
|
||||
<div class="col-6 mg-t-10 mg-lg-t-0">
|
||||
<p class="mg-b-10">Country</p>
|
||||
<input formControlName="country" class="form-control" placeholder="Country" type="text">
|
||||
<app-nlm-typeahead formControlName="country" searchType="Countries" [debugMode]="debugMode"></app-nlm-typeahead>
|
||||
</div><!-- col -->
|
||||
</ng-container>
|
||||
</ng-container>
|
||||
|
|
|
@ -1200,6 +1200,29 @@ export class NlmClinicalTableSearchService {
|
|||
return of(result)
|
||||
}
|
||||
|
||||
searchCountries(searchTerm: string): Observable<NlmSearchResults[]> {
|
||||
|
||||
//https://tx.fhir.org/r4/ValueSet/$expand?_format=json&filter=Canada&url=http://hl7.org/fhir/ValueSet/iso3166-1-2
|
||||
let queryParams = {
|
||||
'_format': 'json',
|
||||
'filter':searchTerm,
|
||||
'url': 'http://hl7.org/fhir/ValueSet/iso3166-1-2'
|
||||
}
|
||||
|
||||
return this._httpClient.get<any>(`https://tx.fhir.org/r4/ValueSet/$expand`, {params: queryParams})
|
||||
.pipe(
|
||||
map((response) => {
|
||||
|
||||
return (response.expansion.contains || []).map((valueSetItem):NlmSearchResults => {
|
||||
return {
|
||||
id: valueSetItem.code,
|
||||
identifier: [valueSetItem],
|
||||
text: valueSetItem.display,
|
||||
}
|
||||
})
|
||||
})
|
||||
)
|
||||
}
|
||||
|
||||
searchWikipediaType(searchTerm: string): Observable<NlmSearchResults[]> {
|
||||
let queryParams = {
|
||||
|
|
Loading…
Reference in New Issue