Changes between Version 7 and Version 8 of Documentatie/Beheerder/Modules/Scannen
- Timestamp:
- Jan 7, 2016 11:51:48 AM (10 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
Documentatie/Beheerder/Modules/Scannen
v7 v8 48 48 [[Image(dossierfoto.png, align=center, class=inline)]] 49 49 50 Welk plaatje wordt vertoond kan worden ingesteld door de model-klasse voor Patient aan te passen en de methode `displayfoto()` aan te passen. De functie moet een bestandsnaam teruggeven. Er is een demonstratie-implementatie en twee implementaties die nuttig zijn voor productie. Kies '''een''' van deze drie, of schrijf een eigen versie:50 Welk plaatje wordt vertoond kan worden ingesteld door de model-klasse voor Patient aan te passen en de methode `displayfoto()` aan te passen. De functie moet een bestandsnaam teruggeven. Als de functie de naam van een bestaand (plaatjes) bestand teruggeeft, wordt dat plaatje getoond. 51 51 52 - `displayfoto_geslacht` Deze implementatie, voor demonstratie-doeleinden, plaatst een venus- of mars-teken afhankelijk van het geslacht van de patiënt. Deze implementatie staat helemaal los van scannen en foto's. 53 - `displayfoto_fotosjabloon` Deze implementatie laat het meest recente bestand zien dat is toegevoegd met sjabloon ''FOTO-dossier''. Dit is nuttig als de scan-module in gebruik is en dat sjabloon wordt gebruikt voor de foto's. Deze implementatie vereist het gebuik van de scan-module. 54 - `displayfoto_fotobestand` Deze implementatie laat het meest recente bestand zien dat is toegevoegd met een bestandsnaam dat eindigt op ''foto.jpg''. Dit is bruikbaar als een extern fotoprogramma wordt gebruikt in combinatie met de OpenAC-spooler die bestanden aan het dossier toevoegt. Deze implementatie staat helemaal los van de scan-module. 55 56 Om een van deze implementaties te gebruiken, heb je een `model.py` nodig in de adaptatie (of een `model/` directory). Ergens -- of in `model.py` van de adaptatie of in een `model/patient.py` van de adaptatie -- kan je een model-klasse voor `Patient` definiëren. Zo'n definitie ziet er ongeveer zo uit: 52 Om deze functie te definieren, heb je een `model.py` nodig in de adaptatie (of een `model/` directory). Ergens -- of in `model.py` van de adaptatie of in een `model/patient.py` van de adaptatie -- kan je een model-klasse voor `Patient` definiëren. Zo'n definitie ziet er ongeveer zo uit: 57 53 58 54 {{{ … … 62 58 }}} 63 59 64 Als er nog geen patiënt-klasse is gedefiniëerd, voeg deze dan toe. Zet bovenaan het bestand waar de patient-klasse gedefiniëerd wordt, deze import:60 Als er nog geen patiënt-klasse is gedefiniëerd, voeg deze dan toe. Zet bovenaan het bestand waar de patient-klasse gedefiniëerd wordt, een import, en voeg de definitie van functie `displayfoto()` toe, zodat het er ongeveer zo uit ziet: 65 61 66 62 {{{ 67 63 from kern.s040_dossier import foto 64 65 class Patient(model_baseclass("patient")): 66 # Code in deze model-klasse 67 # ... 68 def displayfoto(self): 69 return "C:\\plaatje.jpg" 68 70 }}} 69 71 70 Voeg deze methode toe aan de model-klasse `Patient`: 72 === Foto Zoeken voor Dossier === 73 74 Er is een demonstratie-implementatie en twee "echte" implementaties voor de functie `displayfoto()`. Hiermee wordt het heel eenvoudig om een foto toe te voegen: 75 76 - `displayfoto_geslacht` Deze implementatie, voor demonstratie-doeleinden, plaatst een venus- of mars-teken afhankelijk van het geslacht van de patiënt. Deze implementatie staat helemaal los van scannen en foto's. 77 - `displayfoto_fotosjabloon` Deze implementatie laat het meest recente bestand zien dat is toegevoegd met sjabloon ''FOTO-dossier''. Dit is nuttig als de scan-module in gebruik is en dat sjabloon wordt gebruikt voor de foto's. Deze implementatie vereist het gebuik van de scan-module. 78 - `displayfoto_fotobestand` Deze implementatie laat het meest recente bestand zien dat is toegevoegd met een bestandsnaam dat eindigt op ''foto.jpg''. Dit is bruikbaar als een extern fotoprogramma wordt gebruikt in combinatie met de OpenAC-spooler die bestanden aan het dossier toevoegt. Deze implementatie staat helemaal los van de scan-module. 79 80 Om een van deze implementaties te gebruiken, definieer `displayfoto()` als volgt (hier met de voorbeeld-implementatie): roep de implementatiefunctie aan en geef het resultaat terug. 71 81 72 82 {{{ … … 75 85 }}} 76 86 77 Vul hier in de implementatie die gewenst is: in het voorbeeld wordt de demo-functie gebruikt die niet erg zinvol is voor productie. De functie `displayfoto()` moet een bestandsnaam teruggeven. Het is uiteraard mogelijk om een geheel eigen implementatie te schrijven op basis van andere kenmerken van het dossier, zolang die uiteindelijk een bestandsnaam (`C:\een\plaatje\hier.png` bijvoorbeeld) teruggeeft.78 87 79 88 De meest eenvoudige, en vermoedelijk meest voorkomende, implementatie zal er zo uit zien (dit veronderstelt dat je de scan-module aan hebt staan zodat je het bijbehorende sjabloon hebt): … … 86 95 return foto.displayfoto_fotosjabloon(self) 87 96 }}} 97 98 99 De herkenning van fotobestanden op naam (met `displayfoto_fotobestand()`) gaat uit van bestanden waarvan de naam eindigt op ''foto.jpg''. Als dat niet het geval is (omdat de scanner of het fotoprogramma iets anders produceert) dan kan je de herkenning aanpassen. Hiervoor moet je een [https://docs.python.org/2/library/re.html reguliere expressie] maken -- gebruik eventueel een [https://regex101.com/ online regexp-editor] om daarbij te helpen. Je kan de herkenning van fotobestanden aanpassen als volgt: importeer de module `re` en vervang `foto.MATCH_FOTOBESTAND`: 100 101 {{{ 102 from kern.s040_dossier import foto 103 import re 104 foto.MATCH_FOTOBESTAND = re.compile(".*foto-.*jpg$") 105 }}} 106 107 (De expressie in dit voorbeeld zoekt naar ''foto-'' ergens in de bestandsnaam, en het moet eindigen op ''jpg'') 88 108 89 109 === Een Scan Maken ===