def fake_waufn(self):
        letzter_fall = Akte(self.akte_id)['letzter_fall']
        zdadatum = letzter_fall.getDate('zda')
        if zdadatum == Date(0,0,0):
##             log(zdadatum)
            return
        if zdadatum.add_month(1) > today():
##             log(zdadatum)
##             log(zdadatum.add_month(1))
##             log(zdadatum == Date(0,0,0))
##             log(zdadatum.add_month(1) > today())
##             log("WAUF Return")
            return
        form = {}
        form['akid'] = self.akte_id
        form['fallid'] = Fall().getNewId()
        setDate(form, 'zubg', self.choose_date(min=zdadatum.add_month(1)))
        mitarbeiter = choice(self.mitarbeiter)
        form['zumitid'] = mitarbeiter['id']
        form['stzbg'] = mitarbeiter['stz'] # TODO ist das richtig? akte.stzbg wird dadrauf gesetzt
        form['lemitid'] = mitarbeiter['id']
        form['le'] = self.choose_code_id('fsle')
        setDate(form, 'lebg', getDate(form, 'zubg')) # erste Leistung zu Fallbeginn
        form['lestz'] = mitarbeiter['stz']
        waufneinf(form)
        log("Wiederaufnahme als %s am %s" % (Akte(self.akte_id)['letzter_fall']['fn'],
                                             getDate(form, 'zubg')))
Exemple #2
0
 def processForm(self, REQUEST, RESPONSE):
     alt_ids = check_list(self.form, 'uebern', 'Fehler in Altdaten', [])
     if len(alt_ids) > 1:
         raise EE("Bitte nur einen Eintrag zur Übernahme markieren!")
     if alt_ids:
         alt = Altdaten(alt_ids[0])
     else:
         alt = {}
     gs_alt = alt.get('geschlecht')
     if gs_alt:
         gs = (gs_alt=='w' and cc('gs', '2')) or (gs_alt=='m' and cc('gs', '1'))
     else:
         gs = ' '
     if alt:
         no = "Alte Fallnummer: %(fallnummer)s, Jahr: %(jahr)s, Früherer Mitarbeiter: %(mitarbeiter)s" % alt
     else:
         no = ''
     str = alt.get('strasse', '')
     if str:
         for end in ('trasse', 'traße'):
             if str.endswith(end):
                 i = str.index(end)
                 str = str[:i] + 'tr.'
     akte = Akte()
     akte.init(
         id=Akte().getNewId(),
         fs=cc('fsfs', '999'),
         vn=alt.get('vorname', ''),
         na=alt.get('name', ''),
         gb=alt.get('geburtsdatum', ''),
         ort=alt.get('ort', ''),
         plz=alt.get('plz', ''),
         str=str,
         hsnr=alt.get('hausnummer', '').upper(),
         gs=gs,
         tl1=alt.get('telefon1', ''),
         tl2=alt.get('telefon2', ''),
         no=no,
         aufbew=cc('aufbew', '1'),
         stzbg=self.stelle['id'],
         lage=(config.STRASSENKATALOG and  cc('lage', '0') or
               cc('lage', '1')),
         )
     return self._process(
         title='Neue Akte anlegen',
         file='akteeinf',
         akte=akte,
         formname='akteform',
         hidden=(('stzbg', akte['stzbg']),
                 )
         )
 def repeat_zda_waufn(self):
     """Hier soll alles rein, was die Wahrscheinlichkeit eines ZDA
     und WAUFN betrifft."""
     for i in range(5):
         af = Akte(self.akte_id)['aktueller_fall']
         if af:
             bg = af.getDate('bg')
             zda = self.choose_date(bg.add_month(1), bg.add_month(30))
             if zda < today():
                 self.fake_zda(zda)
         lf = Akte(self.akte_id)['letzter_fall']
         zda = lf.getDate('zda')
         if not zda.is_zero() and random() < .4:
             waufn = self.choose_date(zda.add_month(1), zda.add_month(30))
             if waufn < today():
                 self.fake_waufn(waufn)
    def fake_akte(self):
        """erzeugt Daten für eine Akte"""
        akte_id = self.akte_id = Akte().getNewId()
        form = {}
        form['akid'] = akte_id
        form['vn'] = "Klient%sVn" % akte_id
        form['na'] = "Klient%sNa" % akte_id
