Changes between Version 6 and Version 7 of Documentatie/Beheerder/Modules/Decursus


Ignore:
Timestamp:
05/31/11 15:17:28 (15 years ago)
Author:
henk
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Documentatie/Beheerder/Modules/Decursus

    v6 v7  
    9595 
    9696== Sidebars == 
     97Ook voor tonen van een sidebar bij een thema is wat code nodig in de eigen adaptatie. In dit geval gaat het om een opbouwfunctie die functionaliteit toevoegt aan de standaard decursus opbouwfunctie, en een functie die de sidebar implementeert. De opbouwfunctie: 
     98{{{ 
     99def dossierscherm_opbouw( 
     100   scherm, 
     101   **kwargs 
     102) : 
     103   """ 
     104   Zet een box met knoppen rechts 
     105   """ 
     106   patient = scherm.entry 
     107 
     108   #  oude_dossierscherm_opbouw wordt gezet in __init__.py 
     109   # 
     110   oude_dossierscherm_opbouw(scherm, **kwargs) 
     111 
     112   if scherm.entry: 
     113      for behandeling in scherm.entry.behandelingen.values(): 
     114         behandelpad = "entry/behandelingen(%s)" % behandeling.key 
     115 
     116         for cursusentry in behandeling.cursusentries.values(): 
     117            cursuspad = "%s/cursusentries(%s)" % (behandelpad, cursusentry.key) 
     118            cursusbox = scherm.boxen.get(cursuspad) 
     119            sidebarpad = "%s-sidebar" % cursuspad 
     120 
     121            if not cursusbox \ 
     122            or scherm.box_cursor not in [cursuspad, sidebarpad]: continue 
     123 
     124            if not cursusentry.thema.startswith("consult"): continue 
     125 
     126            sidebar = scherm.box( 
     127               sidebarpad, 
     128               kolom_op_scherm      =  20, 
     129               breedte_in_vakjes    =  6, 
     130               achtergrondkleur     =  "#d0c8d8") 
     131 
     132            scherm.boxen._keys = reduce(lambda list1, list2: list1 + list2, 
     133               [[key] + (key == cursuspad and ["%s-sidebar" % cursuspad] or []) 
     134                for key in scherm.boxen._keys 
     135                if not key.endswith("-sidebar")], 
     136               []) 
     137 
     138            cursusbox.heeft_subboxen_rechts = True 
     139            sidebar.is_subbox = True 
     140 
     141            sidebar.label(6, "<b>Brieftekst</b>") 
     142 
     143            if cursusentry.thema.startswith("consult"): 
     144               sidebar_consult(scherm, patient, cursusentry, sidebar, cursusentry.thema) 
     145}}} 
     146 
     147Implementatie van de sidebar: 
     148{{{ 
     149def sidebar_consult( 
     150   scherm, 
     151   patient, 
     152   cursusentry, 
     153   sidebar, 
     154   thema 
     155) : 
     156   """ 
     157   Vul de sidebar met knoppen voor consults 
     158   """ 
     159   gebruikte_keys = s080_decursus.thema_standaardzinnen(thema) 
     160 
     161   vorig_kenmerk = "" 
     162   for fragmentcode in gebruikte_keys: 
     163      fragment = logica.datamodel.tabellen["brief_tekstfragment"].coderijen[fragmentcode] 
     164      label    = fragment.code 
     165      doelveld = fragment.doelveld 
     166      tekst    = fragment.tekst.replace("{patient}", patienttekst(patient)) 
     167 
     168      kenmerk_match = s080_decursus.exp_kenmerk.match(label) 
     169      if kenmerk_match: kenmerk = kenmerk_match.group(1) 
     170      else: kenmerk = None 
     171 
     172      if kenmerk and vorig_kenmerk and kenmerk != vorig_kenmerk: 
     173         sidebar.separator() 
     174 
     175      else: 
     176         sidebar.newline() 
     177 
     178      vorig_kenmerk = kenmerk 
     179 
     180      on_select = { 
     181         "actie":    "invoegen", 
     182         "entry":    cursusentry, 
     183         "doelveld": doelveld, 
     184         "tekst":    tekst} 
     185 
     186      if len(tekst) > 140: tekst = tekst[:138] + "..." 
     187 
     188      sidebar.label( 
     189         1, "<b>%s</b>" % label, 
     190         celhoogte_in_units = logica.opbouw.compacte_regelhoogte) 
     191      sidebar.label( 
     192         15, "<i>%s</i>" % tekst, 
     193         on_select = on_select, 
     194         celhoogte_in_units = logica.opbouw.compacte_regelhoogte) 
     195}}} 
     196 
     197Ook hier is code nodig die ervoor zorgt dat de opbouwfunctie wordt uitgevoerd door het systeem: 
     198{{{ 
     199   (decursus.oude_dossierscherm_opbouw, decursus.oude_dossierscherm_dispatch) = \ 
     200      logica.opbouw.herdefinieer_scherm( 
     201         "tabelscherm_patient", 
     202         nieuwe_opbouwfunctie = decursus.dossierscherm_opbouw, 
     203         nieuwe_dispatchfunctie = decursus.dossierscherm_dispatch) 
     204}}}