Пример #1
0
    def _get_ort_zusatz_items(self, data):
        "Optionale, konfigurierbare Felder für Klientendaten readonly"
        from ebkus.html.strkat import get_strasse
        items = [h.DummyItem(), h.DummyItem()]
        strasse = get_strasse(data)
        if strasse:
            items_dict = {'bezirk': h.TextItem(label='Bezirk',
                                               tip='Bezirk',
                                               value=strasse.get('bezirk',''),
                                               readonly=True,
                                               ),
                          'ortsteil': h.TextItem(label='OT',
                                                 tip='Ortsteil',
                                                 value=strasse.get('ortsteil', ''),
                                                 readonly=True,
                                                 ),
                          'samtgemeinde': h.TextItem(label='SG',
                                                     tip='Samtgemeinde',
                                                     value=strasse.get('samtgemeinde', ''),
                                                     readonly=True,
                                                     ),
                          }
            zusatzfelder = [k for k in config.STRASSENSUCHE.split() if k != 'ort']
##             if strasse.get('samtgemeinde') == strasse['ort']:
##                 if 'samtgemeinde' in zusatzfelder:
##                     zusatzfelder.remove('samtgemeinde')
            if len(zusatzfelder) == 1:
                items[0] = items_dict[zusatzfelder[0]]
            elif len(zusatzfelder) > 1:
                items[0] = items_dict[zusatzfelder[0]]
                items[1] = items_dict[zusatzfelder[1]]
        return items
Пример #2
0
 def regional_abgleich(self):
     if config.STRASSENKATALOG:
         akte_list = AkteList(where='')
         from ebkus.html.strkat import get_strasse
         count = 0
         def fs_iter(akte):
             for fall in akte['faelle']:
                 for fs in fall['fachstatistiken']:
                     yield fs
         for a in akte_list:
             strasse = get_strasse(a)
             if strasse:
                 count += 1
                 upd = {}
                 for f in ('ort', 'plz', 'ortsteil',
                           'bezirk', 'samtgemeinde', 'plraum'):
                     upd[f]= strasse[f]
                 for fs in fs_iter(a):
                     fs.update(upd) 
                 a.update({'plraum': strasse['plraum']})
             else:
                 # dieser Fall ist schon durch planungsr_ort_plz_kopieren() geregelt
                 pass
         logging.info("Abgleich mit dem Strassenkatalog %s mal (aus %s) gelungen" %
                      (count, len(akte_list)))
Пример #3
0
def _get_adress_data(jgh):
    """Holt Adressdaten erg鋘zt um Info aus dem Strassenkatalog falls vorhanden.
    Zur Zeit nur aus Akte, also Klient selber.
    Evt. auch aus Bezugsperson, aber nicht klar wie.
    Klient k鰊nte allein wohnen, o�.

    Es werden nur Adressen herangezogen, wenn es eine 5-stellige PLZ und 
    einen Eintrag f黵 den Ort gibt.
    """
    # def daten_ausreichend(data):
    #     if not re.match(r'^\d{5,5}$', data['plz']): # Nur korrekt geformte plz verwenden.
    #         data['plz'] = ''
    #         if not data['plz'] or not data['ort']: # Ohne korrekte plz und ort kann 'wohnt ausserhalb' nicht best鋞igt werden.
    #             return False
    def data_from_obj(obj):
        data = dict(
            hsnr=obj.get('hsnr', ''), 
            str=obj.get('str', ''), 
            plz=obj.get('plz', ''),
            ort=obj.get('ort', ''),
            ortsteil=obj.get('ortsteil', ''),
            samtgemeinde=obj.get('samtgemeinde', ''),
            bezirk=obj.get('bezirk', ''),
            plraum=obj.get('plraum', ''),
            )
        return data
        # update nimmt keine keyword-Argumente in python 2.3:
        # data.update(hsnr=obj['hsnr'], str=obj['str'], plz=obj['plz'], ort=obj['ort'], plraum=obj['plraum'])
        # data.update(d)

        # d = (hsnr=obj['hsnr'], str=obj['str'], plz=obj['plz'], ort=obj['ort'], plraum=obj['plraum'])
        # for k in data.keys():
        #     v = obj.get(k)
        #     if v:
        #         data[k] = v

    akte = jgh['fall__akte']
    if akte:
        adressquelle = akte
        data = data_from_obj(adressquelle)
        # passiert alles sp鋞er:
        # if not daten_ausreichend(data):
        #     return None
            # for art in ('Mutter', 'Vater',):
            #     for bp in akte['bezugspersonen']:
            #         if bp['verw__name'] == art:
        if config.STRASSENKATALOG:
            strasse = get_strasse(adressquelle)
            data.update(strasse)
        data['fall_fn'] = jgh['fall_fn']
        return data
    return None
