Downloads Documentation Community Contribute Demo






Show Sidebar
Login | Register

Changeset 5406

Show
Ignore:
Timestamp:
08/29/08 18:41:06 (3 months ago)
Author:
mhdiallo
Message:

Person Portrait Module - Added a method for retrieving a complex-obs and its associated ComplexData in the class FormImageUploadServlet.java. The ComplexData contains the image, which is stored in the file system.

Files:

Legend:

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

    r5282 r5406  
    3737     
    3838    <globalProperty> 
    39        <property>@MODULE_ID@.complex_obs_dir</property> 
     39       <property>@MODULE_ID@obs.complex_obs_dir</property> 
    4040       <defaultValue>/Library/Tomcat/apache-tomcat-6.0.16/webapps/openmrs</defaultValue> 
    4141       <description> 
     
    5151        </servlet> 
    5252        <servlet> 
    53                 <servlet-name>viewPersonImage</servlet-name> 
     53                <servlet-name>formShowImages</servlet-name> 
    5454                <servlet-class>@MODULE_PACKAGE@.web.ViewImageServlet</servlet-class> 
    5555        </servlet> 
    5656        <!-- /Servlets --> 
    5757     
    58     <!-- 
    59     <dwr> 
    60         <allow> 
    61                 <create creator="new" javascript="PersonPortraitDWRService"> 
    62                 <param name="class" value="org.openmrs.module.personportrait.web.dwr.PersonPortraitDWRService"/> 
    63                 <include method="uploadImage"/> 
    64             </create> 
    65         </allow>     
    66                 <signatures> 
    67                         <![CDATA[  ]]> 
    68                 </signatures>         
    69         </dwr> 
    70     --> 
    71      
    72     <!-- Required Privileges  
    73         <privilege> 
    74                 <name>PersonPortrait</name> 
    75                 <description>Allows user to access Form Entry pages/functions</description> 
    76         </privilege> --> 
    77          
    78     <!-- AOP 
    79         <advice> 
    80                 <point>org.openmrs.api.FormService</point> 
    81                 <class>@MODULE_PACKAGE@.advice.DuplicateFormAdvisor</class> 
    82         </advice> 
    83          /AOP --> 
    84           
    85         <!-- 
    86         <dwr> 
    87                 <allow> 
    88                         <create creator="new" javascript="DWRFormEntryService"> 
    89                                 <param name="class" value="org.openmrs.module.@MODULE_ID@.web.DWRFormEntryService"/> 
    90                                 <include method="enterForm"/> 
    91                         </create> 
    92                 </allow> 
    93  
    94                 <signatures> 
    95                         <![CDATA[ 
    96                         import @MODULE_PACKAGE@.web.DWRFormEntryService; 
    97                         DWRFormEntryService.enterForm(Integer patientId, Integer formId, boolean useEncounter, List<String> fields); 
    98                         ]]> 
    99                 </signatures>    
    100         </dwr> 
    101         --> 
    102          
    103         <!-- Servlets --> 
    104         <!-- Accessed through the url /pageContext()/moduleServlet/<moduleId>/<servlet-name>  
    105         <servlet> 
    106                 <servlet-name>formDownload</servlet-name> 
    107                 <servlet-class>@MODULE_PACKAGE@.web.FormDownloadServlet</servlet-class> 
    108         </servlet> 
    109         --> 
    110         <!-- /Servlets --> 
    111          
    112          
    11358        <!-- Internationalization --> 
    11459        <!-- All message codes should start with @MODULE_ID@.* --> 
  • openmrs-modules/personportrait/metadata/moduleApplicationContext.xml

    r5282 r5406  
    88        <property name="mappings"> 
    99            <props> 
    10                    <prop key="module/@MODULE_ID@/portlets/personPortraitDashboardPortlet">personPortraitDashboardController</prop> 
     10                   <prop key="module/@MODULE_ID@/portlets/personPortraitDashboardPortlet">personPortraitPortletController</prop> 
    1111                </props> 
    1212                </property> 
     
    1515    <!-- Controllers --> 
    1616     
    17     <bean id="personPortraitDashboardController" class="@MODULE_PACKAGE@.web.controller.PersonPortraitFormController"> 
    18                 <property name="commandName"><value>personPortrait</value></property> 
    19                 <property name="formView"><value>/module/@MODULE_ID@/portlets/personPortraitDashboardPortlet</value></property> 
    20                 <property name="successView"><value>/module/@MODULE_ID@/portlets/personPortraitDashboardPortlet</value></property> 
    21     </bean> 
     17    <bean id="personPortraitPortletController" class="@MODULE_PACKAGE@.web.controller.PortraitPortletController"/> 
    2218     
    2319    <bean parent="obsServiceTarget" > 
  • openmrs-modules/personportrait/web/module/portlets/personPortraitDashboardPortlet.jsp

    r5282 r5406  
    1111                $(document).ready(function() {  
    1212                    var options = {  
    13                         target:        '#imagePreview', // target element(s) to be updated with server response  
    14                         beforeSubmit:  showRequest,     // pre-submit callback  
    15                         success:       showResponse     // post-submit callback  
     13                        target:        '#recentPortraitViewBox', // target element(s) to be updated with server response  
     14                        beforeSubmit:  showRequest,                     // pre-submit callback  
     15                        success:       showResponse                     // post-submit callback  
    1616                                 
    1717                        // other available options:  
     
    6767                function uploadPersonImage() { 
    6868                        alert("The image is loadeding..."); 
    69                         var fvalue = $('#imageFile').val(); 
     69                        var fvalue = $('#recentPortraitViewBox').val(); 
    7070                        var img = new Image(); 
    7171                        img.src = fvalue; 
    72                         $("#imagePreview").val(img); 
     72                        $("#recentPortraitViewBox").val(img); 
    7373                   
    7474                        alert("The image is loaded"); 
     
    9090                        <input type="file" id="imageFile" name="imageFile"/> 
    9191                        <br><br> 
     92                        <label>Portrait Date: </label> 
     93                        <input type="text" id="portraitDate" name="portraitDate"/> 
     94                        <br><br> 
    9295                        <label>Description: </label> 
    93                         <textarea rows="5" cols="50" id="imageDescription"></textarea> 
     96                        <textarea rows="3" cols="60" id="imageDescription"></textarea> 
    9497                        <br><br> 
    95                         <input type="hidden" name="returnPage" value="${pageContext.request.contextPath}/patientDashboard.form?patientId=${model.patientId}"/> 
    96                         <input type="submit" name='Upload' value="Upload Portrait" > 
     98                        <input type="submit" name='Upload' value="Upload Portrait"> 
    9799                </form> 
    98100                <br><br> 
    99                 <button type="button">Show All Portraits</button> 
     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> 
    100107        </div> 
    101108         
    102         <div id="personPortraitViewBoxHeader" class="boxHeader${model.patientVariation}"> 
     109        <div id="recentPortraitViewBoxHeader" class="boxHeader${model.patientVariation}"> 
    103110                <spring:message code="personportrait.portrait.view" /> 
    104111        </div> 
    105112         
    106         <div id="personPortraitViewBox" class="box${model.patientVariation}"> 
    107                 <img src="${pageContext.request.contextPath}/me.png"> 
     113        <div id="recentPortraitViewBox" class="box${model.patientVariation}"> 
     114                <img src="${pageContext.request.contextPath}/moduleServlet/personportrait/formImageUpload?patientId=${param.patientId}"> 
    108115        </div> 
    109116         
    110         <div id="imagePreview"> 
    111                  
     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> 
     128                </table> 
    112129        </div> 
    113          
    114130  </body> 
    115131</html> 
  • openmrs-modules/personportrait/web/src/org/openmrs/module/personportrait/web/FormImageUploadServlet.java

    r5282 r5406  
    33import java.awt.image.BufferedImage; 
    44import java.io.File; 
     5import java.io.FileInputStream; 
    56import java.io.IOException; 
    67import java.io.InputStream; 
     
    3435import org.openmrs.obs.ComplexData; 
    3536import org.openmrs.obs.handler.ImageHandler; 
     37import org.openmrs.util.OpenmrsUtil; 
    3638import org.openmrs.web.WebConstants; 
    3739 
     
    5052                 
    5153                imagePersonHandler = new ImagePersonHandler(); 
    52                  
    53                 loadImage(request, response); 
    54                  
    55                 ServletOutputStream out = response.getOutputStream(); 
    5654                HttpSession httpSession = request.getSession(); 
    5755                 
     
    6159                try { 
    6260                        List items = upload.parseRequest(request); 
    63                         Iterator iter = items.iterator(); 
    64                         while (iter.hasNext()) { 
    65                             FileItem item = (FileItem) iter.next(); 
     61                        Iterator it = items.iterator(); 
     62                        while (it.hasNext()) { 
     63                            FileItem item = (FileItem) it.next(); 
    6664                            if (!item.isFormField()) { 
    6765                                String fileName = item.getName(); 
    6866                                String fileType = item.getContentType(); 
    6967                                 
    70                            //   out.print("\nFile Name: "+fileName); 
     68                           //   System.out.println("File Name: "+fileName); 
    7169                                 
    7270                                if(fileType.equals("image/png") || fileType.equals("image/gif") ||  
     
    7573                                        InputStream uploadedStream = item.getInputStream(); 
    7674                                        BufferedImage bufferedImage = ImageIO.read(uploadedStream); 
    77                                          
    78                             //          OpenmrsUtil.copyFile(uploadedStream, response.getOutputStream()); 
    79                                          
     75                                                 
    8076                                        String patientId = request.getParameter("patientId"); 
    81                                        out.print("\npatientId : "+patientId); 
    82                                         
     77                           //          System.out.println("Patient Id: "+patientId); 
     78                                 
    8379                                        PatientService patientService = Context.getPatientService(); 
    8480                                                Patient patient = patientService.getPatient(Integer.valueOf(patientId)); 
    8581                                                 
    8682                                                String conceptName = Context.getAdministrationService().getGlobalProperty("personportrait.person_portrait_concept"); 
    87                                                 out.print("\nconceptName : "+conceptName); 
    8883                                                Concept concept = Context.getConceptService().getConcept(conceptName); 
    89                                                 Integer conceptID = concept.getConceptId(); 
    90                                                 out.print("\nconceptID : "+conceptID); 
    91                                         //      ConceptComplex conceptComplex = new ConceptComplex(conceptID); 
    92                                         //      out.print("\nconceptComplex : "+conceptComplex.getConceptId()); 
    9384                                                 
    9485                                                // Create an obs object and add required fields 
     
    10899                                                obsImage.setComplexData(dataImage); 
    109100                                                 
    110                                                 //TODO: Need to persist the ComplexData using ComplexObsHandler 
    111                                                 imagePersonHandler.saveObs(obsImage); 
     101                                                //Persist the ComplexData using ComplexObsHandler 
     102                                                Obs obs = imagePersonHandler.saveObs(obsImage); 
    112103                                         
    113104                                                // Save the obs object 
    114105                                                Context.getObsService().createObs(obsImage); 
    115                                                 Integer id = obsImage.getObsId(); 
    116                                                 out.print("\nID 1 : "+id); 
    117                                                  
    118                                                 out.print("\nisComplexObs() : "+obsImage.isComplex()); 
    119                                                  
    120                                                 Obs obs = Context.getObsService().getObs(id); 
    121                                         out.print("\nID 2: "+obs.getObsId()); 
     106                                                 
     107                                        uploadedStream.close(); 
    122108                                         
    123                                         uploadedStream.close(); 
     109                                        obs = imagePersonHandler.getObs(obs); 
     110                                        getImage(obs, response); 
     111                                } 
     112                                else { 
     113                                        httpSession.setAttribute(WebConstants.OPENMRS_MSG_ATTR, "The type of the image is not correct."); 
    124114                                } 
    125115                            } 
     
    127117                } 
    128118                catch (Exception e) { 
    129                         out.print("\nError: "+e.getMessage()); 
    130                 } 
     119                        System.out.println("Error: "+e.getMessage()); 
     120                } 
     121        } 
     122         
     123        public void getImage(Obs complexObs, HttpServletResponse response) throws ServletException, IOException { 
     124         
     125        String[] complexValue = complexObs.getValueComplex().split("\\|"); 
     126        String imageUrl = (complexValue.length < 2) ? complexValue[0] : complexValue[complexValue.length-1]; 
     127     
     128        File imageFile = new File(imageUrl); 
     129        if (!imageFile.exists()) { 
     130            String fileName = imageFile.getName(); 
     131            File dir = OpenmrsUtil.getDirectoryInApplicationDataDirectory(Context.getAdministrationService().getGlobalProperty("obs.complex_obs_dir")); 
     132            imageFile = null; 
     133            imageFile = new File(dir, fileName ); 
     134 
     135        } 
     136        if (!imageFile.exists()) { 
     137                return; 
     138        } 
     139 
     140        InputStream inStream = null; 
     141        try { 
     142            inStream = new FileInputStream(imageFile); 
     143            OpenmrsUtil.copyFile(inStream, response.getOutputStream()); 
     144        } 
     145        finally { 
     146            if (inStream != null) 
     147                try { inStream.close(); } catch (Exception e) {} 
     148        } 
    131149        } 
    132150         
  • openmrs-modules/personportrait/web/src/org/openmrs/module/personportrait/web/ImagePersonHandler.java

    r5282 r5406  
    104104 
    105105                File dir = OpenmrsUtil.getDirectoryInApplicationDataDirectory(Context.getAdministrationService() 
    106                                                                                      .getGlobalProperty("personportrait.complex_obs_dir")); 
     106                                                                                     .getGlobalProperty("obs.complex_obs_dir")); 
    107107                File outputfile = null; 
    108108 
     
    203203                String filename = names.length < 2 ? names[0] : names[names.length - 1]; 
    204204                File dir = OpenmrsUtil.getDirectoryInApplicationDataDirectory(Context.getAdministrationService() 
    205                                                                                      .getGlobalProperty("personportrait.complex_obs_dir")); 
     205                                                                                     .getGlobalProperty("obs.complex_obs_dir")); 
    206206                return new File(dir, filename); 
    207207        } 
  • openmrs-modules/personportrait/web/src/org/openmrs/module/personportrait/web/ViewImageServlet.java

    r5282 r5406  
    11package org.openmrs.module.personportrait.web; 
    22 
    3 import java.awt.image.BufferedImage; 
    43import java.io.File; 
     4import java.io.FileInputStream; 
    55import java.io.IOException; 
    66import java.io.InputStream; 
    7 import java.util.Date; 
    87import java.util.Iterator; 
    98import java.util.List; 
    109 
    11 import javax.imageio.ImageIO; 
    1210import javax.servlet.ServletException; 
    1311import javax.servlet.ServletOutputStream; 
     
    1715import javax.servlet.http.HttpSession; 
    1816import javax.xml.parsers.DocumentBuilderFactory; 
    19 import org.apache.commons.fileupload.FileItem; 
    20 import org.apache.commons.fileupload.FileItemFactory; 
    21 import org.apache.commons.fileupload.disk.DiskFileItemFactory; 
    22 import org.apache.commons.fileupload.servlet.ServletFileUpload; 
    2317import org.apache.commons.logging.Log; 
    2418import org.apache.commons.logging.LogFactory; 
    25 import org.openmrs.Concept; 
    26 import org.openmrs.Location; 
    2719import org.openmrs.Obs; 
     20import org.openmrs.Person; 
    2821import org.openmrs.api.ObsService; 
    29 import org.openmrs.api.PatientService; 
    3022import org.openmrs.api.context.Context; 
    31 import org.openmrs.obs.ComplexData
     23import org.openmrs.util.OpenmrsUtil
    3224import org.openmrs.web.WebConstants; 
    3325 
     
    4234        @Override 
    4335        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
     36                ImagePersonHandler imagePersonHandler = new ImagePersonHandler(); 
     37                HttpSession httpSession = request.getSession(); 
     38                ServletOutputStream outputStream = response.getOutputStream(); 
    4439                 
    45                 ServletOutputStream out = response.getOutputStream(); 
    46                 HttpSession session = request.getSession(); 
    47                  
    48                 String patientId = request.getParameter("patientId"); 
    49                 out.print("\npatientId : "+patientId); 
    50                  
    51                 session.setAttribute(WebConstants.OPENMRS_MSG_ATTR, patientId); 
     40                String imageObsId = request.getParameter("obsId"); 
     41                outputStream.println("Images"); 
     42                if (imageObsId == null) { 
     43                        return; 
     44                } 
     45                outputStream.println("imageObsId : "+imageObsId); 
    5246                 
    5347                /* 
    54                 String obsId = request.getParameter("obsId"); 
    55         if (obsId == null || obsId.length()==0 ) { 
    56             session.setAttribute(WebConstants.OPENMRS_ERROR_ATTR, "error.null"); 
    57             return; 
     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                */ 
     72        } 
     73                 
     74        public void getImage(Obs complexObs, ServletOutputStream outputStream) throws ServletException, IOException { 
     75         
     76        String[] valComplex = complexObs.getValueComplex().split("\\|"); 
     77        String imageUrl = (valComplex.length < 2) ? valComplex[0] : valComplex[valComplex.length-1]; 
     78  
     79        File imageFile = new File(imageUrl); 
     80        if (!imageFile.exists()) { 
     81            String fileName = imageFile.getName(); 
     82            File imagePath = OpenmrsUtil.getDirectoryInApplicationDataDirectory(Context.getAdministrationService().getGlobalProperty("obs.complex_obs_dir")); 
     83            imageFile = null; 
     84            imageFile = new File(imagePath, fileName); 
    5885        } 
    59  
    60         ObsService service = Context.getObsService(); 
    61         Obs complexObs = service.getObs(Integer.valueOf(obsId)); 
    62         session.setAttribute(WebConstants.OPENMRS_ERROR_ATTR, complexObs.getObsId()); 
    63          
    64      // Extract the url from the Obs.valueComplex and create a file. 
    65         String[] valComplex = complexObs.getValueComplex().split("\\|"); 
    66         String url = (valComplex.length < 2) ? valComplex[0] : valComplex[valComplex.length-1]; 
    67         File file = new File(url); 
    68          
    69         String filename = response.encodeURL(url); 
    70         */ 
     86        if (!imageFile.exists()) { 
     87                return; 
     88        } 
     89   
     90        InputStream imageStream = null; 
     91        try { 
     92                imageStream = new FileInputStream(imageFile); 
     93            OpenmrsUtil.copyFile(imageStream, outputStream); 
     94        } 
     95        finally { 
     96            if (imageStream != null) 
     97                try { imageStream.close(); } catch (Exception e) {} 
     98        } 
     99        } 
     100         
     101        public void findMostRecentPortrait () { 
     102                 
    71103        } 
    72104 
  • openmrs-modules/personportrait/web/src/org/openmrs/module/personportrait/web/controller/PersonPortraitFormController.java

    r5132 r5406  
    7878                        Object obj, BindException errors) throws Exception { 
    7979         
    80                 HttpSession httpSession = request.getSession(); 
    81                 String view = getFormView(); 
    82                  
    83                 if (Context.isAuthenticated()) { 
    84                         Form form = null; 
    85                         try { 
    86                                 // handle image upload 
    87                                 if (request instanceof MultipartHttpServletRequest) { 
    88                                         MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest)request; 
    89                                         MultipartFile uploadedFile = multipartRequest.getFile("imageFile"); 
    90                                         if (uploadedFile != null && !uploadedFile.isEmpty()) { 
    91                                                  
    92                                                 String fileType = uploadedFile.getContentType(); 
    93                                                 // Make sure that the uploaded file is an image. 
    94                                                 if(fileType.equals("image/png") || fileType.equals("image/gif") ||  
    95                                                                 fileType.equals("image/jpeg")) { 
    96                                                         String fileName = uploadedFile.getOriginalFilename(); 
    97                                                         byte[] byteImage = uploadedFile.getBytes(); 
    98                                                  
    99                                                         //TODO: Check the size of the file 
    100                                                         long size = uploadedFile.getSize(); 
    101                                                          
    102                                                         // Read the image 
    103                                                         InputStream streamImage = multipartRequest.getInputStream(); 
    104                                                         BufferedImage bufferedImage = ImageIO.read(streamImage); 
    105                                                          
    106                                                 //      String msg = getMessageSourceAccessor().getMessage("Info", "Name: "+fileName+", Size: "+size+", Type: "+fileType); 
    107                                                 //      httpSession.setAttribute(WebConstants.OPENMRS_MSG_ATTR, msg); 
    108                                                          
    109                                 //                      String conceptName = Context.getAdministrationService().getGlobalProperty("personportrait.person_portrait_concept"); 
    110                                                          
    111                                         //              Concept concept = Context.getConceptService().getConcept(conceptName); 
    112                                                 //      Integer conceptID = concept.getConceptId(); 
    113                                                 //      ConceptComplex conceptComplex = Context.getConceptService().getConceptComplex(conceptID); 
    114                                          
    115                                                         // Create an obs object and add required fields 
    116                                                         Obs obsImage = new Obs(Integer.valueOf(111)); 
    117                                                 //      obsImage.setConcept(conceptComplex); 
    118                                                         obsImage.setDateCreated(new Date()); 
    119                                                         obsImage.setObsDatetime(new Date()); 
    120                                                          
    121                                                         // Create a ComplexData to store the object 
    122                                                         ComplexData dataImage = new ComplexData(fileName, bufferedImage); 
    123                                                 //      obsImage.setComplexData(dataImage); 
    124                                                          
    125                                                         //TODO: Need to persist the ComplexData using ComplexObsHandler 
    126                                                          
    127                                                         // Save the obs object 
    128                                                 //      Context.getObsService().createObs(obsImage); 
    129                                                          
    130                                                 //      String msg = getMessageSourceAccessor().getMessage("Info", "ID="+dataImage.getTitle()); 
    131                                     //  httpSession.setAttribute(WebConstants.OPENMRS_MSG_ATTR, msg); 
    132                                                          
    133                                                         return new ModelAndView(new RedirectView(getSuccessView())); 
    134                                                  } 
    135                                         } 
    136                                 } 
    137                         } 
    138                         catch (Exception e) { 
    139                                 log.error("Error while getting imageFile from request", e); 
    140                                 errors.reject(e.getMessage()); 
    141                                 httpSession.setAttribute(WebConstants.OPENMRS_ERROR_ATTR, e.getMessage()); 
    142                                 return showForm(request, response, errors); 
    143                         } 
    144                 } 
    14580                 
    14681                return showForm(request, response, errors);