Programs synchronization

Note

On the OpenMRS Design Forum 2018-10-03 (meeting notes: https://notes.openmrs.org/2018-10-03-Design-Forum) we decided (together with OpenMRS community) synchronize this object via REST because mapping via FHIR is too complex.

Introduction

Note that information about OpenMRS programs is placed here.

FHIR Mapping

On this page are placed suggestion on how to map OpenMRS classes:

OpenMRS class

FHIR class

PatientStateEpisodeOfCare
PatientProgramReferralRequest
ProgramPlanDefinition
ProgramWorkflowCarePlan
ProgramWorkflowStateReferralRequest


Keyword extension means that FHIR Extension has to be used to synchronize this field.

OpenMRS class PatientState. FHIR class EpisodeOfCare.

OpenMRS classOpenMRS fieldDB columnFHIR fieldDetails

PatientState

patientStateId : Integer

patient_state_id : INT

-

Instead of database id is used the UUID.

PatientStatepatientProgram : PatientProgrampatient_program_id : INTreferralRequest : Reference(ReferralRequest)

PatientState

state : ProgramWorkflowState

state : INT

referralRequest : Reference(ReferralRequest)


PatientState

startDate : Date

start_date : DATE

period : Period

Used start date from the Period object.

PatientState

endDate : Date

end_date : DATE

period : Period

Used end date from the Period object.

BaseOpenmrsData

creator : User

creator : INT

extension

BaseOpenmrsData

dateCreated : Date

date_created : DATETIME

extension

BaseOpenmrsData

changedBy : User

changed_by : INT

extension

BaseOpenmrsData

dateChanged : Date

date_changed : DATETIME

extension

BaseOpenmrsData

voided : Boolean

voided : TINYINT

extension

BaseOpenmrsData

dateVoided : Date

date_voided : DATETIME

extension

BaseOpenmrsData

voidedBy : User

voided_by : INT

extension

BaseOpenmrsData

voidedReason : String

void_reason : VARCHAR(255)

extension

BaseOpenmrsObject

uuid : String

uuid : CHAR(38)

identifier : Identifier



OpenMRS class PatientProgram. FHIR class ReferralRequest.


OpenMRS classOpenMRS fieldDB columnFHIR fieldDetails

PatientProgram

patientProgramId : Integer

patient_program_id : INT

-

Instead of database id is used the UUID.

PatientProgram

patient : Patient

patient_id : INT

subject : Reference(Patient)


PatientProgram

program : Program

program_id : INT

definition : Reference(PlanDefinition)


PatientProgram

location : Location

location_id : INT

supportingInfo : Reference(Any)


PatientProgram

dateEnrolled : Date

date_enrolled : DATETIME

occurrencePeriod : Period

Used start date from the Period object.

PatientProgram

dateCompleted : Date

date_completed : DATETIME

occurrencePeriod : Period

Used end date from the Period object.

PatientProgram

outcome : Concept

outcome_concept_id : INT

reasonCode : CodeableConcept


PatientProgram

states : Set<PatientState>

Many to one relation

-

In the PatientState is the reference to PatientProgram.

BaseOpenmrsData

creator : User

creator : INT

extension

BaseOpenmrsData

dateCreated : Date

date_created : DATETIME

authoredOn : dateTime

BaseOpenmrsData

changedBy : User

changed_by : INT

extension

BaseOpenmrsData

dateChanged : Date

date_changed : DATETIME

extension

BaseOpenmrsData

voided : Boolean

voided : TINYINT

extension

BaseOpenmrsData

dateVoided : Date

date_voided : DATETIME

extension

BaseOpenmrsData

voidedBy : User

voided_by : INT

extension

BaseOpenmrsData

voidedReason : String

void_reason : VARCHAR(255)

extension

BaseOpenmrsObject

uuid : String

uuid : CHAR(38)

idenfifier : Identifier



OpenMRS class Program. FHIR class PlanDefinition.


OpenMRS classOpenMRS fieldDB columnFHIR fieldDetails

Program

programId : Integer

program_id : INT

-

Instead of database id is used the UUID.

Program

concept : Concept

concept_id : INT

goal.description : CodeableConcept


Program

outcomesConcept : Concept

Outcomes_concept_id : INT

goal.target.detailCodeableConcept : CodeableConcept


Program

allWorkflows : Set<ProgramWorkflow>

Many to one relation

-

In the PatientProgram is the reference to Program.


BaseOpenmrsMetadata

name : String

name : VARCHAR(50)

name : string


BaseOpenmrsMetadata

description : String

description : TEXT

description : markdown


BaseOpenmrsMetadata

creator : User

creator : INT

extension

BaseOpenmrsMetadata

dateCreated : Date

date_created : DATETIME

extension

BaseOpenmrsMetadata

changedBy : User

changed_by : INT

extension

BaseOpenmrsMetadata

dateChanged : Date

date_changed : DATETIME

date : dateTime

BaseOpenmrsMetadata

retired : Boolean

retired : TINYINT

extension

BaseOpenmrsObject

uuid : String

uuid : CHAR(38)

idenfifier : Identifier



OpenMRS class ProgramWorkflow. FHIR class CarePlan.


OpenMRS classOpenMRS fieldDB columnFHIR fieldDetails

ProgramWorkflow

programWorkflowId : Integer

program_workflow_id : INT

-

Instead of database id is used the UUID.

ProgramWorkflow

program : Program

program_id : INT

definition : Reference(PlanDefinition)


ProgramWorkflow

concept : Concept

concept_id : INT

category : CodeableConcept


ProgramWorkflow

states : Set<ProgramWorkflowState>

Many to one relation

-

In the ProgramWorkflowState is the referance to ProgramWorkflow.


BaseOpenmrsMetadata

creator : User

creator : INT

extension

BaseOpenmrsMetadata

dateCreated : Date

date_created : DATETIME

extension

BaseOpenmrsMetadata

changedBy : User

changed_by : INT

extension

BaseOpenmrsMetadata

dateChanged : Date

date_changed : DATETIME

extension

BaseOpenmrsMetadata

retired : Boolean

retired : TINYINT

extension

BaseOpenmrsObject

uuid : String

uuid : CHAR(38)

idenfifier : Identifier




OpenMRS class ProgramWorkflowState. FHIR class ReferralRequest.


OpenMRS classOpenMRS fieldDB columnFHIR fieldDetails

ProgramWorkflowState

programWorkflowStateId : Integer

program_workflow_state_id : INT

-

Instead of database id is used the UUID.

ProgramWorkflowState

programWorkflow : ProgramWorkflow

program_workflow_id : INT

basedOn : Reference(CarePlan)


ProgramWorkflowState

concept : Concept

concept_id : INT

reasonCode : CodeableConcept


ProgramWorkflowState

initial : Boolean

initial : TINYINT

extension

Other solutions:

  1. using the status field

  2. using the note field

ProgramWorkflowState

terminal : Boolean

terminal : TINYINT

extension

Other solutions:

  1. using the status field

  2. using the note field

BaseOpenmrsMetadata

creator : User

creator : INT

extension

BaseOpenmrsMetadata

dateCreated : Date

date_created : DATETIME

extension

BaseOpenmrsMetadata

changedBy : User

changed_by : INT

extension

BaseOpenmrsMetadata

dateChanged : Date

date_changed : DATETIME

extension

BaseOpenmrsMetadata

retired : Boolean

retired : TINYINT

extension

BaseOpenmrsObject

uuid : String

uuid : CHAR(38)

idenfifier : Identifier