##         form['gb'] = "%s.%s.%s" % (randrange(1, 29), randrange(1, 13),
##                                    randrange(self.von_jahr.add_month(-240), self.bis_jahr.add_month(-24)))
        form['gb'] = "%s" % self.choose_date(self.von_jahr.add_month(-240), self.bis_jahr.add_month(-24))
        form['ber'] = "Ausbildung von Nr.: %s" % akte_id
        self.fake_adresse(form)                                                      
        form['tl1'] = str(randrange(20000, 99999999))
        form['tl2'] = ''
        form['fs'] = self.choose_code_id('fsfs')
        form['no'] = 'Das sind alles Beispieldaten für Form %s' % self.akte_id
        form['stzbg'] = self.choose_code_id('stzei')
        form['stzak'] = form['stzbg'] # beim Anlegen die gleiche Stelle
        # Fall
        setDate(form, 'zubg', self.choose_date(min=self.von_jahr))
        form['zumitid'] = choice(self.mitarbeiter)['id']
        form['lemitid'] = choice(self.mitarbeiter)['id']
        form['le'] = self.choose_code_id('fsle')
        setDate(form, 'lebg', getDate(form, 'zubg')) # erste Leistung zu Fallbeginn
        form['lestz'] = Mitarbeiter(form['lemitid'])['stz']
        akteeinf(form)
        fall = Akte(self.akte_id)['letzter_fall']
        log("Akte %s" % akte_id)
        log("Fall %s" % fall['fn'])
        for i in range(randrange(1,4)): # 1 - 3
            self.fake_bezugsperson()
        for i in range(randrange(3)):   # 0 - 2
            self.fake_einrichtung()
        #print "WOHNBEZIRK: ", self.akte['wohnbez']
        self.fake_fachstatistik(fall)
        self.fake_jghstatistik(fall)
        # den Fall mit einer gewissen Wahrscheinlichkeit schließen;
        # je älter, desto wahrscheinlicher
        alter = fall.getDate('bg').diff(today()) 
        if self.p_ja_nein(alter, z1=1, p1=.1, z2=36, p2=.9):
            self.fake_zda()
            # 30% wiederaufnehmen
            if random() < .3:
                self.fake_waufn()
    def fake_waufn(self, datum=None):
        akte = Akte(self.akte_id)
        stelle_id = akte['stzbg']
        letzter_fall = akte['letzter_fall']
        zdadatum = letzter_fall.getDate('zda')
        if zdadatum == Date(0,0,0):
##             log(zdadatum)
            return
        if zdadatum.add_month(int(config.WIEDERAUFNAHMEFRIST)) > today():
