diff --git a/bahmni/src/main/java/org/avni_integration_service/bahmni/PatientToSubjectMetaData.java b/bahmni/src/main/java/org/avni_integration_service/bahmni/PatientToSubjectMetaData.java index fdbfeaf7..c9a63bec 100644 --- a/bahmni/src/main/java/org/avni_integration_service/bahmni/PatientToSubjectMetaData.java +++ b/bahmni/src/main/java/org/avni_integration_service/bahmni/PatientToSubjectMetaData.java @@ -5,13 +5,15 @@ public final class PatientToSubjectMetaData implements BahmniToAvniMetaData { private final String avniIdentifierConcept; private final String patientEncounterType; private final String patientIdentifierName; + private final MappingMetaDataCollection personAttributesMappingList; public PatientToSubjectMetaData(String bahmniEntityUuidConcept, String avniIdentifierConcept, - String patientEncounterType, String patientIdentifierName) { + String patientEncounterType, String patientIdentifierName,MappingMetaDataCollection personAttributesMappingList) { this.bahmniEntityUuidConcept = bahmniEntityUuidConcept; this.avniIdentifierConcept = avniIdentifierConcept; this.patientEncounterType = patientEncounterType; this.patientIdentifierName = patientIdentifierName; + this.personAttributesMappingList = personAttributesMappingList; } @Override @@ -34,4 +36,8 @@ public String patientEncounterType() { public String patientIdentifierName() { return patientIdentifierName; } + + public MappingMetaDataCollection getPersonAttributesMappingList() { + return personAttributesMappingList; + } } diff --git a/bahmni/src/main/java/org/avni_integration_service/bahmni/service/MappingMetaDataService.java b/bahmni/src/main/java/org/avni_integration_service/bahmni/service/MappingMetaDataService.java index 078d8348..66299dc4 100644 --- a/bahmni/src/main/java/org/avni_integration_service/bahmni/service/MappingMetaDataService.java +++ b/bahmni/src/main/java/org/avni_integration_service/bahmni/service/MappingMetaDataService.java @@ -58,7 +58,8 @@ public PatientToSubjectMetaData getForPatientToSubject() { String patientEncounterType = Names.AvniPatientRegistrationEncounter; String patientIdentifierName = mappingService.getBahmniValue(bahmniMappingGroup.patientSubject, bahmniMappingType.patientIdentifierConcept); String bahmniEntityUuidConceptInAvni = mappingService.getAvniValue(bahmniMappingGroup.common, bahmniMappingType.bahmniUUIDConcept); - return new PatientToSubjectMetaData(bahmniEntityUuidConceptInAvni, avniIdentifierConcept, patientEncounterType, patientIdentifierName); + MappingMetaDataCollection personAttributesMappingList = mappingService.findAll(bahmniMappingGroup.patientSubject, bahmniMappingType.personAttributeConcept); + return new PatientToSubjectMetaData(bahmniEntityUuidConceptInAvni, avniIdentifierConcept, patientEncounterType, patientIdentifierName, personAttributesMappingList); } public BahmniEncounterToAvniEncounterMetaData getForBahmniEncounterToAvniEntities() { diff --git a/bahmni/src/main/java/org/avni_integration_service/bahmni/service/SubjectService.java b/bahmni/src/main/java/org/avni_integration_service/bahmni/service/SubjectService.java index db2e44d4..1a6ada62 100644 --- a/bahmni/src/main/java/org/avni_integration_service/bahmni/service/SubjectService.java +++ b/bahmni/src/main/java/org/avni_integration_service/bahmni/service/SubjectService.java @@ -154,6 +154,21 @@ public Subject createSubjectFromPatient(OpenMRSPatient patient, Constants consta subject.addObservation("Nikshay ID", nikshayIdentifier.get().getIdentifier()); } + String abhaNumberUuid = metaData.getPersonAttributesMappingList().getBahmniValueForAvniValue("ABHA Number"); + Optional ABHANumberIdentifier = patient.getIdentifiers().stream() + .filter(id -> id.getIdentifierType().getUuid().equals(abhaNumberUuid)).findFirst(); + + if (ABHANumberIdentifier.isPresent()) { + subject.addObservation("ABHA Number", ABHANumberIdentifier.get().getIdentifier()); + } + + String abhaAddressUuid = metaData.getPersonAttributesMappingList().getBahmniValueForAvniValue("ABHA Address"); + Optional ABHAAddressIdentifier = patient.getIdentifiers().stream().filter(id -> id.getIdentifierType().getUuid().equals(abhaAddressUuid)).findFirst(); + + if (ABHAAddressIdentifier.isPresent()) { + subject.addObservation("ABHA Address", ABHAAddressIdentifier.get().getIdentifier()); + } + String phoneNumber = patient.getPerson().getAttributes().getPhoneNumber(); subject.addObservation("Phone Number", phoneNumber);