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_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')))
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_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')))