Desarrollo
Para iniciar el desarrollo de nuestro administrador de consultas. Abrimos nuestro eclipse y creamos un proyecto maven.File->New->MavenProjectSeleccionamos en Create a simple project y presionamos Next
LLenamos los siguientes campos y presionamos Finish:
- Group Id: mx.com.tutosoftware.medicalconsulting
- Artifact Id: medicalconsulting
- Packaging: war
- Name: Medical Consulting
Una vez generado nuestro proyecto maven nos vamos al archivo pom.xml y pegamos el siguiente código esto, para poder compilar con java 1.8.
<build> <plugins> <plugin> <artifactId>maven-compiler-plugin</artifactId> <version>3.3</version> <configuration> <source>1.8</source> <target>1.8</target> </configuration> </plugin> </plugins> </build>
Nos marcara un error que no encuentra el archivo web.xml pero lo solucionaremos de la siguiente manera, hacemos clic derecho en el proyecto y selecionamos Properties
Selecionamos Project Facets en el recuadro seleccionamos Dynamic Web Module 3.1 y Java Server Faces 2.2 y presionamos Apply posterriormente OK
Creamos una carpeta en src/main/webapp llamada WEB-INF.Nota:Si tienes eclipse 2019 te genera el archivo web.xml modificalo por el que esta en el código y luego maven->Update Project...
En el directorio WEB-INF creamos el archivo web.xml y escribimos lo siguiente:
<?xml version="1.0" encoding="UTF-8"?> <web-app version="3.1" xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"> <display-name>medicalconsulting</display-name> <absolute-ordering /> <!-- load spring configuration --> <context-param> <param-name>contextConfigLocation</param-name> <param-value>/WEB-INF/spring-config.xml</param-value> </context-param> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener> <context-param> <param-name>javax.faces.PROJECT_STAGE</param-name> <param-value>Development</param-value> </context-param> <context-param> <param-name>primefaces.THEME</param-name> <param-value>blitzer</param-value> </context-param> <servlet> <servlet-name>Faces Servlet</servlet-name> <servlet-class>javax.faces.webapp.FacesServlet</servlet-class> <load-on-startup>1</load-on-startup> </servlet> <servlet-mapping> <servlet-name>Faces Servlet</servlet-name> <url-pattern>/faces/*</url-pattern> </servlet-mapping> <session-config> <session-timeout>30</session-timeout> </session-config> <welcome-file-list> <welcome-file>faces/index.xhtml</welcome-file> </welcome-file-list> </web-app>
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xmlns:mongo="http://www.springframework.org/schema/data/mongo" xsi:schemaLocation="http://www.springframework.org/schema/context https://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/data/mongo https://www.springframework.org/schema/data/mongo/spring-mongo-2.0.xsd http://www.springframework.org/schema/beans https://www.springframework.org/schema/beans/spring-beans.xsd"> <context:annotation-config /> <context:component-scan base-package=">mx.com.tutosoftware.medicalconsulting" /> <mongo:mongo-client host="127.0.0.1" port="27017"> <mongo:client-options write-concern="NORMAL" /> </mongo:mongo-client> <mongo:db-factory dbname="medicaldb" mongo-ref="mongoClient" /> <mongo:repositories base-package="mx.com.tutosoftware.medicalconsulting.repository"> </mongo:repositories> <bean id="mongoTemplate" class="org.springframework.data.mongodb.core.MongoTemplate" > <constructor-arg ref="mongoClient"> </constructor-arg> <constructor-arg name="databaseName" value="medicaldb" > </constructor-arg> </bean> <bean class="org.springframework.context.annotation.CommonAnnotationBeanPostProcessor" /> <bean class="mx.com.tutosoftware.medicalconsulting.service.ProfesionalService" id="profesionalService"/> <bean class="mx.com.tutosoftware.medicalconsulting.service.PacienteService" id="pacienteService"/> <bean class="mx.com.tutosoftware.medicalconsulting.service.TurnoService" id="turnoService"/> <bean class="mx.com.tutosoftware.medicalconsulting.service.CitaService" id="citaService"/> </beans>
<?xml version="1.0" encoding="UTF-8"?> <faces-config xmlns="http://xmlns.jcp.org/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-facesconfig_2_2.xsd" version="2.2"> <application> <el-resolver> org.springframework.web.jsf.el.SpringBeanFacesELResolver </el-resolver> </application> <navigation-rule> <from-view-id> /index.xhtml </from-view-id> <navigation-case> <from-outcome> adminMedico </from-outcome> <to-view-id> /adminMedico.xhtml </to-view-id> </navigation-case> <navigation-case> <from-outcome> adminPaciente </from-outcome> <to-view-id> /adminPaciente.xhtml </to-view-id> </navigation-case> </navigation-rule> </faces-config>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>mx.com.tutosoftware.medicalconsulting</groupId> <artifactId>medicalconsulting</artifactId> <version>0.0.1-SNAPSHOT</version> <packaging>war</packaging> <repositories> <repository> <id>prime-repo</id> <name>PrimeFaces Maven Repository</name> <url>http://repository.primefaces.org/</url> <layout>default</layout> </repository> </repositories> <properties> <csc.version>0.0.1-SNAPSHOT</csc.version> <primefacestheme.version>1.0.10</primefacestheme.version> <primefaces.version>7.0</primefaces.version> <springdata.version>2.0.8.RELEASE</springdata.version> <spring.version>5.0.7.RELEASE</spring.version> <jsf2.version>2.2.10</jsf2.version> <jackson-core.version>2.9.5</jackson-core.version> <jstl.version>1.2</jstl.version> <jsp-api.version>2.1</jsp-api.version> <servlet-api.version>3.1.0</servlet-api.version> <itext.version>2.1.7</itext.version> <poi.version>3.17</poi.version> <elri.version>1.0</elri.version> <javaeewebapi.version>7.0</javaeewebapi.version> </properties> <dependencies> <!-- Spring and Transactions --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-core</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-webmvc</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-web</artifactId> <version>5.0.7.RELEASE</version> <exclusions> <exclusion> <artifactId>commons-logging</artifactId> <groupId>commons-logging</groupId> </exclusion> </exclusions> </dependency> <!-- Spring ORM support --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>${spring.version}</version> </dependency> <!-- mongo --> <dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-mongodb</artifactId> <version>${springdata.version}</version> </dependency> <dependency> <groupId>com.fasterxml.jackson.core</groupId> <artifactId>jackson-databind</artifactId> <version>${jackson-core.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-beans</artifactId> <version>${spring.version}</version> </dependency> <dependency> <groupId>com.sun.faces</groupId> <artifactId>jsf-api</artifactId> <version>${jsf2.version}</version> </dependency> <dependency> <groupId>com.sun.faces</groupId> <artifactId>jsf-impl</artifactId> <version>${jsf2.version}</version> </dependency> <dependency> <groupId>javax.servlet.jsp</groupId> <artifactId>jsp-api</artifactId> <version>${jsp-api.version}</version> <scope>provided</scope> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>${servlet-api.version}</version> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> <version>${jstl.version}</version> </dependency> <dependency> <groupId>com.sun.el</groupId> <artifactId>el-ri</artifactId> <version>${elri.version}</version> </dependency> <dependency> <groupId>javax</groupId> <artifactId>javaee-web-api</artifactId> <version>${javaeewebapi.version}</version> <scope>provided</scope> </dependency> <dependency> <groupId>org.primefaces</groupId> <artifactId>primefaces</artifactId> <version>${primefaces.version}</version> </dependency> <dependency> <groupId>org.primefaces.themes</groupId> <artifactId>all-themes</artifactId> <version>${primefacestheme.version}</version> </dependency> <dependency> <groupId>com.lowagie</groupId> <artifactId>itext</artifactId> <version>${itext.version}</version> </dependency> <!-- https://mvnrepository.com/artifact/org.apache.poi/poi --> <dependency> <groupId>org.apache.poi</groupId> <artifactId>poi</artifactId> <version>${poi.version}</version> </dependency> </dependencies> <build> <plugins> <plugin> <artifactId>maven-compiler-plugin</artifactId> <version>3.3</version> <configuration> <source>1.8</source> <target>1.8</target> </configuration> </plugin> </plugins> </build> </project>
package mx.com.tutosoftware.medicalconsulting.domain; import org.springframework.data.mongodb.core.mapping.Document; @Document public class Domicilio { private String calle; private String numero; private String colonia; private String municipio; private String estado; private String codigoPostal; public String getCalle() { return calle; } public void setCalle(String calle) { this.calle = calle; } public String getNumero() { return numero; } public void setNumero(String numero) { this.numero = numero; } public String getColonia() { return colonia; } public void setColonia(String colonia) { this.colonia = colonia; } public String getMunicipio() { return municipio; } public void setMunicipio(String municipio) { this.municipio = municipio; } public String getEstado() { return estado; } public void setEstado(String estado) { this.estado = estado; } public String getCodigoPostal() { return codigoPostal; } public void setCodigoPostal(String codigoPostal) { this.codigoPostal = codigoPostal; } }
package mx.com.tutosoftware.medicalconsulting.domain; import org.springframework.data.mongodb.core.mapping.Document; @Document(collection="profesional") public class Profesional { //Esta clave depende del pais donde sea implmentada //La aplicación private String dni; private String nombre; private String apellidoPaterno; private String apellidoMaterno; //el correo va hacer el usuario para loguearse private String mail; private String telefono; private String password; private Domicilio domicilio; public String getDni() { return dni; } public void setDni(String dni) { this.dni = dni; } public String getNombre() { return nombre; } public void setNombre(String nombre) { this.nombre = nombre; } public String getApellidoPaterno() { return apellidoPaterno; } public void setApellidoPaterno(String apellidoPaterno) { this.apellidoPaterno = apellidoPaterno; } public String getApellidoMaterno() { return apellidoMaterno; } public void setApellidoMaterno(String apellidoMaterno) { this.apellidoMaterno = apellidoMaterno; } public String getMail() { return mail; } public void setMail(String mail) { this.mail = mail; } public String getTelefono() { return telefono; } public void setTelefono(String telefono) { this.telefono = telefono; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public Domicilio getDomicilio() { return domicilio; } public void setDomicilio(Domicilio domicilio) { this.domicilio = domicilio; } }
package mx.com.tutosoftware.medicalconsulting.domain; import org.springframework.data.mongodb.core.mapping.Document; @Document(collection="paciente") public class Paciente { //Esta clave depende del pais donde sea implmentada //La aplicación private String dni; private String nombre; private String apellidoPaterno; private String apellidoMaterno; //el correo va hacer el usuario para loguearse private String mail; private String telefono; private String password; private Domicilio domicilio; public String getDni() { return dni; } public void setDni(String dni) { this.dni = dni; } public String getNombre() { return nombre; } public void setNombre(String nombre) { this.nombre = nombre; } public String getApellidoPaterno() { return apellidoPaterno; } public void setApellidoPaterno(String apellidoPaterno) { this.apellidoPaterno = apellidoPaterno; } public String getApellidoMaterno() { return apellidoMaterno; } public void setApellidoMaterno(String apellidoMaterno) { this.apellidoMaterno = apellidoMaterno; } public String getMail() { return mail; } public void setMail(String mail) { this.mail = mail; } public String getTelefono() { return telefono; } public void setTelefono(String telefono) { this.telefono = telefono; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } public Domicilio getDomicilio() { return domicilio; } public void setDomicilio(Domicilio domicilio) { this.domicilio = domicilio; } }
package mx.com.tutosoftware.medicalconsulting.domain; import java.util.Calendar; import java.util.Date; import java.util.TimeZone; import org.springframework.data.annotation.CreatedDate; import org.springframework.data.mongodb.core.mapping.Document; import org.springframework.format.annotation.DateTimeFormat; import org.springframework.format.annotation.DateTimeFormat.ISO; @Document(collection="turno") public class Turno { private String dni; @DateTimeFormat(iso = ISO.DATE_TIME) @CreatedDate private Date horarioInicio; @DateTimeFormat(iso = ISO.DATE_TIME) @CreatedDate private Date horarioFinal; private int duracionConsulta; public String getDni() { return dni; } public void setDni(String dni) { this.dni = dni; } public Date getHorarioInicio() { Calendar calendar = Calendar.getInstance(TimeZone.getTimeZone("UTC")); calendar.setTime(horarioInicio); return calendar.getTime(); } public void setHorarioInicio(Date horarioInicio) { this.horarioInicio = horarioInicio; } public Date getHorarioFinal() { Calendar calendar = Calendar.getInstance(TimeZone.getTimeZone("UTC")); calendar.setTime(horarioFinal); return calendar.getTime(); } public void setHorarioFinal(Date horarioFinal) { this.horarioFinal = horarioFinal; } public int getDuracionConsulta() { return duracionConsulta; } public void setDuracionConsulta(int duracionConsulta) { this.duracionConsulta = duracionConsulta; } }
package mx.com.tutosoftware.medicalconsulting.domain; import java.util.Date; import org.springframework.data.annotation.CreatedDate; import org.springframework.data.mongodb.core.mapping.Document; import org.springframework.format.annotation.DateTimeFormat; import org.springframework.format.annotation.DateTimeFormat.ISO; @Document(collection="cita") public class Cita { private String dni; @DateTimeFormat(iso = ISO.DATE_TIME) @CreatedDate private Date horario; private String nombrePaciente; private String status; public String getDni() { return dni; } public void setDni(String dni) { this.dni = dni; } public Date getHorario() { return horario; } public void setHorario(Date horario) { this.horario = horario; } public String getNombrePaciente() { return nombrePaciente; } public void setNombrePaciente(String nombrePaciente) { this.nombrePaciente = nombrePaciente; } public String getStatus() { return status; } public void setStatus(String status) { this.status = status; } }