def progress_list( self, destination_id=None, node_id=None, ): """Progress list. :param destination_id: destination_id :param node_id: node_id Notes: (node_id OR destination_id) - The node or destination id """ request_data = { 'destination_id': destination_id, 'node_id': node_id, } errors_mapping = {} errors_mapping['FILTER_NOT_FOUND'] = FilterNotFound('The filter can not be found. The error_subtype will hold the filter UUID') errors_mapping['INVALID_CONDITION'] = InvalidCondition('The condition is not support. The error_subtype will hold the filter expression this applies to') errors_mapping['INVALID_FIELD'] = InvalidField('The field is not valid for this object. The error_subtype will hold the filter expression this applies to') errors_mapping['INVALID_SORT_FIELD'] = InvalidSortField('The field is not valid for this object. The error_subtype will hold the field name this applies to') errors_mapping['INVALID_SORT_ORDER'] = InvalidSortOrder('The sort order for the field is invalid. The error_subtype will hold the field name this applies to') errors_mapping['MISSING_FIELDS'] = MissingFields('A required field is missing or does not have data in it. The error_subtype holds a array of all the missing fields') errors_mapping['NOT_FOUND'] = NotFound('The node can not be found') errors_mapping['NOT_PERMITTED'] = NotPermitted('You are not permitted to do this') query_data = { 'api': self._api, 'url': '/node/progress/list', 'request_data': request_data, 'errors_mapping': errors_mapping, 'required_sid': True, } query_data['paginated_field'] = 'progresses' return QueryOPSF(**query_data)
def transform_list( self, account_id, ): """Transform list. :param account_id: The account uuid """ request_data = { 'account_id': account_id, } errors_mapping = {} errors_mapping[('FILTER_NOT_FOUND', None)] = FilterNotFound('The filter can not be found. The error_subtype will hold the filter UUID') errors_mapping[('INVALID_CONDITION', None)] = InvalidCondition('The condition is not support. The error_subtype will hold the filter expression this applies to') errors_mapping[('INVALID_FIELD', None)] = InvalidField('The field is not valid for this object. The error_subtype will hold the filter expression this applies to') errors_mapping[('INVALID_SORT_FIELD', None)] = InvalidSortField('The field is not valid for this object. The error_subtype will hold the field name this applies to') errors_mapping[('INVALID_SORT_ORDER', None)] = InvalidSortOrder('The sort order for the field is invalid. The error_subtype will hold the field name this applies to') errors_mapping[('MISSING_FIELDS', None)] = MissingFields('A required field is missing or does not have data in it. The error_subtype holds a array of all the missing fields') errors_mapping[('NOT_FOUND', None)] = NotFound('The account can not be found') errors_mapping[('NOT_PERMITTED', None)] = NotPermitted('You are not permitted to view this list') query_data = { 'api': self._api, 'url': '/hl7/transform/list', 'request_data': request_data, 'errors_mapping': errors_mapping, 'required_sid': True, } query_data['paginated_field'] = 'transforms' return AsyncQueryOPSF(**query_data)
def delete( self, uuid, ): """Delete. :param uuid: The location uuid """ request_data = { 'uuid': uuid, } errors_mapping = {} errors_mapping[('MISSING_FIELDS', None)] = MissingFields( 'A required field is missing or does not have data in it. The error_subtype holds a array of all the missing fields' ) errors_mapping[( 'NOT_EMPTY', None)] = NotEmpty('The location still has studies in it') errors_mapping[('NOT_FOUND', None)] = NotFound('The location can not be found') errors_mapping[('NOT_PERMITTED', None)] = NotPermitted( 'You are not permitted to delete the location') query_data = { 'api': self._api, 'url': '/location/delete', 'request_data': request_data, 'errors_mapping': errors_mapping, 'required_sid': True, } return QueryO(**query_data)
def get( self, key, ): """Get. :param key: The help key """ request_data = { 'key': key, } errors_mapping = {} errors_mapping[('MISSING_FIELDS', None)] = MissingFields( 'A required field is missing or does not have data in it. The error_subtype holds a array of all the missing fields' ) errors_mapping[('NOT_FOUND', None)] = NotFound('The help was not found') query_data = { 'api': self._api, 'url': '/help/get', 'request_data': request_data, 'errors_mapping': errors_mapping, 'required_sid': True, } return AsyncQueryO(**query_data)
def extract_report( self, uuid, ): """Extract report. :param uuid: The HL7 uuid """ request_data = { 'uuid': uuid, } errors_mapping = {} errors_mapping[('MISSING_FIELDS', None)] = MissingFields('A required field is missing or does not have data in it. The error_subtype holds a array of all the missing fields') errors_mapping[('NOT_CONFIGURED', None)] = NotConfigured('The node setting report_from_hl7 is not configured') errors_mapping[('NOT_FOUND', None)] = NotFound('The HL7 can not be found') errors_mapping[('NOT_PERMITTED', None)] = NotPermitted('You are not permitted to access this HL7 message') query_data = { 'api': self._api, 'url': '/hl7/extract/report', 'request_data': request_data, 'errors_mapping': errors_mapping, 'required_sid': True, } return AsyncQueryO(**query_data)
def get( self, account_id=None, uuid=None, ): """Get. :param account_id: Account id if you are trying to get a user other than yourself (optional) :param uuid: The users uuid (optional). Uses the session user if not passed """ request_data = { 'uuid': uuid, 'account_id': account_id, } errors_mapping = {} errors_mapping['MISSING_FIELDS'] = MissingFields('A required field is missing or does not have data in it. The error_subtype holds a array of all the missing fields') errors_mapping['NOT_FOUND'] = NotFound('The user can not be found') errors_mapping['NOT_PERMITTED'] = NotPermitted('You are not permitted to access this user record') query_data = { 'api': self._api, 'url': '/user/get', 'request_data': request_data, 'errors_mapping': errors_mapping, 'required_sid': True, } return QueryO(**query_data)
def list( self, phi_namespace=None, storage_namespace=None, study_id=None, study_uid=None, ): """List. :param phi_namespace: phi_namespace :param storage_namespace: storage_namespace :param study_id: study_id :param study_uid: study_uid Notes: (study_id OR study_uid AND storage_namespace AND phi_namespace) The uuid of the study or the storage triplet """ request_data = { 'study_id': study_id, 'storage_namespace': storage_namespace, 'study_uid': study_uid, 'phi_namespace': phi_namespace, } errors_mapping = {} errors_mapping['MISSING_FIELDS'] = MissingFields('A required field is missing or does not have data in it. The error_subtype holds a array of all the missing fields') errors_mapping['NOT_FOUND'] = NotFound('The study was not found.') errors_mapping['NOT_PERMITTED'] = NotPermitted('You are not permitted to view the study or key images for the study') query_data = { 'api': self._api, 'url': '/keyimage/list', 'request_data': request_data, 'errors_mapping': errors_mapping, 'required_sid': True, } return QueryO(**query_data)
def study_list( self, uuid, viewable_only, ): """Study list. :param uuid: The patient id :param viewable_only: Flag if they only want the studies the user can view """ request_data = { 'uuid': uuid, 'viewable_only': viewable_only, } errors_mapping = {} errors_mapping[('MISSING_FIELDS', None)] = MissingFields( 'A required field is missing or does not have data in it. The error_subtype holds a array of all the missing fields' ) errors_mapping[('NOT_FOUND', None)] = NotFound('The patient can not be found') errors_mapping[( 'NOT_PERMITTED', None)] = NotPermitted('You are not permitted to view this patient') query_data = { 'api': self._api, 'url': '/patient/study/list', 'request_data': request_data, 'errors_mapping': errors_mapping, 'required_sid': True, } return AsyncQueryO(**query_data)
def portal_login( self, patient_id, pin, ): """Portal login. :param patient_id: The patient id :param pin: The PIN """ request_data = { 'patient_id': patient_id, 'pin': pin, } errors_mapping = {} errors_mapping[('INVALID_PIN', None)] = InvalidPin('The PIN is invalid or expired') errors_mapping[('LOCKOUT', None)] = Lockout('Too many failed attempts') errors_mapping[('MISSING_FIELDS', None)] = MissingFields( 'A required field is missing or does not have data in it. The error_subtype holds a array of all the missing fields' ) errors_mapping[('NOT_FOUND', None)] = NotFound('The patient can not be found') errors_mapping[( 'NOT_PERMITTED', None)] = NotPermitted('You are not permitted to do this') query_data = { 'api': self._api, 'url': '/patient/portal/login', 'request_data': request_data, 'errors_mapping': errors_mapping, 'required_sid': False, } return AsyncQueryO(**query_data)
def physician_alias_match( self, account_id, lv, ): """Physician alias match. :param account_id: The account to test in :param lv: The tag text to match against the PHYSICIAN_ALIAS rule. """ request_data = { 'lv': lv, 'account_id': account_id, } errors_mapping = {} errors_mapping['MISSING_FIELDS'] = MissingFields('A required field is missing or does not have data in it. The error_subtype holds a array of all the missing fields') errors_mapping['NOT_FOUND'] = NotFound('The account can not be found') errors_mapping['NOT_PERMITTED'] = NotPermitted('You are not permitted to do this') query_data = { 'api': self._api, 'url': '/route/physician/alias/match', 'request_data': request_data, 'errors_mapping': errors_mapping, 'required_sid': True, } return QueryO(**query_data)
def delete( self, uuid, ): """Delete. :param uuid: The anonymization profile uuid """ request_data = { 'uuid': uuid, } errors_mapping = {} errors_mapping[('IN_USE', None)] = InUse( 'The anonymization profile is connected to an account and cannot be removed' ) errors_mapping[('MISSING_FIELDS', None)] = MissingFields( 'A required field is missing or does not have data in it. The error_subtype holds a array of all the missing fields' ) errors_mapping[( 'NOT_FOUND', None)] = NotFound('The anonymization profile can not be found') errors_mapping[('NOT_PERMITTED', None)] = NotPermitted( 'You are not permitted to delete the anonymization profile') query_data = { 'api': self._api, 'url': '/anonymization/delete', 'request_data': request_data, 'errors_mapping': errors_mapping, 'required_sid': True, } return AsyncQueryO(**query_data)
def add( self, account_id, name, ): """Add. :param account_id: uuid of the account to add them to :param name: Name of the rule set """ request_data = { 'account_id': account_id, 'name': name, } errors_mapping = {} errors_mapping[('MISSING_FIELDS', None)] = MissingFields( 'A required field is missing or does not have data in it. The error_subtype holds a array of all the missing fields' ) errors_mapping[('NOT_FOUND', None)] = NotFound( 'The account was not found. The error_subtype holds the type of object not found' ) errors_mapping[('NOT_PERMITTED', None)] = NotPermitted( 'You are not permitted to add a rule set to the account') query_data = { 'api': self._api, 'url': '/rule_set/add', 'request_data': request_data, 'errors_mapping': errors_mapping, 'required_sid': True, } return QueryO(**query_data)
def set( self, uuid, name=None, ): """Set. :param uuid: The rule set uuid :param name: Name of the rule set (optional) """ request_data = { 'name': name, 'uuid': uuid, } errors_mapping = {} errors_mapping[('MISSING_FIELDS', None)] = MissingFields( 'A required field is missing or does not have data in it. The error_subtype holds a array of all the missing fields' ) errors_mapping[('NOT_FOUND', None)] = NotFound('The rule set can not be found') errors_mapping[( 'NOT_PERMITTED', None)] = NotPermitted('You are not permitted to edit the rule set') query_data = { 'api': self._api, 'url': '/rule_set/set', 'request_data': request_data, 'errors_mapping': errors_mapping, 'required_sid': True, } return AsyncQueryO(**query_data)
def delete( self, uuid, ): """Delete. :param uuid: The rule set uuid """ request_data = { 'uuid': uuid, } errors_mapping = {} errors_mapping[('IN_USE', None)] = InUse( 'The rule set contains study status timet rules and cannot be removed' ) errors_mapping[('MISSING_FIELDS', None)] = MissingFields( 'A required field is missing or does not have data in it. The error_subtype holds a array of all the missing fields' ) errors_mapping[('NOT_FOUND', None)] = NotFound('The rule set can not be found') errors_mapping[('NOT_PERMITTED', None)] = NotPermitted( 'You are not permitted to delete the rule set') query_data = { 'api': self._api, 'url': '/rule_set/delete', 'request_data': request_data, 'errors_mapping': errors_mapping, 'required_sid': True, } return QueryO(**query_data)
def trigger( self, study_id, uuid, ): """Trigger. :param study_id: uuid of the study to fire the webhook for :param uuid: uuid of the webhook """ request_data = { 'study_id': study_id, 'uuid': uuid, } errors_mapping = {} errors_mapping['MISSING_FIELDS'] = MissingFields( 'A required field is missing or does not have data in it. The error_subtype holds a array of all the missing fields' ) errors_mapping['NOT_FOUND'] = NotFound( 'The webhook or study can not be found') errors_mapping['NOT_PERMITTED'] = NotPermitted( 'You are not permitted to trigger the webhook') query_data = { 'api': self._api, 'url': '/webhook/trigger', 'request_data': request_data, 'errors_mapping': errors_mapping, 'required_sid': True, } return QueryO(**query_data)
def delete( self, uuid, ): """Delete. :param uuid: Id of the message """ request_data = { 'uuid': uuid, } errors_mapping = {} errors_mapping['MISSING_FIELDS'] = MissingFields( 'A required field is missing or does not have data in it. The error_subtype holds a array of all the missing fields' ) errors_mapping['NOT_FOUND'] = NotFound('The message can not be found') errors_mapping['NOT_PERMITTED'] = NotPermitted( 'You are not permitted to delete this message') query_data = { 'api': self._api, 'url': '/message/delete', 'request_data': request_data, 'errors_mapping': errors_mapping, 'required_sid': True, } return QueryO(**query_data)
def list( self, account_id, ): """List. :param account_id: uuid of the account """ request_data = { 'account_id': account_id, } errors_mapping = {} errors_mapping['MISSING_FIELDS'] = MissingFields( 'A required field is missing or does not have data in it. The error_subtype holds a array of all the missing fields' ) errors_mapping['NOT_FOUND'] = NotFound('The account can not be found') errors_mapping['NOT_PERMITTED'] = NotPermitted( 'You are not permitted to view this list') query_data = { 'api': self._api, 'url': '/webhook/list', 'request_data': request_data, 'errors_mapping': errors_mapping, 'required_sid': True, } return QueryO(**query_data)
def add( self, body, account_id=None, email=None, group_id=None, location_id=None, namespace_id=None, parent_id=None, share_code=None, study_id=None, subject=None, user_id=None, ): """Add. :param body: The body of the message :param account_id: account_id :param email: email :param group_id: group_id :param location_id: location_id :param namespace_id: namespace_id :param parent_id: The uuid of the parent message (optional) :param share_code: share_code :param study_id: study_id :param subject: The subject of the message (optional) :param user_id: user_id Notes: (namespace_id OR user_id OR group_id OR location_id OR account_id OR email OR share_code OR study_id) - The namespace, entity, email, share code or study to send the message to """ request_data = { 'study_id': study_id, 'share_code': share_code, 'body': body, 'group_id': group_id, 'parent_id': parent_id, 'account_id': account_id, 'location_id': location_id, 'user_id': user_id, 'email': email, 'subject': subject, 'namespace_id': namespace_id, } errors_mapping = {} errors_mapping['MISSING_FIELDS'] = MissingFields( 'A required field is missing or does not have data in it. The error_subtype holds a array of all the missing fields' ) errors_mapping['NOT_FOUND'] = NotFound( 'The recipient or the parent message cannot be found') errors_mapping['NOT_PERMITTED'] = NotPermitted( 'You are not permitted to send to the recipient') query_data = { 'api': self._api, 'url': '/message/add', 'request_data': request_data, 'errors_mapping': errors_mapping, 'required_sid': True, } return QueryO(**query_data)
def welcome( self, account_id, email, link, ): """Welcome. :param account_id: Id of the account to welcome them to :param email: The email of the user to welcome :param link: URL to reset the password at. The reset token will be appended to the link """ request_data = { 'link': link, 'account_id': account_id, 'email': email, } errors_mapping = {} errors_mapping['INVALID_LINK'] = InvalidLink('The link needs to be a https link within the site domain') errors_mapping['MISSING_FIELDS'] = MissingFields('A required field is missing or does not have data in it. The error_subtype holds a array of all the missing fields') errors_mapping['NOT_FOUND'] = NotFound('The user can not be found') query_data = { 'api': self._api, 'url': '/user/welcome', 'request_data': request_data, 'errors_mapping': errors_mapping, 'required_sid': True, } return QueryO(**query_data)
def set( self, uuid, configuration=None, name=None, type=None, ): """Set. :param uuid: The filter uuid :param configuration: The configuration as a JSON data structure (optional) :param name: The name of the filter (optional) :param type: The type of the filter (optional) """ request_data = { 'uuid': uuid, 'configuration': configuration, 'name': name, 'type': type, } errors_mapping = {} errors_mapping['NOT_FOUND'] = NotFound('The filter can not be found') errors_mapping['NOT_PERMITTED'] = NotPermitted('You are not the owner of the filter') query_data = { 'api': self._api, 'url': '/filter/set', 'request_data': request_data, 'errors_mapping': errors_mapping, 'required_sid': True, } return QueryO(**query_data)
def account_overrides( self, account_id=None, phi_namespace=None, storage_namespace=None, study_uid=None, vanity=None, ): """Account overrides. :param account_id: account_id :param phi_namespace: phi_namespace :param storage_namespace: storage_namespace :param study_uid: study_uid :param vanity: vanity """ request_data = { 'account_id': account_id, 'phi_namespace': phi_namespace, 'storage_namespace': storage_namespace, 'study_uid': study_uid, 'vanity': vanity, } errors_mapping = {} errors_mapping[('MISSING_FIELDS', None)] = MissingFields('A required field is missing or does not have data in it. The error_subtype holds a array of all the missing fields') errors_mapping[('NOT_FOUND', None)] = NotFound('The account or vanity was not found') query_data = { 'api': self._api, 'url': '/terminology/account/overrides', 'request_data': request_data, 'errors_mapping': errors_mapping, 'required_sid': True, } return AsyncQueryO(**query_data)
def delete( self, object, object_id, tag, ): """Delete. :param object: Object class to apply it to (Study|User_account|Group|Location|Account|Patient|Case|Order) :param object_id: UUID of the object :param tag: Value of the tag """ request_data = { 'object': object, 'object_id': object_id, 'tag': tag, } errors_mapping = {} errors_mapping[('INVALID_OBJECT', None)] = InvalidObject('The object type is invalid') errors_mapping[('MISSING_FIELDS', None)] = MissingFields( 'A required field is missing or does not have data in it. The error_subtype holds a array of all the missing fields' ) errors_mapping[('NOT_FOUND', None)] = NotFound('The object was not found') query_data = { 'api': self._api, 'url': '/tag/delete', 'request_data': request_data, 'errors_mapping': errors_mapping, 'required_sid': True, } return AsyncQueryO(**query_data)
def add( self, message, serial_no, uuid, accession_number=None, ): """Add. :param message: The HL7 message :param serial_no: The serial number of the node :param uuid: The node id :param accession_number: Use this accession number instead of the accession number in the HL7 message (optional) """ request_data = { 'accession_number': accession_number, 'message': message, 'serial_no': serial_no, 'uuid': uuid, } errors_mapping = {} errors_mapping[('INVALID_MESSAGE', None)] = InvalidMessage('The message could not parsed as a HL7 message') errors_mapping[('MISSING_FIELDS', None)] = MissingFields('A required field is missing or does not have data in it. The error_subtype holds a array of all the missing fields') errors_mapping[('NOT_FOUND', None)] = NotFound('The node can not be found') query_data = { 'api': self._api, 'url': '/hl7/add', 'request_data': request_data, 'errors_mapping': errors_mapping, 'required_sid': False, } return AsyncQueryO(**query_data)
def get( self, uuid, ): """Get. :param uuid: Id of the validate """ request_data = { 'uuid': uuid, } errors_mapping = {} errors_mapping[('MISSING_FIELDS', None)] = MissingFields( 'A required field is missing or does not have data in it. The error_subtype holds a array of all the missing fields' ) errors_mapping[('NOT_FOUND', None)] = NotFound('The validate was not found.') errors_mapping[('NOT_PERMITTED', None)] = NotPermitted( 'You are not permitted to view the validation rule') query_data = { 'api': self._api, 'url': '/validate/get', 'request_data': request_data, 'errors_mapping': errors_mapping, 'required_sid': True, } return QueryO(**query_data)
def template_set( self, body, name, uuid, ): """Template set. :param body: The HL7 message with replacement expressions :param name: Name of the template :param uuid: The template id """ request_data = { 'body': body, 'name': name, 'uuid': uuid, } errors_mapping = {} errors_mapping[('INVALID_HL7', None)] = InvalidHl7('The body is not a valid HL7 message') errors_mapping[('MISSING_FIELDS', None)] = MissingFields('A required field is missing or does not have data in it. The error_subtype holds a array of all the missing fields') errors_mapping[('NOT_FOUND', None)] = NotFound('The template can not be found') errors_mapping[('NOT_PERMITTED', None)] = NotPermitted('You are not permitted to do this') query_data = { 'api': self._api, 'url': '/hl7/template/set', 'request_data': request_data, 'errors_mapping': errors_mapping, 'required_sid': True, } return AsyncQueryO(**query_data)
def delete( self, uuid, ): """Delete. :param uuid: Id of the validation rule """ request_data = { 'uuid': uuid, } errors_mapping = {} errors_mapping[( 'IN_USE', None)] = InUse('The validation rule is used in a routing rule') errors_mapping[('MISSING_FIELDS', None)] = MissingFields( 'A required field is missing or does not have data in it. The error_subtype holds a array of all the missing fields' ) errors_mapping[( 'NOT_FOUND', None)] = NotFound('The validation rule was not found.') errors_mapping[('NOT_PERMITTED', None)] = NotPermitted( 'You are not permitted to delete the validation rule') query_data = { 'api': self._api, 'url': '/validate/delete', 'request_data': request_data, 'errors_mapping': errors_mapping, 'required_sid': True, } return AsyncQueryO(**query_data)
def get( self, uuid, ): """Get. :param uuid: The appointment uuid """ request_data = { 'uuid': uuid, } errors_mapping = {} errors_mapping['MISSING_FIELDS'] = MissingFields( 'A required field is missing or does not have data in it. The error_subtype holds a array of all the missing fields' ) errors_mapping['NOT_FOUND'] = NotFound( 'The appointment can not be found') errors_mapping['NOT_PERMITTED'] = NotPermitted( 'You are not permitted to view this appointment') query_data = { 'api': self._api, 'url': '/appointment/get', 'request_data': request_data, 'errors_mapping': errors_mapping, 'required_sid': True, } return QueryO(**query_data)
def status( self, report_id, ): """Status. :param report_id: The report id """ request_data = { 'report_id': report_id, } errors_mapping = {} errors_mapping[('MISSING_FIELDS', None)] = MissingFields( 'A required field is missing or does not have data in it. The error_subtype holds a array of all the missing fields' ) errors_mapping[('NOT_FOUND', None)] = NotFound('The report can not be found') errors_mapping[('REPORT_FAILED', None)] = ReportFailed('The report failed') query_data = { 'api': self._api, 'url': '/report/status', 'request_data': request_data, 'errors_mapping': errors_mapping, 'required_sid': True, } return AsyncQueryO(**query_data)
def user_delete( self, user_id, uuid, ): """User delete. :param user_id: The user id :param uuid: The location id """ request_data = { 'user_id': user_id, 'uuid': uuid, } errors_mapping = {} errors_mapping[('MISSING_FIELDS', None)] = MissingFields( 'A required field is missing or does not have data in it. The error_subtype holds a array of all the missing fields' ) errors_mapping[('NOT_FOUND', None)] = NotFound('The location can not be found') errors_mapping[( 'NOT_PERMITTED', None)] = NotPermitted('You are not permitted to edit the location') query_data = { 'api': self._api, 'url': '/location/user/delete', 'request_data': request_data, 'errors_mapping': errors_mapping, 'required_sid': True, } return AsyncQueryO(**query_data)
def metric( self, job_id, metric, serial_no, uuid, ): """Metric. :param job_id: The uuid of the push job :param metric: The metric to record :param serial_no: The serial number of the node :param uuid: The node id """ request_data = { 'metric': metric, 'serial_no': serial_no, 'uuid': uuid, 'job_id': job_id, } errors_mapping = {} errors_mapping['INVALID_METRIC'] = InvalidMetric('The metric is invalid for this job type') errors_mapping['MISSING_FIELDS'] = MissingFields('A required field is missing or does not have data in it. The error_subtype holds a array of all the missing fields') errors_mapping['NOT_FOUND'] = NotFound('The node or job can not be found') query_data = { 'api': self._api, 'url': '/node/metric', 'request_data': request_data, 'errors_mapping': errors_mapping, 'required_sid': False, } return QueryO(**query_data)