Пример #4
0
    def get_anschrift(self, data, force_strkat=None):
        from ebkus.html.strkat import get_strasse
        if force_strkat != None:
            strkat_on = force_strkat
        else:
            strkat_on = (data.get('lage') == cc('lage', '0'))
        n_col = 3 # eine Spalte mehr wg. icons
        such_icon = h.Icon(href="javascript:view_strkat()",
                           #href="javascript:open('strkat','Strassensuche')",
                           tip="Passende Einträge im Straßenkatalog suchen",
                           icon="/ebkus/ebkus_icons/strkatview_button.jpg",
                           )
        strkat_ein_aus = h.CheckItem(label='Straßenkatalog verwenden',
                                     tip='Häkchen entfernen, um Adresse ohne Abgleich mit dem Straßenkatalog einzugeben',
                                     name='strkat_on',
                                     value=1,
                                     checked=strkat_on,
                                     onClick="javascript:warn_kein_strkat()",
                                     n_label=2,
                                     n_col=n_col,
                                     )
        reset_icon = h.Icon(#href="strkat",
                          href="javascript:reset_strkat()",
                          #href="javascript:open('strkat','Strassensuche')",
                          tip="Adressfelder leeren",
                          icon="/ebkus/ebkus_icons/neu_button.gif",
                          )
        str = h.TextItem(label='Straße',
                         name='str',
                         value=data['str'],
                         tip='Straße',
                         icon=reset_icon,
                         )
        hsnr = h.TextItem(label='Hausnummer',
                          name='hsnr',
                          value=data['hsnr'],
                          tip='Hausnummer',
                          n_col=n_col,
                        )
        plz = h.TextItem(label='Postleitzahl',
                       name='plz',
                       value=data['plz'],
                       tip="Postleitzahl",
                       n_col=n_col,
                       )
        ort = h.TextItem(label='Ort',
                       name='ort',
                       value=data['ort'],
                       tip="Wohnort",
                       n_col=n_col,
                       )
        if strkat_on:
            strasse = get_strasse(data)
            ortsteil = h.TextItem(label='Ortsteil',
                           name='ortsteil',
                           value=strasse.get('ortsteil', ''),
                           tip="Ortsteil",
                           n_col=n_col,
                           )
            bezirk = h.TextItem(label='Bezirk',
                           name='bezirk',
                           value=strasse.get('bezirk', ''),
                           n_col=n_col,
                           )
            samtgemeinde = h.TextItem(label='Samtgemeinde',
                           name='samtgemeinde',
                           tip="Samtgemeinde",
                           value=strasse.get('samtgemeinde', ''),
                           n_col=n_col,
                           )
        # TODO klären, ob die 0 nicht ganz weg kann.
        # wird in setAdresse eingesetzt, wenn kein planungsr angegeben wurde
        planungsr_value = data.get('plraum', '')
        if planungsr_value == '0':
            planungsr_value = ''

        if isinstance(data, Akte):
            planungsr = h.TextItem(label='Planungsraum',
                                   name='plraum',
                                   value=planungsr_value,
                                   tip="Der Planungsraum des Klienten",
                                   n_col=n_col,
                                   )
        else:
            planungsr = h.DummyItem(n_col=n_col,)
        if config.STRASSENKATALOG:
            items = (strkat_ein_aus,)
        else:
            items = ()
        items += (str, hsnr, plz, ort,)
        if config.STRASSENKATALOG and strkat_on:
            zusatzfelder = [f for f in config.STRASSENSUCHE.split() if f != 'ort']
            for f in zusatzfelder:
                if f == 'bezirk':
                    items += (bezirk,)
                if f == 'ortsteil':
                    items += (ortsteil,)
                if f == 'samtgemeinde':
                    items += (samtgemeinde,)
        else:
            items += (planungsr,)
        # Suche hinter das letzte item
        if config.STRASSENKATALOG:
            items[-1].icon = such_icon
            items[-1].n_col = 2
        anschrift = h.FieldsetInputTable(
            # tip überdeckt die tips der einzelnen Elemente in der Statuszeile
##             tip="Anfangsbuchstaben in einem oder "
##             "mehreren Feldern genügen für eine Suche!",
            legend = 'Anschrift',
            daten = [[i] for i in items])
        return anschrift
