def apply(self, param): param.name = '{}:{}'.format(param.name, self.value) # announce all handlers FHIRSearchParamHandler.announce_handler(FHIRSearchParamModifierHandler) FHIRSearchParamHandler.announce_handler(FHIRSearchParamOperatorHandler) FHIRSearchParamHandler.announce_handler(FHIRSearchParamMultiHandler) FHIRSearchParamHandler.announce_handler(FHIRSearchParamTypeHandler) if '__main__' == __name__: from patient import Patient print('1 '+FHIRSearch(Patient, {'name': 'Willis'}).construct()) print('1 '+Patient.where({'name': 'Willis'}).construct()) print('1 '+Patient.where().name('Willis').construct()) print('= Patient?name=Willis') print('') print('2 '+FHIRSearch(Patient, {'name': {'$exact': 'Willis'}}).construct()) print('= Patient?name:exact=Willis') print('') print('3 '+FHIRSearch(Patient, {'name': {'$or': ['Willis', 'Wayne', 'Bruce']}}).construct()) print('= Patient?name=Willis,Wayne,Bruce') print('') print('4 '+FHIRSearch(Patient, {'name': {'$and': ['Willis', {'$exact': 'Bruce'}]}}).construct()) print('= Patient?name=Willis&name:exact=Bruce') print('') print('5 '+FHIRSearch(Patient, {'birthDate': {'$gt': '1950', '$lte': '1970'}}).construct()) print('= Patient?birthDate=>1950&birthDate=<=1970') print('')