Downloads Documentation Community Contribute Demo






Show Sidebar
Login | Register

Changeset 5452

Show
Ignore:
Timestamp:
09/07/08 05:25:56 (3 months ago)
Author:
mhdiallo
Message:

Person Portrait Module - Added features for deleting an image, display all images, and displaying the most recent image for a given person.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • openmrs-modules/personportrait/metadata/config.xml

    r5406 r5452  
    3030        <globalProperty> 
    3131       <property>@MODULE_ID@.person_portrait_concept</property> 
    32        <defaultValue>PERSONPORTRAIT</defaultValue> 
     32       <defaultValue>PERSONPORTRAIT2</defaultValue> 
    3333       <description> 
    3434               The concept to use when saving a person portrait. 
  • openmrs-modules/personportrait/web/module/portlets/personPortraitDashboardPortlet.jsp

    r5406 r5452  
    5959                        '\n\nThe output div should have already been updated with the responseText.');  
    6060                }  
    61                  
    62                 function preview() { 
    63                         alert("preview"); 
    64                         var source=what.value; 
    65                 } 
    66          
    67                 function uploadPersonImage() { 
    68                         alert("The image is loadeding..."); 
    69                         var fvalue = $('#recentPortraitViewBox').val(); 
    70                         var img = new Image(); 
    71                         img.src = fvalue; 
    72                         $("#recentPortraitViewBox").val(img); 
    73                    
    74                         alert("The image is loaded"); 
    75                 } 
    76                  
    7761        </script> 
    7862        </head> 
     
    8569        <div id="personPortraitUploadBox" class="box${model.patientVariation}"> 
    8670                <br> 
    87                 <form name="uploadForm" action="<%= request.getContextPath() %>/moduleServlet/personportrait/formImageUpload?patientId=${param.patientId}"  
     71                <form name="uploadForm" action="<%= request.getContextPath() %>/moduleServlet/personportrait/formImageUpload?patientId=${param.patientId}&description=${uploadForm.comment.value}"  
    8872                                        enctype="multipart/form-data" method="post"> 
    8973                        <label>Image File: </label> 
    9074                        <input type="file" id="imageFile" name="imageFile"/> 
    91                         <br><br> 
    92                         <label>Portrait Date: </label> 
    93                         <input type="text" id="portraitDate" name="portraitDate"/> 
     75                        <input type="submit" name='Upload' value="Upload Portrait"> 
    9476                        <br><br> 
    9577                        <label>Description: </label> 
    96                         <textarea rows="3" cols="60" id="imageDescription"></textarea> 
    97                         <br><br> 
    98                         <input type="submit" name='Upload' value="Upload Portrait"> 
     78                        <textarea rows="3" cols="60" name="description"></textarea> 
    9979                </form> 
    100                 <br><br> 
    101                 <form name="showAllPortraitsForm" action="<%= request.getContextPath() %>/moduleServlet/personportrait/formShowImages?obsId=${model.test}"  
    102                                         enctype="multipart/form-data" method="post"> 
    103                         <input type="submit" name='showAllPortraits' value="Show All Portraits"> 
    104                         <input type="submit" name='hideAllPortraits' value="Hide All Portraits"> 
    105                         <input type="submit" name='deletePortrait' value="Delete Portrait"> 
    106                 </form> 
     80                <br> 
    10781        </div> 
    10882         
     
    11286         
    11387        <div id="recentPortraitViewBox" class="box${model.patientVariation}"> 
    114                 <img src="${pageContext.request.contextPath}/moduleServlet/personportrait/formImageUpload?patientId=${param.patientId}"> 
     88                <table border="1" cellpadding="5"> 
     89                        <tr><td> 
     90                                <img src="${pageContext.request.contextPath}/moduleServlet/personportrait/formShowImages?obsId=${model.recentPortrait.obsId}&operation=SHOW_PORTRAIT"> 
     91                        </td><td> 
     92                                <label>Date Uploaded: ${model.recentPortrait.dateCreated}</label><br><br> 
     93                                <label>Time Uploaded: ${model.recentPortrait.timeCreated}</label><br><br> 
     94                                <label>Description: ${model.recentPortrait.description}</label> 
     95                        </td></tr> 
     96                </table> 
    11597        </div> 
    11698         
    117         <div class="box${model.patientVariation}"> 
    118                 <label>Portrait</label> 
    119                 <table cellpadding="10"> 
    120                         <c:forEach var="imageObsId" items="${model.portraits}"> 
    121                                 <tr> 
    122                                 <td> 
    123                                         <img src="${pageContext.request.contextPath}/moduleServlet/personportrait/formShowImages?obsId=${imageObsId}"> 
    124                                 </td> 
    125                                 </tr> 
    126                                  
    127                         </c:forEach> 
     99        <div id="allPortraitsViewBox" class="box${model.patientVariation}"> 
     100                <input type="button" name='showAllPortraits' value="Show All Portraits" onClick="model.allPortraits='YES';"> 
     101                <input type="submit" name='hideAllPortraits' value="Hide All Portraits"> 
     102                 
     103                <table border="1" cellpadding="3"> 
     104                        <c:if test="${model.allPortraits == 'NO'}"> 
     105                                <c:forEach var="portrait" items="${model.portraits}"> 
     106                                <tr><td> 
     107                                        <form action="<%= request.getContextPath() %>/moduleServlet/personportrait/formShowImages?patientId=${param.patientId}&obsId=${portrait.obsId}&operation=DELETE_PORTRAIT" method="post"> 
     108                                                <input type="submit" value="Delete Portrait"> 
     109                                        </form> 
     110                                        <img src="${pageContext.request.contextPath}/moduleServlet/personportrait/formShowImages?obsId=${portrait.obsId}&operation=SHOW_PORTRAIT"> 
     111                                        <br> 
     112                                        <label>Date Uploaded: ${portrait.dateCreated}</label> 
     113                                        <br> 
     114                                        <label>Time Uploaded: ${portrait.timeCreated}</label> 
     115                                        <br> 
     116                                        <label>Description: ${portrait.description}</label> 
     117                                </td></tr> 
     118                                </c:forEach> 
     119                        </c:if> 
    128120                </table> 
    129121        </div> 
  • openmrs-modules/personportrait/web/src/org/openmrs/module/personportrait/web/FormImageUploadServlet.java

    r5409 r5452  
    4848        private ImagePersonHandler imagePersonHandler; 
    4949         
    50         @Override 
    5150        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
    5251                 
    5352                imagePersonHandler = new ImagePersonHandler(); 
    5453                HttpSession httpSession = request.getSession(); 
     54        //      ServletOutputStream sos = response.getOutputStream(); 
    5555                 
    5656                // Create a new file upload handler 
     
    6666                                String fileType = item.getContentType(); 
    6767                                 
    68                                  
    6968                                if(fileType.equals("image/png") || fileType.equals("image/gif") ||  
    7069                                                fileType.equals("image/jpeg")) { 
     
    7473                                                 
    7574                                        String patientId = request.getParameter("patientId"); 
     75                                        String description = request.getParameter("description"); 
    7676                                         
    7777                                        PatientService patientService = Context.getPatientService(); 
     
    8181                                                } 
    8282                                                 
    83                                                  
    8483                                                //Here's where you get the right ConceptComplex 
    8584                                                String conceptName = Context.getAdministrationService().getGlobalProperty("personportrait.person_portrait_concept"); 
    86                                                 Concept conceptTmp = Context.getConceptService().getConcept(conceptName); 
    87                                                 ConceptComplex concept = Context.getConceptService().getConceptComplex(conceptTmp.getConceptId()); 
    88                                                  
     85                                                Concept concept = Context.getConceptService().getConcept(conceptName); 
     86                                        //      ConceptComplex conceptComplex = Context.getConceptService().getConceptComplex(concept.getConceptId()); 
     87                                                 
     88                                        //      sos.println("conceptName = "+conceptName); 
     89                                        //      sos.println("concept = "+concept.getConceptId()); 
     90                                        //      sos.println("Description = "+description); 
     91                                        //      sos.println("conceptComplex = "+conceptComplex.getConceptId()); 
    8992                                                 
    9093                                                // Create an obs object and add required fields 
     
    101104                                obsImage.setLocation(location); 
    102105                                obsImage.setVoided(false); 
     106                                obsImage.setComment(description); 
    103107                                                 
    104108                                                // Create a ComplexData to store the object 
     
    106110                                 
    107111                                                obsImage.setComplexData(dataImage); 
    108  
    109                                                 Context.getObsService().createObs((Obs) obsImage); 
    110  
    111                                                  
    112                                                  
     112                                                 
     113                                                imagePersonHandler.saveObs(obsImage); 
     114 
     115                                                Context.getObsService().createObs((Obs)obsImage); 
     116 
    113117                                        uploadedStream.close(); 
    114                                          
    115                                         //I don't think you need these: 
    116                                         //obsImage = imagePersonHandler.getObs(obsImage); 
    117                                         //getImage(obsImage, response); 
    118118                                } 
    119119                                else { 
  • openmrs-modules/personportrait/web/src/org/openmrs/module/personportrait/web/ImagePersonHandler.java

    r5406 r5452  
    3131import org.openmrs.obs.ComplexData; 
    3232import org.openmrs.obs.ComplexObsHandler; 
    33 import org.openmrs.obs.handler.ImageHandler; 
    3433import org.openmrs.util.OpenmrsUtil; 
    35 import org.openmrs.web.WebConstants; 
    36 import org.springframework.web.util.WebUtils; 
    3734 
    3835/** 
     
    10097                String mime = (titles.length < 2) ? titles[0] 
    10198                        : titles[titles.length - 1]; 
    102                 String MIME = mimes.contains(mime) ? mime : ImageHandler.MIME; 
     99                String MIME = mimes.contains(mime) ? mime : ImagePersonHandler.MIME; 
    103100                String title = obs.getComplexData().getTitle().replace("." + MIME, ""); 
    104101 
     
    152149 
    153150        public Obs getObs(Obs obs) { 
    154                 File file = ImageHandler.getComplexDataFile(obs); 
     151                File file = ImagePersonHandler.getComplexDataFile(obs); 
    155152                System.out.println("getObs: " + obs.getValueComplex()); 
    156153                System.out.println("getObs: " + file.getAbsolutePath()); 
     
    174171         */ 
    175172        public boolean purgeComplexData(Obs obs) { 
    176                 File file = ImageHandler.getComplexDataFile(obs); 
     173                File file = ImagePersonHandler.getComplexDataFile(obs); 
    177174                if (file.exists() && file.delete()) { 
    178175                        obs.setComplexData(null); 
  • openmrs-modules/personportrait/web/src/org/openmrs/module/personportrait/web/ViewImageServlet.java

    r5406 r5452  
    11package org.openmrs.module.personportrait.web; 
    22 
     3import java.awt.image.BufferedImage; 
    34import java.io.File; 
    45import java.io.FileInputStream; 
    56import java.io.IOException; 
    67import java.io.InputStream; 
     8import java.text.DateFormat; 
     9import java.util.ArrayList; 
     10import java.util.Calendar; 
     11import java.util.Date; 
    712import java.util.Iterator; 
    813import java.util.List; 
    914 
     15import javax.imageio.ImageIO; 
    1016import javax.servlet.ServletException; 
    1117import javax.servlet.ServletOutputStream; 
     
    1723import org.apache.commons.logging.Log; 
    1824import org.apache.commons.logging.LogFactory; 
     25import org.openmrs.Concept; 
    1926import org.openmrs.Obs; 
     27import org.openmrs.Patient; 
    2028import org.openmrs.Person; 
    2129import org.openmrs.api.ObsService; 
    2230import org.openmrs.api.context.Context; 
     31import org.openmrs.module.personportrait.PortraitProperties; 
    2332import org.openmrs.util.OpenmrsUtil; 
    2433import org.openmrs.web.WebConstants; 
     
    3241        private static final DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); 
    3342 
    34         @Override 
    3543        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
    36                 ImagePersonHandler imagePersonHandler = new ImagePersonHandler(); 
     44                HttpSession httpSession = request.getSession(); 
     45         
     46                String operation = request.getParameter("operation"); 
     47                if (operation != null & operation.equals("DELETE_PORTRAIT")) { 
     48                        String patientId = request.getParameter("patientId"); 
     49                        String obsPortraitId = request.getParameter("obsId"); 
     50                        deletePortrait(patientId, obsPortraitId); 
     51                }        
     52        } 
     53                 
     54        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
    3755                HttpSession httpSession = request.getSession(); 
    3856                ServletOutputStream outputStream = response.getOutputStream(); 
    3957                 
    40                 String imageObsId = request.getParameter("obsId"); 
    41                 outputStream.println("Images"); 
    42                 if (imageObsId == null) { 
    43                         return; 
     58                String obsPortraitId = null; 
     59                String operation = request.getParameter("operation"); 
     60                if (operation != null & operation.equals("SHOW_PORTRAIT")) { 
     61                        obsPortraitId = request.getParameter("obsId"); 
     62                        if (obsPortraitId == null || obsPortraitId.length()==0) { 
     63                                httpSession.setAttribute(WebConstants.OPENMRS_ERROR_ATTR, "This Person Has No Portrait."); 
     64                    return; 
     65                } 
     66                 
     67                        ObsService service = Context.getObsService(); 
     68                        Obs complexObs = service.getObs(Integer.valueOf(obsPortraitId)); 
     69                 
     70                        loadImage(complexObs, outputStream); 
    4471                } 
    45                 outputStream.println("imageObsId : "+imageObsId); 
    46                  
    47                 /* 
    48                 String patientId = request.getParameter("patientId"); 
    49                 if (patientId == null) { 
    50                         return; 
    51                 } 
    52                 outputStream.println("patientId : "+patientId); 
    53                  
    54                 ObsService service = Context.getObsService(); 
    55                 List<Obs> listComplexObs = service.getAllComplexObs(); 
    56                 if (listComplexObs == null || listComplexObs.isEmpty()) { 
    57                         return; 
    58                 } 
    59                  
    60                 Iterator obsIt = listComplexObs.iterator(); 
    61                 while (obsIt.hasNext()) { 
    62                         Obs obs = (Obs)obsIt.next(); 
    63                         if (obs != null) { 
    64                                 Person patient = obs.getPerson(); 
    65                                 if (patient.getPersonId().equals(Integer.valueOf(patientId))) { 
    66                                         Obs obsTemp = imagePersonHandler.getObs(obs); 
    67                                         getImage(obsTemp, outputStream); 
    68                                 } 
    69                         } 
    70                 } 
    71                 */ 
    7272        } 
    73                 
    74         public void getImage(Obs complexObs, ServletOutputStream outputStream) throws ServletException, IOException { 
     73         
     74        public void loadImage(Obs complexObs, ServletOutputStream outputStream) throws ServletException, IOException { 
    7575         
    7676        String[] valComplex = complexObs.getValueComplex().split("\\|"); 
     
    9999        } 
    100100         
    101         public void findMostRecentPortrait () { 
     101        public String findMostRecentPortrait(String patientId) { 
     102                String mostRecentPortraitID = null; 
     103                Date mostRecentDate = null; 
     104                Date tempDate = null; 
    102105                 
    103         } 
    104  
    105         // for testing 
    106         @Override 
    107         protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
    108                 ServletOutputStream out = response.getOutputStream(); 
    109                 response.setStatus(HttpServletResponse.SC_BAD_REQUEST); 
    110                 out.print("<html><head>Invalid Response</head></html>"); 
     106                Person person = Context.getPersonService().getPerson(Integer.valueOf(patientId)); 
     107                if (person == null) 
     108                    throw new RuntimeException("Unable to load person from request"); 
     109                 
     110                String conceptName = Context.getAdministrationService().getGlobalProperty("personportrait.person_portrait_concept"); 
     111        Concept concept = Context.getConceptService().getConcept(conceptName); 
     112         
     113        List<Obs> obsList = Context.getObsService().getObservationsByPerson(person); 
     114        if (obsList == null & obsList.isEmpty()) 
     115                return null; 
     116         
     117        boolean isFirst = true; 
     118        for (Obs obs:obsList){ 
     119            if (obs.isComplex() && obs.getConcept().getConceptId() == concept.getConceptId()) { 
     120                if (isFirst) { 
     121                        mostRecentDate = obs.getDateCreated(); 
     122                        mostRecentPortraitID = ""+obs.getObsId(); 
     123                        isFirst = false; 
     124                } 
     125                else { 
     126                        tempDate = obs.getDateCreated(); 
     127                        if (mostRecentDate.before(tempDate)) { 
     128                                mostRecentPortraitID = ""+obs.getObsId(); 
     129                        } 
     130                } 
     131            } 
     132        } 
     133                 
     134                return mostRecentPortraitID; 
    111135        } 
    112136         
     137        public void deletePortrait(String patientId, String obsPortraitId) { 
     138                ImagePersonHandler imagePersonHandler = new ImagePersonHandler(); 
     139                 
     140                Person person = Context.getPersonService().getPerson(Integer.valueOf(patientId)); 
     141                if (person == null) 
     142                    throw new RuntimeException("Unable to load person from request"); 
     143                 
     144                String conceptName = Context.getAdministrationService().getGlobalProperty("personportrait.person_portrait_concept"); 
     145        Concept concept = Context.getConceptService().getConcept(conceptName); 
     146         
     147        List<Obs> obsList = Context.getObsService().getObservationsByPerson(person); 
     148        if (obsList == null & obsList.isEmpty()) 
     149                return; 
     150         
     151        for (Obs obs:obsList){ 
     152            if (obs.isComplex() && obs.getConcept().getConceptId() == concept.getConceptId()) { 
     153                Integer obsIdTemp = obs.getObsId(); 
     154                if (obsIdTemp == Integer.parseInt(obsPortraitId)) { 
     155                        imagePersonHandler.purgeComplexData(obs); 
     156                        Context.getObsService().purgeObs(obs); 
     157                } 
     158            } 
     159        } 
     160        } 
    113161} 
    114162 
  • openmrs-modules/personportrait/web/src/org/openmrs/module/personportrait/web/controller/PortraitPortletController.java

    r5407 r5452  
    1818import java.io.IOException; 
    1919import java.io.InputStream; 
     20import java.text.DateFormat; 
    2021import java.util.ArrayList; 
    2122import java.util.Collection; 
     23import java.util.Date; 
    2224import java.util.HashMap; 
    2325import java.util.Iterator; 
     
    3941import org.openmrs.api.ObsService; 
    4042import org.openmrs.api.context.Context; 
     43import org.openmrs.module.personportrait.PortraitProperties; 
    4144import org.openmrs.module.personportrait.web.ImagePersonHandler; 
    4245import org.openmrs.util.OpenmrsUtil; 
     
    4649public class PortraitPortletController extends PortletController { 
    4750         
    48         @SuppressWarnings("unchecked") 
    4951        protected void populateModel(HttpServletRequest request, Map<String, Object> model) { 
    5052             
    5153            //remove this when finished coding: 
    5254            log.info("Hitting PortraitPortletController"); 
    53              
    54                 List listPersonObs = new ArrayList(); 
    55                 Person person = (Person) model.get("person"); 
     55            Patient patient = null; 
     56                List listPortraits = new ArrayList(); 
     57                Person person = (Person)model.get("person"); 
    5658                if (person == null){ 
    57                     Patient p = (Patient) model.get("patient"); 
    58                     person = Context.getPersonService().getPerson(p.getPatientId()); 
     59                    patient = (Patient) model.get("patient"); 
     60                    person = Context.getPersonService().getPerson(patient.getPatientId()); 
    5961                } 
    6062                if (person == null) 
     
    6567         
    6668        List<Obs> oList = Context.getObsService().getObservationsByPerson(person); 
    67         for (Obs o:oList){ 
    68             if (o.isComplex() && o.getConcept().getConceptId() == concept.getConceptId()) 
    69             listPersonObs.add(o); 
     69        for (Obs obs:oList){ 
     70            if (obs.isComplex() && obs.getConcept().getConceptId() == concept.getConceptId()) { 
     71                PortraitProperties portraitProperties = new PortraitProperties(); 
     72                 
     73                portraitProperties.setObsId(obs.getObsId()); 
     74                 
     75                Date date = obs.getDateCreated(); 
     76                String dateString = DateFormat.getDateInstance().format(date); 
     77                portraitProperties.setDateCreated(dateString); 
     78                 
     79                String timeString = DateFormat.getTimeInstance().format(date); 
     80                portraitProperties.setTimeCreated(timeString); 
     81                 
     82                portraitProperties.setDescription(obs.getComment()); 
     83                 
     84                listPortraits.add(portraitProperties); 
     85            } 
    7086        } 
     87        model.put("portraits", listPortraits); 
     88        // To remove when finished coding 
     89        log.info("This many portraits found: "+listPortraits.size()); 
    7190         
    72         //remove this when finished coding: 
    73         log.info("This many portraits found: " + listPersonObs.size()); 
     91        String recentPortraitID = findMostRecentPortrait(person.getPersonId()); 
     92        ObsService service = Context.getObsService(); 
     93        Obs recentObs = service.getObs(Integer.valueOf(recentPortraitID)); 
    7494         
    75         model.put("portraits", listPersonObs); 
     95        PortraitProperties portraitProperties = new PortraitProperties(); 
     96        portraitProperties.setObsId(recentObs.getObsId()); 
     97         
     98        Date date = recentObs.getDateCreated(); 
     99        String dateString = DateFormat.getDateInstance().format(date); 
     100        portraitProperties.setDateCreated(dateString); 
     101         
     102        String timeString = DateFormat.getTimeInstance().format(date); 
     103        portraitProperties.setTimeCreated(timeString); 
     104         
     105        portraitProperties.setDescription(recentObs.getComment()); 
     106         
     107        model.put("recentPortrait", portraitProperties); 
     108          
     109        model.put("deletePortrait", "DELETE_PORTRAIT"); 
     110        model.put("allPortraits", "NO"); 
     111        } 
     112         
     113        public String findMostRecentPortrait(Integer patientId) { 
     114                String mostRecentPortraitID = null; 
     115                Date mostRecentDate = null; 
     116                Date tempDate = null; 
     117                 
     118                Person person = Context.getPersonService().getPerson(patientId); 
     119                if (person == null) 
     120                    throw new RuntimeException("Unable to load person from request"); 
     121                 
     122                String conceptName = Context.getAdministrationService().getGlobalProperty("personportrait.person_portrait_concept"); 
     123        Concept concept = Context.getConceptService().getConcept(conceptName); 
     124         
     125        List<Obs> obsList = Context.getObsService().getObservationsByPerson(person); 
     126        if (obsList == null & obsList.isEmpty()) 
     127                return null; 
     128         
     129        boolean isFirst = true; 
     130        for (Obs obs:obsList){ 
     131            if (obs.isComplex() && obs.getConcept().getConceptId() == concept.getConceptId()) { 
     132                if (isFirst) { 
     133                        mostRecentDate = obs.getDateCreated(); 
     134                        mostRecentPortraitID = ""+obs.getObsId(); 
     135                        isFirst = false; 
     136                } 
     137                else { 
     138                        tempDate = obs.getDateCreated(); 
     139                        if (mostRecentDate.before(tempDate)) { 
     140                                mostRecentPortraitID = ""+obs.getObsId(); 
     141                        } 
     142                } 
     143            } 
     144        } 
     145                 
     146                return mostRecentPortraitID; 
    76147        } 
    77148         
     
    93164        return imageFile; 
    94165        } 
    95  
    96  
    97166}