Hallo zusammen

Ich versuche mittels Skript automatisch Checkbox-Marker bei Patienten zu markieren. Dabei handelt es sich um den Versicherungsstatus (Allgemein, Halbprivat, Privat), welcher mittels einem Custom-Anmeldeformular bei jedem Eintritt erfragt wird. Nun möchte ich aus dem letzten Karteikarteneintrag von diesem Custom-Typ (Anm-iPAD) die Ankreuzfelder abfragen und wenn diese ausgewählt wurden, den entsprechenden Marker setzen.

Dazu habe ich mir folgendes Skript überlegt:
 

typ = 'Anm_iPAD'
intervall = 20
returnvalue = 0
arrey = select(karteieintraege, startQuartal=heuteQuartal-intervall, endQuartal=heuteQuartal)
for ke in arrey:
    if ke['typ'] == typ:
      if customFormularEintrag typ v1 N == X
        returnvalue = 1
        break

 

v1 ist dabei der Name des Ankreuzfeldes. Ich nehme an, dass das Problem im Abfragen des Ankreuzfeldes mittels des Befehls costumFormularEintrag liegt. Leider kenne ich mich nicht mit Python aus und weiss nicht, wie ich den Befehl anpassen/richtig formatieren kann, so dass es auf den jeweiligen Eintrag zugreifen kann. Falls mir irgendjemand helfen kann, wäre ich sehr fro.
Gefragt in Bug von (130 Punkte)
Kategorie geändert von
+1 Punkt

3 Antworten

Die Aufgabe ist durchaus kniffelig. Wie Sie richtig vermutet haben, ist der Ausdruck customFormularEintrag typ v1 N das Problem. Als Python-Laie kenne ich die Lösung dafür auch nicht. Wenn Sie aber in ihrem Custom-Formular die Ankreuzfelder in den Karteieintrag übernommen haben, können Sie mit den modularen Markern den Karteieintrag danach auslesen.

 

 

Beantwortet von (2.2k Punkte)
0 Punkte

Sehr geehrter Herr Baumann

Vielen Dank für den alternativen Vorschlag. Leider funktionieren die modularen Marker nicht wie gewünscht. Mit der Bedingung "enthält V1: X" wird der Checkbox Marker unabhängig vom Inhalt immer automatisch angewählt. Wenn ich die Bedingung auf "V1:X" abändere, wird der Checkbox Marker gar nicht automatisch angewählt, egal ob er im CustomKarteieintrag angekreuzt ist oder nicht. Ich kann mir leider nicht erklären, an was das liegt. Angehängt die Bilder des Karteieintrags, der modularen Befehle und der Checkbox Marker

Hallo Herr Wolf, 

mir scheint, dass es sich dabei wirklich um einen Fehler handelt. Wenn man einen Marker mit der "enthält" oder "enthält nicht" Bedingung setzen will, führt dies bei Suchen nach im Karteieintrag vorhandenen Textteilen - wie Sie ja schon schreiben - immer zum Setzen des Markers. Wenn man dagegen nach Textteilen sucht, die nicht im Karteieintrag enthalten sind, ist das Verhalten des Markers jeweils korrekt. Wenn Sie also nach "enthält" den Text "Blablabla" suchen, kommt raus: nein. Wenn Sie nach "enthält nicht" den Text "Blablabla" suchen, kommt raus: ja. 

Vielleicht können die netten Kollegen von Zollsoft einmal darauf reagieren. Ich setze einen ergänzenden Eintrag als "Bug".

P.S.: ich habe gerade gelernt, dass es in der Schweiz Dossiereintrag heißt. Klingt tatsächlich spannender als das hießige "Karteieintrag", irgendwie mehr nach Agententhriller...smiley

Hallo Herr Baumann

Vielen Dank fürs Gegentesten, langsam habe ich schon an mir gezweifelt. Tatsächlich habe ich initial gedacht, dass ich aufgrund des Namens Dossiereintrag die falschen Befehle benutze oder auf einer veralteten Version arbeite. Leider scheint das Problem an einem anderen Ort zu liegen.

Hilfestellung durch Zollsoft wäre wünschenswert, könnte uns in der Praxis die Arbeit erleichtern (und das Setzen der Marker geht nicht mehr vergessen).

Moin Herr Wolf

einfacher geht es mit Aktionsketten. Da können Sie alle marker, Infos, Hinweise etc. in einer Aktionskette bündeln.

Grundsätzlich gehe ich mit Markern sehr sparsam um, weil man sonst leicht den Überblick verliert und Zeit vergeudet, alle Marker zu analysieren.

Ich nehme beispielsweise Karteieinträge um gezielt Marker zu setzen oder zu entfernen.

Dazu formuliere ich eine entspreechende Bedingung.

Der Bedingung ordne ich eine Aktion zu

In einer Aktionskette werden alle Marker, Infos etc. gebündelt.

Da brauchen Sie nur an einer Stelle Änderungen vorzunehmen, die sich auf Ihen gesamten Workflow auswirken.

Elegant wird es, wenn Sie durch Deaktivieren eines Markers auch noch bestimmte Aktionen starten.

Beantwortet von (30.7k Punkte)
0 Punkte

Hallo Herr Wolf,

 

wenn Sie den Marker mit einem Python-Skript erstellen wollen dann benötigen Sie folgendes Skript

array = select(karteieintraege, startQuartal=heuteQuartal-20, endQuartal=heuteQuartal)
for eintrag in array:
  if(eintrag['typ'] == 'Anm_iPAD'):
    if('v1: X' in eintrag['eintrag']):
      returnvalue = 1
      break

Der Vorschlag von Herr Baumann sollte theoretisch auch gehen, ich vermute aber dass es an der Bedingung "Typ ist Anm_iPAD" scheitert. Die "ist"-Bedingung prüft auf ein exakte Übereinstimmung. Wenn aber zum Beispiel nicht-sichtbare Zeichen im Kürzel der Karteieinträge stehen wird die Bedingung fehlschlagen. Es ist besser "enthält nicht" insbesondere für die Prüfung der Karteikürzel zu verwenden. 

Beantwortet von (180 Punkte)
0 Punkte
16,087 Beiträge
23,860 Antworten
41,987 Kommentare
11,689 Nutzer