diff --git a/pom.xml b/pom.xml index 20cb51976e0..32c09781667 100755 --- a/pom.xml +++ b/pom.xml @@ -19,7 +19,7 @@ hapi-fhir-jpaserver-starter org.smartregister - 5.5.2-SNAPSHOT + 5.5.3-SNAPSHOT 8 @@ -133,16 +133,21 @@ org.smartregister hapi-fhir-keycloak - 0.0.3-SNAPSHOT + 0.0.6-SNAPSHOT org.smartregister.hapi-fhir-opensrp-extensions location - 0.0.3-SNAPSHOT + 0.0.4-SNAPSHOT + + org.smartregister.hapi-fhir-opensrp-extensions + practitioner + 0.0.3-SNAPSHOT + diff --git a/src/main/java/ca/uhn/fhir/jpa/starter/JpaRestfulServer.java b/src/main/java/ca/uhn/fhir/jpa/starter/JpaRestfulServer.java index 8ae877d2043..b01531cb2f9 100644 --- a/src/main/java/ca/uhn/fhir/jpa/starter/JpaRestfulServer.java +++ b/src/main/java/ca/uhn/fhir/jpa/starter/JpaRestfulServer.java @@ -1,14 +1,16 @@ package ca.uhn.fhir.jpa.starter; import ca.uhn.fhir.jpa.api.dao.IFhirResourceDao; -import org.hl7.fhir.r4.model.Location; -import org.smartregister.extension.model.*; +import org.hl7.fhir.r4.model.*; import org.smartregister.extension.rest.LocationHierarchyResourceProvider; +import org.smartregister.extension.rest.PractitionerDetailsResourceProvider; +import org.smartregister.model.location.*; +import org.smartregister.model.practitioner.*; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.Import; import javax.servlet.ServletException; -import static org.smartregister.extension.utils.Constants.LOCATION; +import static org.smartregister.utils.Constants.LOCATION; @Import(AppProperties.class) public class JpaRestfulServer extends BaseJpaRestfulServer { @@ -28,6 +30,7 @@ protected void initialize() throws ServletException { // Add your own customization here registerLocationHierarchyTypes(); + registerPracitionerDetailsTypes(); } private void registerLocationHierarchyTypes() { @@ -45,4 +48,32 @@ private void registerLocationHierarchyTypes() { getFhirContext().registerCustomType(ChildTreeNode.class); } + + private void registerPracitionerDetailsTypes() { + IFhirResourceDao practitionerIFhirResourceDao = daoRegistry.getResourceDao("Practitioner"); + IFhirResourceDao practitionerRoleIFhirResourceDao = daoRegistry.getResourceDao("PractitionerRole"); + IFhirResourceDao careTeamIFhirResourceDao = daoRegistry.getResourceDao("CareTeam"); + IFhirResourceDao organizationAffiliationIFhirResourceDao = daoRegistry.getResourceDao("OrganizationAffiliation"); + IFhirResourceDao organizationIFhirResourceDao = daoRegistry.getResourceDao("Organization"); + IFhirResourceDao locationIFhirResourceDao = daoRegistry.getResourceDao(LOCATION); + LocationHierarchyResourceProvider locationHierarchyResourceProvider = new LocationHierarchyResourceProvider(); + locationHierarchyResourceProvider.setLocationIFhirResourceDao(locationIFhirResourceDao); + PractitionerDetailsResourceProvider practitionerDetailsResourceProvider = new PractitionerDetailsResourceProvider(); + practitionerDetailsResourceProvider.setPractitionerIFhirResourceDao(practitionerIFhirResourceDao); + practitionerDetailsResourceProvider.setPractitionerRoleIFhirResourceDao(practitionerRoleIFhirResourceDao); + practitionerDetailsResourceProvider.setCareTeamIFhirResourceDao(careTeamIFhirResourceDao); + practitionerDetailsResourceProvider.setOrganizationAffiliationIFhirResourceDao(organizationAffiliationIFhirResourceDao); + practitionerDetailsResourceProvider.setLocationHierarchyResourceProvider(locationHierarchyResourceProvider); + practitionerDetailsResourceProvider.setOrganizationIFhirResourceDao(organizationIFhirResourceDao); + practitionerDetailsResourceProvider.setLocationIFhirResourceDao(locationIFhirResourceDao); + + registerProvider(practitionerDetailsResourceProvider); + getFhirContext().registerCustomType(PractitionerDetails.class); + getFhirContext().registerCustomType(KeycloakUserDetails.class); + getFhirContext().registerCustomType(UserBioData.class); + getFhirContext().registerCustomType(FhirPractitionerDetails.class); + getFhirContext().registerCustomType(FhirCareTeamExtension.class); + getFhirContext().registerCustomType(FhirOrganizationExtension.class); + } + }