diff --git a/api/src/main/java/org/openmrs/PatientIdentifier.java b/api/src/main/java/org/openmrs/PatientIdentifier.java
index 516f7bf09bc5..24ba1682b33d 100644
--- a/api/src/main/java/org/openmrs/PatientIdentifier.java
+++ b/api/src/main/java/org/openmrs/PatientIdentifier.java
@@ -28,6 +28,16 @@
import org.openmrs.util.OpenmrsUtil;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
+import javax.persistence.Column;
+import javax.persistence.Entity;
+import org.hibernate.annotations.Parameter;
+import org.hibernate.annotations.GenericGenerator;
+import javax.persistence.GeneratedValue;
+import javax.persistence.GenerationType;
+import javax.persistence.Id;
+import javax.persistence.JoinColumn;
+import javax.persistence.ManyToOne;
+import javax.persistence.Table;
/**
* A Patient
can have zero to n identifying PatientIdentifier(s). PatientIdentifiers
@@ -37,6 +47,8 @@
*
* @see org.openmrs.PatientIdentifierType
*/
+@Entity
+@Table(name = "patient_identifier")
@Indexed
@Audited
public class PatientIdentifier extends BaseChangeableOpenmrsData implements java.io.Serializable, Cloneable, Comparable {
@@ -51,9 +63,19 @@ public class PatientIdentifier extends BaseChangeableOpenmrsData implements java
* @since 1.5
*/
@DocumentId
+ @Id
+ @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "patient_identifier_id_seq")
+ @GenericGenerator(
+ name = "patient_identifier_id_seq",
+ strategy = "native",
+ parameters = @Parameter(name = "sequence", value = "patient_identifier_patient_identifier_id_seq")
+ )
+ @Column(name = "patient_identifier_id")
private Integer patientIdentifierId;
-
+
@IndexedEmbedded(includeEmbeddedObjectId = true)
+ @ManyToOne
+ @JoinColumn(name = "patient_id")
private Patient patient;
@Fields({
@@ -63,17 +85,24 @@ public class PatientIdentifier extends BaseChangeableOpenmrsData implements java
@Field(name = "identifierAnywhere", analyzer = @Analyzer(definition = LuceneAnalyzers.ANYWHERE_ANALYZER))
})
@SortableField(forField = "identifierExact")
+ @Column(name = "identifier", length = 50)
private String identifier;
@IndexedEmbedded(includeEmbeddedObjectId = true)
+ @ManyToOne
+ @JoinColumn(name = "identifier_type")
private PatientIdentifierType identifierType;
+ @ManyToOne
+ @JoinColumn(name = "location_id", nullable = true)
private Location location;
+ @ManyToOne
+ @JoinColumn(name = "patient_program_id", nullable = true)
private PatientProgram patientProgram;
-
@Field
+ @Column(name = "preferred", nullable = false)
private Boolean preferred = false;
/** default constructor */
diff --git a/api/src/main/resources/hibernate.cfg.xml b/api/src/main/resources/hibernate.cfg.xml
index 2bd3c6ad8dc1..02d3953351fd 100644
--- a/api/src/main/resources/hibernate.cfg.xml
+++ b/api/src/main/resources/hibernate.cfg.xml
@@ -59,7 +59,6 @@
-
@@ -113,4 +112,4 @@
-
+
\ No newline at end of file
diff --git a/api/src/main/resources/org/openmrs/api/db/hibernate/PatientIdentifier.hbm.xml b/api/src/main/resources/org/openmrs/api/db/hibernate/PatientIdentifier.hbm.xml
deleted file mode 100644
index 18a92025b9a8..000000000000
--- a/api/src/main/resources/org/openmrs/api/db/hibernate/PatientIdentifier.hbm.xml
+++ /dev/null
@@ -1,44 +0,0 @@
-
-
-
-
-
-
-
-
-
- patient_identifier_patient_identifier_id_seq
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/api/src/test/java/org/openmrs/api/OrderServiceTest.java b/api/src/test/java/org/openmrs/api/OrderServiceTest.java
index 6d553c038256..0ee70f2788aa 100644
--- a/api/src/test/java/org/openmrs/api/OrderServiceTest.java
+++ b/api/src/test/java/org/openmrs/api/OrderServiceTest.java
@@ -52,6 +52,7 @@
import org.openmrs.OrderSet;
import org.openmrs.OrderType;
import org.openmrs.Patient;
+import org.openmrs.PatientIdentifier;
import org.openmrs.PatientIdentifierType;
import org.openmrs.PatientState;
import org.openmrs.PersonAddress;
@@ -2740,6 +2741,7 @@ public void saveOrder_shouldFailIfTheJavaTypeOfThePreviousOrderDoesNotMatch() th
.addAnnotatedClass(ProgramAttributeType.class)
.addAnnotatedClass(HL7InError.class)
.addAnnotatedClass(OrderType.class)
+ .addAnnotatedClass(PatientIdentifier.class)
.getMetadataBuilder().build();