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();