Пример #5
0
def _get_strkat_ortsangabe(self, key):
    strasse = self.get('strasse')
    if strasse == None:
        from ebkus.html.strkat import get_strasse
        strasse = self['strasse'] = get_strasse(self)
    return strasse.get(key)
Пример #6
0
    def processForm(self, REQUEST, RESPONSE):
        fallid = self.form.get('fallid')
        if not fallid:
            raise EE('Erstellen einer Fachstatistik nur für einen Fall moeglich.')
        fall = Fall(fallid)
        akte = fall['akte']
        geschlecht = akte['gs']
        if not geschlecht:
            raise EE("Bitte zuerst das Geschlecht in die Klientenkarte eintragen!")
        # Ich kanns mir nicht anders vorstellen:
        if akte['aktueller_fall']:
            assert fall['id'] == akte['aktueller_fall']['id'] == akte['letzter_fall']['id']
        # das geht nicht immer weil Gleichheit nicht richtig definiert ist
        #assert fall == akte['letzter_fall'] == akte['aktueller_fall']
        leistungen = fall['leistungen']
        jahresl = ebapi.FachstatistikList(where = "fall_fn = '%s'" % fall['fn'])
        if jahresl:
            raise EE('Fachstatistik für den Fall schon vorhanden')
        fs = Fachstatistik()
        # Alter relativ zum Fallbeginn
        alter = calc_age(akte['gb'], fall.getDate('bg'))
        def altersgruppe():
            ag = cc('fsag','999')
            try:
                ag = bcode('fsag', alter)['id']
            except:
                pass # kein bereich gefunden
            return ag
        def altersgruppeeltern(verwcode):
            ag = cc('fsagel','999')
            try:
                for b in akte['bezugspersonen']:
                    if b['verw__code'] == verwcode:
                        if b['gb']:
                            alter = calc_age(b['gb'], fall.getDate('bg'))
                            ag = bcode('fsagel', alter)['id']
            except:
                pass # kein valides Geburtsdatum gefunden
            return ag
                        
        if config.STRASSENKATALOG:
            strasse = get_strasse(akte)
        else:
            strasse = {}
        fs.init(
            id=Fachstatistik().getNewId(),
            mit_id=fall['zustaendig__mit_id'],
            fall_id=fall['id'],
            fall_fn=fall['fn'],
            jahr=str(today().year),
            stz=akte['stzbg'],
            plraum=akte['plraum'],
            ort=akte['ort'],
            plz=akte['plz'],
            ortsteil=strasse.get('ortsteil', ''),
            bezirk=strasse.get('bezirk', ''),
            samtgemeinde=strasse.get('samtgemeinde', ''),
            gs=akte['gs'],
            ag=altersgruppe(),
            agkm=altersgruppeeltern('1'), # code klerv für Mutter
            agkv=altersgruppeeltern('2'), # code klerv für Vater
            fs=akte['fs'],
            anmprobleme=None,
            kindprobleme=None,
            elternprobleme=None,
            )
        fs['eleistungen'] = ' '.join([str(leist['le']) for leist in leistungen])
        single_kat_felder = ('zm', 'qualij', 'hkm', 'hkv', 'bkm', 'bkv',
                             'qualikm', 'qualikv',
                             'ba1', 'ba2', 'pbe', 'pbk', )
        for f in single_kat_felder:
            fs[f] = ' ' # leere, selektierte Option, es muss aktiv ausgewählt werden

        # falls unter 14 Beschäftigung vorbelegen
        try:
            if alter < 14:
                fs['qualij'] = cc('fsqualij', '7')
        except:
            pass
        anm = fall['anmeldung']
        if anm:
            fs['zm'] = anm[0]['zm']
        joker_felder = ('joka1', 'joka2', 'joka3', 'joka4',
                        'jokf5', 'jokf6', 'jokf7', 'jokf8',)
        for f in joker_felder:
            if fs_customize.multifeld(f):
                fs[f] = None
            else:
                fs[f] = ' ' # leere, selektierte Option, es muss aktiv ausgewählt werden
        termin_felder = ('kkm', 'kkv', 'kki', 'kpa', 'kfa',
                         'ksoz', 'kleh', 'kerz', 'kkonf', 'kson', 'kat',)
        if config.BERATUNGSKONTAKTE and not config.BERATUNGSKONTAKTE_BS:
            from ebkus.html.beratungskontakt import get_fs_kontakte
            get_fs_kontakte(fall, fs)
        else:
            for f in termin_felder:
                fs[f] = 0
        #print '***********FSNEU', fs
        return self._process(title='Neue Fachstatistik erstellen',
                             file='fseinf',
                             fs=fs,
                             )