package enefro.interop.provider; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import enefro.interop.SQL.PractitionerSQL; import enefro.interop.bean.PractitionerBean; import enefro.interop.util.OrganizationUtil; import ca.uhn.fhir.model.dstu2.composite.CodeableConceptDt; import ca.uhn.fhir.model.dstu2.composite.ContactPointDt; import ca.uhn.fhir.model.dstu2.composite.IdentifierDt; import ca.uhn.fhir.model.dstu2.resource.Organization; import ca.uhn.fhir.model.dstu2.resource.Practitioner; import ca.uhn.fhir.model.dstu2.valueset.AdministrativeGenderEnum; import ca.uhn.fhir.model.dstu2.valueset.ContactPointSystemEnum; import ca.uhn.fhir.model.primitive.DateDt; import ca.uhn.fhir.model.primitive.IdDt; import ca.uhn.fhir.rest.annotation.IdParam; import ca.uhn.fhir.rest.annotation.Read; import ca.uhn.fhir.rest.annotation.RequiredParam; import ca.uhn.fhir.rest.annotation.Search; import ca.uhn.fhir.rest.param.StringParam; import ca.uhn.fhir.rest.server.IResourceProvider; /** * This is a resource provider which stores Practitioner resources in memory using a HashMap. This is obviously not a production-ready solution for many reasons, * but it is useful to help illustrate how to build a fully-functional server. */ public class PractitionerResourceProvider implements IResourceProvider { List listaRead = new ArrayList(); @Override public Class getResourceType(){ return Practitioner.class; } /** * The "@Search" annotation indicates that this method supports the search operation. You may have many different method annotated with this annotation, to support many different search criteria. * This example searches by family name. * * @param thePractitionerIdentifier * This operation takes one parameter which is the search criteria. It is annotated with the "@Required" annotation. This annotation takes one argument, a string containing the name of * the search criteria. The datatype here is StringDt, but there are other possible parameter types depending on the specific search criteria. * @return This method returns a single of Practitioner. */ @Search() public List findPractitionerByIdentifier(@RequiredParam(name=Practitioner.SP_IDENTIFIER) StringParam NIF) { //Creamos la lista de pacientes List listaPractitioners = new ArrayList(); //Recuperamos el practitioner de base de datos //PractitionerBean PractitionerBean = new PractitionerBean(); PractitionerBean PractitionerBean = PractitionerSQL.getPractitionerByNIF(NIF.getValue()); if(PractitionerBean!=null){ //Creamos el recurso Practitioner Practitioner practitioner = new Practitioner(); practitioner.setId(Long.toString(PractitionerBean.getIdProfesional())); //Introducimos los campos del recurso if(PractitionerBean.getEstado().equals("UACTIVO")){ practitioner.setActive(true); } else if(PractitionerBean.getEstado().equals("UINACTIVO")){ practitioner.setActive(false); } IdentifierDt documento = new IdentifierDt(); documento.getType().setText(PractitionerBean.getTipoDocumento()); documento.setValue(PractitionerBean.getDocumento()); practitioner.addIdentifier(documento); practitioner.getName().addFamily(PractitionerBean.getPrimerApellido()+" "+PractitionerBean.getSegundoApellido()).addGiven(PractitionerBean.getNombre());; if(PractitionerBean.getSexo().equals("HOMBRE")){ practitioner.setGender(AdministrativeGenderEnum.MALE); } else if(PractitionerBean.getSexo().equals("MUJER")){ practitioner.setGender(AdministrativeGenderEnum.FEMALE); } DateDt fechaNacimiento = new DateDt(); fechaNacimiento.setValue(PractitionerBean.getFechaNacimiento()); practitioner.setBirthDate(fechaNacimiento); ContactPointDt phone = new ContactPointDt(); phone.setSystem(ContactPointSystemEnum.PHONE); phone.setValue(PractitionerBean.getTelefono()); practitioner.addTelecom(phone); ContactPointDt mail = new ContactPointDt(); mail.setSystem(ContactPointSystemEnum.EMAIL); mail.setValue(PractitionerBean.getTelecom()); practitioner.addTelecom(mail); CodeableConceptDt cargo = new CodeableConceptDt(); cargo.setText(PractitionerBean.getCargo()); CodeableConceptDt especialidad = new CodeableConceptDt(); especialidad.setText(PractitionerBean.getEspecialidad()); practitioner.addPractitionerRole().setRole(cargo).addSpecialty(especialidad); //Obtenemos el recurso Organization Organization organization = OrganizationUtil.findOrganizatioById(PractitionerBean.getIdOrganizacion()); //En el campo ManagingOrganization contenemos el objeto que hemos creado if(organization != null){ practitioner.getPractitionerRoleFirstRep().getManagingOrganization().setResource(organization); } listaPractitioners.add(practitioner); listaRead=listaPractitioners; } return listaPractitioners; } /** * This is the "read" operation. The "@Read" annotation indicates that this method supports the read and/or vread operation. *

* Read operations take a single parameter annotated with the {@link IdParam} paramater, and should return a single resource instance. *

* * @param theId * The read operation takes one parameter, which must be of type IdDt and must be annotated with the "@Read.IdParam" annotation. * @return Returns a resource matching this identifier, or null if none exists. */ @Read public Practitioner readPractitioner(@IdParam IdDt theId) { Iterator it = listaRead.iterator(); int flag=0; Practitioner practitioner = new Practitioner(); while (it.hasNext() && flag==0) { practitioner=it.next(); if(theId.equals("Practitioner/"+practitioner.getId())){ flag=1; } } return practitioner; } } e-REdING. Biblioteca de la Escuela Superior de Ingenieros de Sevilla.


SERVICIO WEB PARA EL ACCESO A INFORMACIÓN SANITARIA DE PACIENTES RENALES

: PEDRERA JIMÉNEZ, MIGUEL
: Grado en Ingeniería de las Tecnologías de Telecomunicación
Contenido del proyecto:
Directorio raíz  >  codigo  >  ServicioWebFHIR  >  src  >  main  >  java  >  enefro  >  interop  >  provider  >  PractitionerResourceProvider.java