<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def get_wide_interims(self):
 """Returns a dictionary with the analyses services from the current worksheet which have at least one interim with 'Wide' attribute set to true and that have not been yet submitted The structure of the returned dictionary is the following: <Analysis_keyword>: { 'analysis': <Analysis_name>, 'keyword': <Analysis_keyword>, 'interims': { <Interim_keyword>: { 'value': <Interim_default_value>, 'keyword': <Interim_key>, 'title': <Interim_title> } } } """

        outdict = {}
        allowed_states = ['assigned', 'unassigned']
        for analysis in self.context.getAnalyses():
            # TODO Workflow - Analysis Use a query instead of this
            if api.get_workflow_status_of(analysis) not in allowed_states:
                continue

            if analysis.getKeyword() in outdict.keys():
                continue

            calculation = analysis.getCalculation()
            if not calculation:
                continue

            andict = {
                "analysis": analysis.Title(),
                "keyword": analysis.getKeyword(),
                "interims": {}
            }

            # Analysis Service interim defaults
            for field in analysis.getInterimFields():
                if field.get("wide", False):
                    andict["interims"][field["keyword"]] = field

            # Interims from calculation
            for field in calculation.getInterimFields():
                if field["keyword"] not in andict["interims"].keys() \
                   and field.get("wide", False):
                    andict["interims"][field["keyword"]] = field

            if andict["interims"]:
                outdict[analysis.getKeyword()] = andict
        return outdict