diff --git a/transformations/epts/new_pvls.ktr b/transformations/epts/new_pvls.ktr
new file mode 100644
index 0000000..adac935
--- /dev/null
+++ b/transformations/epts/new_pvls.ktr
@@ -0,0 +1,941 @@
+
+
+
+ new_pvls
+ New Pvls list form EPTS
+
+
+ Normal
+ 0
+ /
+
+
+
+
+
+
+
+
+
+
+
+ ID_BATCH
+ Y
+ ID_BATCH
+
+
+ CHANNEL_ID
+ Y
+ CHANNEL_ID
+
+
+ TRANSNAME
+ Y
+ TRANSNAME
+
+
+ STATUS
+ Y
+ STATUS
+
+
+ LINES_READ
+ Y
+ LINES_READ
+
+
+
+ LINES_WRITTEN
+ Y
+ LINES_WRITTEN
+
+
+
+ LINES_UPDATED
+ Y
+ LINES_UPDATED
+
+
+
+ LINES_INPUT
+ Y
+ LINES_INPUT
+
+
+
+ LINES_OUTPUT
+ Y
+ LINES_OUTPUT
+
+
+
+ LINES_REJECTED
+ Y
+ LINES_REJECTED
+
+
+
+ ERRORS
+ Y
+ ERRORS
+
+
+ STARTDATE
+ Y
+ STARTDATE
+
+
+ ENDDATE
+ Y
+ ENDDATE
+
+
+ LOGDATE
+ Y
+ LOGDATE
+
+
+ DEPDATE
+ Y
+ DEPDATE
+
+
+ REPLAYDATE
+ Y
+ REPLAYDATE
+
+
+ LOG_FIELD
+ Y
+ LOG_FIELD
+
+
+ EXECUTING_SERVER
+ N
+ EXECUTING_SERVER
+
+
+ EXECUTING_USER
+ N
+ EXECUTING_USER
+
+
+ CLIENT
+ N
+ CLIENT
+
+
+
+
+
+
+
+
+
+ ID_BATCH
+ Y
+ ID_BATCH
+
+
+ SEQ_NR
+ Y
+ SEQ_NR
+
+
+ LOGDATE
+ Y
+ LOGDATE
+
+
+ TRANSNAME
+ Y
+ TRANSNAME
+
+
+ STEPNAME
+ Y
+ STEPNAME
+
+
+ STEP_COPY
+ Y
+ STEP_COPY
+
+
+ LINES_READ
+ Y
+ LINES_READ
+
+
+ LINES_WRITTEN
+ Y
+ LINES_WRITTEN
+
+
+ LINES_UPDATED
+ Y
+ LINES_UPDATED
+
+
+ LINES_INPUT
+ Y
+ LINES_INPUT
+
+
+ LINES_OUTPUT
+ Y
+ LINES_OUTPUT
+
+
+ LINES_REJECTED
+ Y
+ LINES_REJECTED
+
+
+ ERRORS
+ Y
+ ERRORS
+
+
+ INPUT_BUFFER_ROWS
+ Y
+ INPUT_BUFFER_ROWS
+
+
+ OUTPUT_BUFFER_ROWS
+ Y
+ OUTPUT_BUFFER_ROWS
+
+
+
+
+
+
+
+
+ ID_BATCH
+ Y
+ ID_BATCH
+
+
+ CHANNEL_ID
+ Y
+ CHANNEL_ID
+
+
+ LOG_DATE
+ Y
+ LOG_DATE
+
+
+ LOGGING_OBJECT_TYPE
+ Y
+ LOGGING_OBJECT_TYPE
+
+
+ OBJECT_NAME
+ Y
+ OBJECT_NAME
+
+
+ OBJECT_COPY
+ Y
+ OBJECT_COPY
+
+
+ REPOSITORY_DIRECTORY
+ Y
+ REPOSITORY_DIRECTORY
+
+
+ FILENAME
+ Y
+ FILENAME
+
+
+ OBJECT_ID
+ Y
+ OBJECT_ID
+
+
+ OBJECT_REVISION
+ Y
+ OBJECT_REVISION
+
+
+ PARENT_CHANNEL_ID
+ Y
+ PARENT_CHANNEL_ID
+
+
+ ROOT_CHANNEL_ID
+ Y
+ ROOT_CHANNEL_ID
+
+
+
+
+
+
+
+
+ ID_BATCH
+ Y
+ ID_BATCH
+
+
+ CHANNEL_ID
+ Y
+ CHANNEL_ID
+
+
+ LOG_DATE
+ Y
+ LOG_DATE
+
+
+ TRANSNAME
+ Y
+ TRANSNAME
+
+
+ STEPNAME
+ Y
+ STEPNAME
+
+
+ STEP_COPY
+ Y
+ STEP_COPY
+
+
+ LINES_READ
+ Y
+ LINES_READ
+
+
+ LINES_WRITTEN
+ Y
+ LINES_WRITTEN
+
+
+ LINES_UPDATED
+ Y
+ LINES_UPDATED
+
+
+ LINES_INPUT
+ Y
+ LINES_INPUT
+
+
+ LINES_OUTPUT
+ Y
+ LINES_OUTPUT
+
+
+ LINES_REJECTED
+ Y
+ LINES_REJECTED
+
+
+ ERRORS
+ Y
+ ERRORS
+
+
+ LOG_FIELD
+ N
+ LOG_FIELD
+
+
+
+
+
+
+
+
+ ID_BATCH
+ Y
+ ID_BATCH
+
+
+ CHANNEL_ID
+ Y
+ CHANNEL_ID
+
+
+ LOG_DATE
+ Y
+ LOG_DATE
+
+
+ METRICS_DATE
+ Y
+ METRICS_DATE
+
+
+ METRICS_CODE
+ Y
+ METRICS_CODE
+
+
+ METRICS_DESCRIPTION
+ Y
+ METRICS_DESCRIPTION
+
+
+ METRICS_SUBJECT
+ Y
+ METRICS_SUBJECT
+
+
+ METRICS_TYPE
+ Y
+ METRICS_TYPE
+
+
+ METRICS_VALUE
+ Y
+ METRICS_VALUE
+
+
+
+
+
+
+
+ 0.0
+ 0.0
+
+ 10000
+ 50
+ 50
+ N
+ Y
+ 50000
+ Y
+
+ N
+ 1000
+ 100
+
+
+
+
+
+
+
+
+ -
+ 2018/12/19 15:30:49.058
+ -
+ 2018/12/19 15:30:49.058
+ H4sIAAAAAAAAAAMAAAAAAAAAAAA=
+ N
+
+
+
+
+ Openmrs
+ localhost
+ MYSQL
+ Native
+ epts
+ 3306
+ root
+ Encrypted 2be98afc86aa7f2e4bb18bd63c99dbdde
+
+
+
+
+
+ FORCE_IDENTIFIERS_TO_LOWERCASE
+ N
+
+
+ FORCE_IDENTIFIERS_TO_UPPERCASE
+ N
+
+
+ IS_CLUSTERED
+ N
+
+
+ PORT_NUMBER
+ 3306
+
+
+ PRESERVE_RESERVED_WORD_CASE
+ Y
+
+
+ QUOTE_ALL_FIELDS
+ N
+
+
+ STREAM_RESULTS
+ Y
+
+
+ SUPPORTS_BOOLEAN_DATA_TYPE
+ Y
+
+
+ SUPPORTS_TIMESTAMP_DATA_TYPE
+ Y
+
+
+ USE_POOLING
+ N
+
+
+
+
+
+ Table input
+ Fetch Patient Sex
+ Y
+
+
+ Fetch Patient Sex
+ Fetch Program Start Date
+ Y
+
+
+ Fetch Program Start Date
+ Fetch Last VL DETAILS
+ Y
+
+
+ Fetch Last VL DETAILS
+ Fetch Lactation
+ Y
+
+
+ Fetch Lactation
+ Fetch Pregnancy
+ Y
+
+
+ Fetch Pregnancy
+ Microsoft Excel output
+ Y
+
+
+
+ Fetch Patient Sex
+ DBJoin
+
+ Y
+
+ 1
+
+ none
+
+
+ Openmrs
+ 1
+ select p.gender from person p
+where p.person_id = ?
+ and p.voided = false
+order by p.person_id
+
+ Y
+ N
+
+
+ person_id
+ Number
+
+
+
+
+
+
+
+
+
+
+ 224
+ 208
+ Y
+
+
+
+ Fetch Program Start Date
+ DBJoin
+
+ Y
+
+ 1
+
+ none
+
+
+ Openmrs
+ 1
+ select date(patient_program.date_enrolled) art_program_start_date from patient_program
+where patient_program.patient_id = ?
+ and patient_program.location_id = ?
+ and patient_program.program_id = 2
+ and patient_program.voided = false
+order by patient_program.date_enrolled
+
+
+ Y
+ N
+
+
+ person_id
+ Number
+
+
+ location_id
+ Number
+
+
+
+
+
+
+
+
+
+
+ 496
+ 208
+ Y
+
+
+
+ Fetch Lactation
+ DBJoin
+
+ Y
+
+ 1
+
+ none
+
+
+ Openmrs
+ 1
+ select name as lactation from concept_name cn
+ where cn.concept_id = (select obs.value_coded as transfer_in_date from obs
+where obs.person_id = ?
+ and obs.location_id = ?
+ and obs.concept_id = 6332
+ and obs.value_coded is not null
+ and obs.voided = false
+order by obs.obs_datetime desc limit 1)
+and cn.locale = 'pt'
+and cn.concept_name_type = 'FULLY_SPECIFIED'
+
+ Y
+ N
+
+
+ person_id
+ Number
+
+
+ location_id
+ Number
+
+
+
+
+
+
+
+
+
+
+ 992
+ 208
+ Y
+
+
+
+ Fetch Last VL DETAILS
+ DBJoin
+
+ Y
+
+ 1
+
+ none
+
+
+ Openmrs
+ 1
+ select date(encounter.encounter_datetime) last_vl_date, obs.value_numeric as last_vl_value from encounter
+join obs on obs.encounter_id = encounter.encounter_id
+join patient on patient.patient_id = encounter.patient_id
+where encounter.encounter_type = 13
+ and encounter.voided = false
+ and encounter.patient_id = ?
+ and encounter.location_id = ?
+ and obs.concept_id = 856
+ and encounter.encounter_datetime between ? and ?
+ and obs.value_numeric is not null
+ and patient.voided = false
+ and encounter.voided = false
+ and obs.voided = false
+order by encounter.encounter_datetime desc limit 1
+
+ Y
+ N
+
+
+ person_id
+ Number
+
+
+ location_id
+ Number
+
+
+ startDate
+ Date
+
+
+ endDate
+ Date
+
+
+
+
+
+
+
+
+
+
+ 736
+ 208
+ Y
+
+
+
+ Microsoft Excel output
+ ExcelOutput
+
+ Y
+
+ 1
+
+ none
+
+
+
+
+
+ N
+ N
+
+ ${user.home}/patient-summaries/pvls-patient-summary
+ xls
+ N
+ N
+ N
+ N
+ N
+ N
+ dd/MM/yyyy
+ Sheet1
+ Y
+ N
+ N
+ Encrypted
+ 0
+ N
+
+
+
+ N
+ N
+ /home/edrisse/transformations/epts/explain-report-template.xls
+
+
+
+ startDate
+ String
+
+
+
+ endDate
+ String
+
+
+
+ person_id
+ Integer
+
+
+
+ location_id
+ Integer
+
+
+
+ gender
+ String
+
+
+
+ art_program_start_date
+ Date
+
+
+
+ last_vl_date
+ Date
+
+
+
+ last_vl_value
+ Number
+
+
+
+ lactation
+ String
+
+
+
+ pregnancy
+ String
+
+
+
+
+ arial
+ 10
+ N
+ N
+ no
+ horizontal
+ black
+ none
+ 255
+ left
+
+ arial
+ 10
+ black
+ none
+
+
+
+
+
+
+
+
+
+ 1520
+ 208
+ Y
+
+
+
+ Table input
+ TableInput
+
+ Y
+
+ 1
+
+ none
+
+
+ Openmrs
+ select distinct obs.person_id, '2019-11-21' as startDate, '2019-12-20' as endDate, obs.location_id from obs
+join patient on patient.patient_id = obs.person_id
+where obs.location_id = 158
+ and obs.voided = false
+ and patient.voided = false
+
+ 0
+
+ N
+ N
+ N
+
+
+
+
+
+
+
+
+ 32
+ 208
+ Y
+
+
+
+ Fetch Pregnancy
+ DBJoin
+
+ Y
+
+ 1
+
+ none
+
+
+ Openmrs
+ 1
+ select name as pregnancy from concept_name cn
+ where cn.concept_id = (select obs.value_coded as transfer_in_date from obs
+where obs.person_id = ?
+ and obs.location_id = ?
+ and obs.concept_id = 1982
+ and obs.value_coded is not null
+ and obs.voided = false
+order by obs.obs_datetime desc limit 1)
+and cn.locale = 'pt'
+and cn.concept_name_type = 'FULLY_SPECIFIED'
+
+ Y
+ N
+
+
+ person_id
+ Number
+
+
+ location_id
+ Number
+
+
+
+
+
+
+
+
+
+
+ 1264
+ 208
+ Y
+
+
+
+
+
+
+ N
+
+
diff --git a/transformations/epts/tx_new.ktr b/transformations/epts/tx_new.ktr
new file mode 100644
index 0000000..dd73699
--- /dev/null
+++ b/transformations/epts/tx_new.ktr
@@ -0,0 +1,816 @@
+
+
+
+ tx_new
+ Tx New list for EPTS
+
+
+ Normal
+ 0
+ /
+
+
+
+
+
+
+
+
+
+
+
+ ID_BATCH
+ Y
+ ID_BATCH
+
+
+ CHANNEL_ID
+ Y
+ CHANNEL_ID
+
+
+ TRANSNAME
+ Y
+ TRANSNAME
+
+
+ STATUS
+ Y
+ STATUS
+
+
+ LINES_READ
+ Y
+ LINES_READ
+
+
+
+ LINES_WRITTEN
+ Y
+ LINES_WRITTEN
+
+
+
+ LINES_UPDATED
+ Y
+ LINES_UPDATED
+
+
+
+ LINES_INPUT
+ Y
+ LINES_INPUT
+
+
+
+ LINES_OUTPUT
+ Y
+ LINES_OUTPUT
+
+
+
+ LINES_REJECTED
+ Y
+ LINES_REJECTED
+
+
+
+ ERRORS
+ Y
+ ERRORS
+
+
+ STARTDATE
+ Y
+ STARTDATE
+
+
+ ENDDATE
+ Y
+ ENDDATE
+
+
+ LOGDATE
+ Y
+ LOGDATE
+
+
+ DEPDATE
+ Y
+ DEPDATE
+
+
+ REPLAYDATE
+ Y
+ REPLAYDATE
+
+
+ LOG_FIELD
+ Y
+ LOG_FIELD
+
+
+ EXECUTING_SERVER
+ N
+ EXECUTING_SERVER
+
+
+ EXECUTING_USER
+ N
+ EXECUTING_USER
+
+
+ CLIENT
+ N
+ CLIENT
+
+
+
+
+
+
+
+
+
+ ID_BATCH
+ Y
+ ID_BATCH
+
+
+ SEQ_NR
+ Y
+ SEQ_NR
+
+
+ LOGDATE
+ Y
+ LOGDATE
+
+
+ TRANSNAME
+ Y
+ TRANSNAME
+
+
+ STEPNAME
+ Y
+ STEPNAME
+
+
+ STEP_COPY
+ Y
+ STEP_COPY
+
+
+ LINES_READ
+ Y
+ LINES_READ
+
+
+ LINES_WRITTEN
+ Y
+ LINES_WRITTEN
+
+
+ LINES_UPDATED
+ Y
+ LINES_UPDATED
+
+
+ LINES_INPUT
+ Y
+ LINES_INPUT
+
+
+ LINES_OUTPUT
+ Y
+ LINES_OUTPUT
+
+
+ LINES_REJECTED
+ Y
+ LINES_REJECTED
+
+
+ ERRORS
+ Y
+ ERRORS
+
+
+ INPUT_BUFFER_ROWS
+ Y
+ INPUT_BUFFER_ROWS
+
+
+ OUTPUT_BUFFER_ROWS
+ Y
+ OUTPUT_BUFFER_ROWS
+
+
+
+
+
+
+
+
+ ID_BATCH
+ Y
+ ID_BATCH
+
+
+ CHANNEL_ID
+ Y
+ CHANNEL_ID
+
+
+ LOG_DATE
+ Y
+ LOG_DATE
+
+
+ LOGGING_OBJECT_TYPE
+ Y
+ LOGGING_OBJECT_TYPE
+
+
+ OBJECT_NAME
+ Y
+ OBJECT_NAME
+
+
+ OBJECT_COPY
+ Y
+ OBJECT_COPY
+
+
+ REPOSITORY_DIRECTORY
+ Y
+ REPOSITORY_DIRECTORY
+
+
+ FILENAME
+ Y
+ FILENAME
+
+
+ OBJECT_ID
+ Y
+ OBJECT_ID
+
+
+ OBJECT_REVISION
+ Y
+ OBJECT_REVISION
+
+
+ PARENT_CHANNEL_ID
+ Y
+ PARENT_CHANNEL_ID
+
+
+ ROOT_CHANNEL_ID
+ Y
+ ROOT_CHANNEL_ID
+
+
+
+
+
+
+
+
+ ID_BATCH
+ Y
+ ID_BATCH
+
+
+ CHANNEL_ID
+ Y
+ CHANNEL_ID
+
+
+ LOG_DATE
+ Y
+ LOG_DATE
+
+
+ TRANSNAME
+ Y
+ TRANSNAME
+
+
+ STEPNAME
+ Y
+ STEPNAME
+
+
+ STEP_COPY
+ Y
+ STEP_COPY
+
+
+ LINES_READ
+ Y
+ LINES_READ
+
+
+ LINES_WRITTEN
+ Y
+ LINES_WRITTEN
+
+
+ LINES_UPDATED
+ Y
+ LINES_UPDATED
+
+
+ LINES_INPUT
+ Y
+ LINES_INPUT
+
+
+ LINES_OUTPUT
+ Y
+ LINES_OUTPUT
+
+
+ LINES_REJECTED
+ Y
+ LINES_REJECTED
+
+
+ ERRORS
+ Y
+ ERRORS
+
+
+ LOG_FIELD
+ N
+ LOG_FIELD
+
+
+
+
+
+
+
+
+ ID_BATCH
+ Y
+ ID_BATCH
+
+
+ CHANNEL_ID
+ Y
+ CHANNEL_ID
+
+
+ LOG_DATE
+ Y
+ LOG_DATE
+
+
+ METRICS_DATE
+ Y
+ METRICS_DATE
+
+
+ METRICS_CODE
+ Y
+ METRICS_CODE
+
+
+ METRICS_DESCRIPTION
+ Y
+ METRICS_DESCRIPTION
+
+
+ METRICS_SUBJECT
+ Y
+ METRICS_SUBJECT
+
+
+ METRICS_TYPE
+ Y
+ METRICS_TYPE
+
+
+ METRICS_VALUE
+ Y
+ METRICS_VALUE
+
+
+
+
+
+
+
+ 0.0
+ 0.0
+
+ 10000
+ 50
+ 50
+ N
+ Y
+ 50000
+ Y
+
+ N
+ 1000
+ 100
+
+
+
+
+
+
+
+
+ -
+ 2018/12/19 15:30:49.058
+ -
+ 2018/12/19 15:30:49.058
+ H4sIAAAAAAAAAAMAAAAAAAAAAAA=
+ N
+
+
+
+
+ Openmrs
+ localhost
+ MYSQL
+ Native
+ epts
+ 3306
+ root
+ Encrypted 2be98afc86aa7f2e4bb18bd63c99dbdde
+
+
+
+
+
+ FORCE_IDENTIFIERS_TO_LOWERCASE
+ N
+
+
+ FORCE_IDENTIFIERS_TO_UPPERCASE
+ N
+
+
+ IS_CLUSTERED
+ N
+
+
+ PORT_NUMBER
+ 3306
+
+
+ PRESERVE_RESERVED_WORD_CASE
+ Y
+
+
+ QUOTE_ALL_FIELDS
+ N
+
+
+ STREAM_RESULTS
+ Y
+
+
+ SUPPORTS_BOOLEAN_DATA_TYPE
+ Y
+
+
+ SUPPORTS_TIMESTAMP_DATA_TYPE
+ Y
+
+
+ USE_POOLING
+ N
+
+
+
+
+
+ Table input
+ Fetch Patient Sex
+ Y
+
+
+ Fetch Patient Sex
+ Fetch Program Start Date
+ Y
+
+
+ Fetch Program Start Date
+ Fetch TransferredIn
+ Y
+
+
+ Fetch TransferredIn
+ Microsoft Excel output
+ Y
+
+
+
+ Fetch TransferredIn
+ DBJoin
+
+ Y
+
+ 1
+
+ none
+
+
+ Openmrs
+ 1
+ SELECT
+CASE
+ WHEN count(pp.patient_id) = 0
+ THEN "Nao"
+ WHEN count(pp.patient_id) > 0
+ THEN "SIM"
+END AS transferredIn
+ FROM patient_program pp JOIN patient_state ps
+ON pp.patient_program_id = ps.patient_program_id
+WHERE patient_id = ?
+AND pp.location_id = ?
+AND ps.voided = false
+AND pp.date_enrolled BETWEEN ? AND ?
+AND ps.state IN (28,29,30,31)
+
+ Y
+ N
+
+
+ person_id
+ Number
+
+
+ location_id
+ Number
+
+
+ startDate
+ String
+
+
+ endDate
+ String
+
+
+
+
+
+
+
+
+
+
+ 848
+ 208
+ Y
+
+
+
+ Fetch Patient Sex
+ DBJoin
+
+ Y
+
+ 1
+
+ none
+
+
+ Openmrs
+ 1
+ select p.gender from person p
+where p.person_id = ?
+ and p.voided = false
+order by p.person_id
+
+ Y
+ N
+
+
+ person_id
+ Number
+
+
+
+
+
+
+
+
+
+
+ 224
+ 208
+ Y
+
+
+
+ Fetch Program Start Date
+ DBJoin
+
+ Y
+
+ 1
+
+ none
+
+
+ Openmrs
+ 1
+ select date(patient_program.date_enrolled) art_program_start_date from patient_program
+where patient_program.patient_id = ?
+ and patient_program.location_id = ?
+ and patient_program.program_id = 2
+ and patient_program.voided = false
+order by patient_program.date_enrolled
+
+
+ Y
+ N
+
+
+ person_id
+ Number
+
+
+ location_id
+ Number
+
+
+
+
+
+
+
+
+
+
+ 496
+ 208
+ Y
+
+
+
+ Microsoft Excel output
+ ExcelOutput
+
+ Y
+
+ 1
+
+ none
+
+
+
+
+
+ N
+ N
+
+ ${user.home}/patient-summaries/pvls-patient-summary
+ xls
+ N
+ N
+ N
+ N
+ N
+ N
+ dd/MM/yyyy
+ Sheet1
+ Y
+ N
+ N
+ Encrypted
+ 0
+ N
+
+
+
+ N
+ N
+ /home/edrisse/transformations/epts/explain-report-template.xls
+
+
+
+ person_id
+ Integer
+
+
+
+ startDate
+ String
+
+
+
+ endDate
+ String
+
+
+
+ location_id
+ Integer
+
+
+
+ gender
+ String
+
+
+
+ art_program_start_date
+ Date
+
+
+
+ transferredIn
+ String
+
+
+
+
+ arial
+ 10
+ N
+ N
+ no
+ horizontal
+ black
+ none
+ 255
+ left
+
+ arial
+ 10
+ black
+ none
+
+
+
+
+
+
+
+
+
+ 1184
+ 208
+ Y
+
+
+
+ Table input
+ TableInput
+
+ Y
+
+ 1
+
+ none
+
+
+ Openmrs
+ select distinct obs.person_id, '2019-11-21' as startDate, '2019-12-20' as endDate, obs.location_id from obs
+join patient on patient.patient_id = obs.person_id
+where obs.location_id = 158
+ and obs.voided = false
+ and patient.voided = false
+
+ 0
+
+ N
+ N
+ N
+
+
+
+
+
+
+
+
+ 32
+ 208
+ Y
+
+
+
+
+
+
+ N
+
+