##             log(zdadatum)
##             log(zdadatum.add_month(1))
##             log(zdadatum == Date(0,0,0))
##             log(zdadatum.add_month(1) > today())
##             log("WAUF Return")
            return
        form = {}
        form['akid'] = self.akte_id
        form['fallid'] = Fall().getNewId()
        if not datum:
            datum = self.choose_date(min=zdadatum.add_month(1))
        setDate(form, 'zubg', datum)
        mitarbeiter = self.choose_mitarbeiter(stelle_id)
        form['zumitid'] = mitarbeiter['id']
        form['lemitid'] = mitarbeiter['id']
        form['le'] = self.choose_code_id('fsle')
        setDate(form, 'lebg', getDate(form, 'zubg')) # erste Leistung zu Fallbeginn
        form['lestz'] = stelle_id
        # form benötigt die Adressdaten, sonst wird in ebupd.waufneinf die Adresse gelöscht
        form['gs'] = akte['gs']
        setDate(form, 'gb', str2date(akte['gb']))
        for k in ('ort', 'str', 'plz', 'hsnr'):
            v = akte.get(k)
            if v:
                form[k] = v
        if config.STRASSENKATALOG:
            form['strkat_on'] = 1
        waufneinf(form)
        log("Wiederaufnahme als %s am %s" % (Akte(self.akte_id)['letzter_fall']['fn'],
                                             getDate(form, 'zubg')))
 def fake_zda(self):
     """schliesst einen Fall mit einer bestimmten
     Wahrscheinlichkeit ab, je älter desto
     wahscheinlicher.
     Fügt vor dem Schliessen noch ein paar Leistungen ein."""
     fall = Akte(self.akte_id)['letzter_fall']
     fn = fall['fn']
     beginn = fall.getDate('bg')
     alter = beginn.diff(today()) 
     if alter < 2:
         return
     form = {}
     form['fallid'] = fall['id']
     form['aktuellzustid'] = fall['zustaendig__id']
     # Dauer des Falles
     zda = self.choose_date(beginn.add_month(1), min(beginn.add_month(alter), today()))
     setDate(form, 'zda', zda)
     # 0 bis 5 Leistungen hinzufügen
     for i in range(randrange(6)):
         self.fake_leistung(fall, zda)
     zdaeinf(form)
     log("Zda %s am %s" % (fn, zda))
    def fake_zda(self, datum=None):
        """schliesst einen Fall mit einer bestimmten
        Wahrscheinlichkeit ab, je älter desto
        wahscheinlicher.
        Fügt vor dem Schliessen noch ein paar Leistungen ein.
        Erledigt vor dem Schliessen auch die Statistiken,
        sonst wird die Schliessung nicht akzeptiert.
        """
        fall = Akte(self.akte_id)['letzter_fall']
        fn = fall['fn']
        beginn = fall.getDate('bg')
        alter = beginn.diff(today()) 
        if alter < 2:
            return
        form = {}
        form['fallid'] = fall['id']
        form['aktuellzustid'] = fall['zustaendig__id']
        # Dauer des Falles
        if datum:
            zda = datum
        else:
            zda = self.choose_date(beginn.add_month(1), min(beginn.add_month(24), today()))
##             if random() < .2:
##                 zda = self.choose_date(beginn.add_month(12), min(beginn.add_month(24), today()))
##             else:
##                 # die meisten Fälle bis ein Jahr
##                 zda = self.choose_date(beginn.add_month(1), min(beginn.add_month(12), today()))
##             zda = self.choose_date(beginn.add_month(1), min(beginn.add_month(alter), today()))
        # eine Statistik pro abgeschlossenem Fall
        self.fake_fachstatistik(fall, zda)
        self.fake_jghstatistik(fall, zda, abgeschlossen=True)
        setDate(form, 'zda', zda)
        # 0 bis 5 Leistungen hinzufügen
        for i in range(randrange(6)):
            self.fake_leistung(fall, zda)
        zdaeinf(form)
        log("Zda %s am %s" % (fn, zda))
    def fake_waufn(self, datum=None):
        letzter_fall = Akte(self.akte_id)['letzter_fall']
        zdadatum = letzter_fall.getDate('zda')
        if zdadatum == Date(0,0,0):
##             log(zdadatum)
            return
        if zdadatum.add_month(1) > today():
##             log(zdadatum)
##             log(zdadatum.add_month(1))
##             log(zdadatum == Date(0,0,0))
##             log(zdadatum.add_month(1) > today())
##             log("WAUF Return")
            return
        form = {}
        form['akid'] = self.akte_id
        form['fallid'] = Fall().getNewId()
        if not datum:
            datum = self.choose_date(min=zdadatum.add_month(1))
        setDate(form, 'zubg', datum)
        mitarbeiter = choice(self.mitarbeiter)
        form['zumitid'] = mitarbeiter['id']
        form['stzbg'] = mitarbeiter['stz'] # ist das richtig? akte.stzbg wird dadrauf gesetzt
        form['lemitid'] = mitarbeiter['id']
        form['le'] = self.choose_code_id('fsle')
        setDate(form, 'lebg', getDate(form, 'zubg')) # erste Leistung zu Fallbeginn
        form['lestz'] = mitarbeiter['stz']
        # form benötigt die Adressdaten, sonst wird in ebupd.waufneinf die Adresse gelöscht
        akte = Akte(self.akte_id)
        for k in ('str', 'plz', 'hsnr'):
            v = akte.get(k)
            if v:
                form[k] = v
        if config.BERLINER_VERSION and akte.get('lage') == cc('lage', '0') and akte.get('str'):
            form['strkat'] = akte['str']
        waufneinf(form)
        log("Wiederaufnahme als %s am %s" % (Akte(self.akte_id)['letzter_fall']['fn'],
                                             getDate(form, 'zubg')))