Skip to content

Commit

Permalink
Merge pull request #15150 from CDCgov/flexion/update-etor-org-settings
Browse files Browse the repository at this point in the history
Updates to multiple ETOR org settings
  • Loading branch information
basiliskus authored Jul 12, 2024
2 parents f7fe95e + b848037 commit 122f9cb
Show file tree
Hide file tree
Showing 5 changed files with 238 additions and 64 deletions.
55 changes: 55 additions & 0 deletions prime-router/settings/STLTs/AL/al-phl.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
# Alabama Public Health Lab settings for staging
#
# To load the settings to staging, run:
# ./prime login --env staging
# ./prime multiple-settings set --env staging --input ./settings/STLTs/AL/al-phl.yml
#
# To add the sender key in staging:
# ./prime organization addkey --env staging --public-key /path/to/public/key.pem --scope "al-phl.*.report" --orgName al-phl --kid al-phl.etor-nbs-results --doit
#
# To submit an order to al-phl, in staging:
# Note: replace the TOKEN with the auth JWT and the path to the FHIR message to send
# curl -H 'Authorization: Bearer TOKEN' -H 'Client: flexion.etor-service-sender' -H 'Content-Type: application/fhir+ndjson' --data-binary '@/path/to/oml.fhir' 'https://staging.prime.cdc.gov/api/waters'
#
# To submit a result from al-phl, in staging:
# curl -H 'Authorization: Bearer TOKEN' -H 'Client: al-phl.etor-nbs-results' -H 'Content-Type: application/hl7-v2' --data-binary '@/path/to/oru.hl7' 'https://staging.prime.cdc.gov/api/waters'
---
- name: "al-phl"
description: "Alabama Public Health Lab"
jurisdiction: "STATE"
stateCode: "AL"
senders:
- name: "etor-nbs-results"
organizationName: "al-phl"
topic: "etor-ti"
customerStatus: "active"
format: "HL7"
receivers:
- name: "etor-nbs-orders"
organizationName: "al-phl"
topic: "etor-ti"
customerStatus: "active"
jurisdictionalFilter:
- "Bundle.entry.resource.ofType(MessageHeader).event.code = 'O21'" # OML_O21
- "Bundle.entry.resource.ofType(MessageHeader).meta.tag.where(system = 'http://localcodes.org/ETOR').code = 'ETOR'" # required to avoid looping issue with TI
- "Bundle.entry.resource.ofType(MessageHeader).destination.receiver.resolve().identifier.where(value = '2.16.840.1.114222.4.3.26.1.1').exists()" # receiver routing filter
qualityFilter:
- "true"
timing:
operation: "MERGE"
numberPerDay: 1440
initialTime: "00:00"
timeZone: "EASTERN"
maxReportCount: 100
translation:
type: "HL7"
schemaName: "classpath:/metadata/hl7_mapping/receivers/Flexion/TILabOrder.yml"
useBatchHeaders: false
receivingApplicationName: "AL-PHL"
receivingFacilityName: "AL"
transport:
host: "ph.state.al.us"
port: "22"
filePath: "./"
credentialName: null
type: "SFTP"
121 changes: 60 additions & 61 deletions prime-router/settings/STLTs/Flexion/flexion.yml
Original file line number Diff line number Diff line change
@@ -1,57 +1,60 @@
# To submit this to localhost, run:
# Flexion settings in staging
#
# To load the settings locally, run:
# ./prime multiple-settings set --input ./settings/STLTs/Flexion/flexion.yml
#
# To submit this to staging, run:
# To load the settings in staging, run:
# ./prime login --env staging
# ./prime multiple-settings set --env staging --input ./settings/STLTs/Flexion/flexion.yml
#
# Then add keys to it, as needed, like this:
# To add the sender keys in staging:
# ./prime organization addkey --env staging --public-key /path/to/public/key.pem --scope "flexion.*.report" --orgName flexion --kid flexion.simulated-hospital --doit
# ./prime organization addkey --env staging --public-key /path/to/public/key.pem --scope "flexion.*.report" --orgName flexion --kid flexion.etor-service-sender --doit
# ./prime organization addkey --env staging --public-key /path/to/public/key.pem --scope "flexion.*.report" --orgName flexion --kid flexion.simulated-lab --doit
#
# You may use the below curl command to submit a request. You just need to replace the TOKEN with the auth JWT and the path to the FHIR message to send
# curl -H 'Authorization: Bearer TOKEN' -H 'Client: flexion.etor-service-sender' -H 'Content-Type: application/fhir+ndjson' --data-binary '@/path/to/fhir/message.fhir' 'https://staging.prime.cdc.gov/api/waters'
# To submit an order or result to flexion.simulated-lab or flexion.simulated-hospital, in staging:
# Note: replace the TOKEN with the auth JWT and the path to the FHIR message to send
# curl -H 'Authorization: Bearer TOKEN' -H 'Client: flexion.etor-service-sender' -H 'Content-Type: application/fhir+ndjson' --data-binary '@/path/to/message.fhir' 'https://staging.prime.cdc.gov/api/waters'
#
# To submit an order from flexion.simulated-hospital, in staging:
# curl -H 'Authorization: Bearer TOKEN' -H 'Client: flexion.simulated-hospital' -H 'Content-Type: application/hl7-v2' --data-binary '@/path/to/order.hl7' 'https://staging.prime.cdc.gov/api/waters'
#
# To submit a result from flexion.simulated-lab, in staging:
# curl -H 'Authorization: Bearer TOKEN' -H 'Client: flexion.simulated-lab' -H 'Content-Type: application/hl7-v2' --data-binary '@/path/to/result.hl7' 'https://staging.prime.cdc.gov/api/waters'
---
- name: "flexion"
description: "Flexion, Inc."
jurisdiction: "FEDERAL"
senders:
# Orders Senders
# Hospital => RS
# Simulated Hospital ETOR Sender - Sending HL7 orders
- name: "simulated-hospital"
organizationName: "flexion"
topic: "etor-ti"
customerStatus: "active"
format: "HL7"
# TI => RS
# ETOR Service Sender Channel to ReportStream - Sending FHIR orders and results
# ETOR Service Sender - Sending FHIR orders and results from TI
- name: "etor-service-sender"
organizationName: "flexion"
topic: "etor-ti"
customerStatus: "active"
format: "FHIR"
schemaName: "classpath:/metadata/fhir_transforms/senders/Flexion/TILabOrder.yml"
# Results Senders
# PHL => RS
# Simulated State Public Health Lab ETOR Sender - Sending HL7 results
# *** Settings used for testing below ***
# Simulated Hospital Sender - Sending HL7 orders
- name: "simulated-hospital"
organizationName: "flexion"
topic: "etor-ti"
customerStatus: "active"
format: "HL7"
# Simulated State Public Health Lab Sender - Sending HL7 results
- name: "simulated-lab"
organizationName: "flexion"
topic: "etor-ti"
customerStatus: "active"
format: "HL7"
receivers:
# Orders Receivers
# RS => TI: translates ORM_O01 from HL7 to FHIR and sends the message to the TI service orders API
# ETOR Service Receiver for orders - Routes ORM_O01 and OML_O21 FHIR orders to TI orders endpoint
- name: "etor-service-receiver-orders"
externalName: "ETOR Service Receiver Channel from ReportStream - Receiving ORM_O01 and OML_O21 FHIR orders"
organizationName: "flexion"
topic: "etor-ti"
customerStatus: "active"
jurisdictionalFilter:
- "(Bundle.entry.resource.ofType(MessageHeader).event.code = 'O01') or (Bundle.entry.resource.ofType(MessageHeader).event.code = 'O21')" # ORM_O01 or OML_O21
- "Bundle.entry.resource.ofType(MessageHeader).meta.tag.exists(system = 'http://localcodes.org/ETOR').not()"
- "(Bundle.entry.resource.ofType(MessageHeader).event.code = 'O01') or (Bundle.entry.resource.ofType(MessageHeader).event.code = 'O21')" # ORM_O01 or OML_O21
- "Bundle.entry.resource.ofType(MessageHeader).meta.tag.exists(system = 'http://localcodes.org/ETOR').not()" # required to avoid looping issue
qualityFilter:
- "true"
timing:
Expand All @@ -60,7 +63,6 @@
initialTime: "00:00"
translation:
type: "FHIR"
schemaName: "classpath:/metadata/fhir_transforms/receivers/fhir-transform-sample.yml"
useBatching: false
transport:
type: "REST"
Expand All @@ -82,43 +84,15 @@
authHeaders:
Content-Type: "application/x-www-form-urlencoded"
Host: "cdcti-stg-api.azurewebsites.net"
# RS => PHL: translates OML_O21 from FHIR to HL7 and uploads the message to the SFTP folder
- name: "simulated-lab"
externalName: "Simulated State Public Health Lab ETOR Receiver - Receiving OML_O21 HL7 orders"
organizationName: "flexion"
topic: "etor-ti"
customerStatus: "active"
jurisdictionalFilter:
- "Bundle.entry.resource.ofType(MessageHeader).event.code = 'O21'" # OML_O21
- "Bundle.entry.resource.ofType(MessageHeader).meta.tag.where(system = 'http://localcodes.org/ETOR').code = 'ETOR'"
- "Bundle.entry.resource.ofType(MessageHeader).destination.receiver.resolve().identifier.where(value = 'simulated-lab-id').exists()"
qualityFilter:
- "true"
timing:
operation: "MERGE"
numberPerDay: 1440 # Every minute
initialTime: "00:00"
translation:
type: "HL7"
schemaName: "classpath:/metadata/hl7_mapping/receivers/Flexion/TILabOrder.yml"
useTestProcessingMode: false
useBatchHeaders: false
transport:
type: "SFTP"
host: "172.17.6.20" # use "sftp" if running locally
port: 22
filePath: "./upload"
credentialName: null # use "DEFAULT-SFTP" if running locally
# Results Receivers
# RS => TI: translates ORU_R01 from HL7 to FHIR and uploads the message to the SFTP folder
# ETOR Service Receiver for results - Routes ORU_R01 FHIR results to TI results endpoint
- name: "etor-service-receiver-results"
externalName: "ETOR Service Receiver Channel from ReportStream for results - Receiving ORU_R01 FHIR results"
organizationName: "flexion"
topic: "etor-ti"
customerStatus: "active"
jurisdictionalFilter:
- "Bundle.entry.resource.ofType(MessageHeader).event.code = 'R01'" # ORU_R01
- "Bundle.entry.resource.ofType(MessageHeader).meta.tag.exists(system = 'http://localcodes.org/ETOR').not()"
- "Bundle.entry.resource.ofType(MessageHeader).event.code = 'R01'" # ORU_R01
- "Bundle.entry.resource.ofType(MessageHeader).meta.tag.exists(system = 'http://localcodes.org/ETOR').not()" # required to avoid looping issue
qualityFilter:
- "true"
timing:
Expand All @@ -127,7 +101,6 @@
initialTime: "00:00"
translation:
type: "FHIR"
schemaName: "classpath:/metadata/fhir_transforms/receivers/fhir-transform-sample.yml"
useBatching: false
transport:
type: "REST"
Expand All @@ -147,16 +120,16 @@
authHeaders:
Content-Type: "application/x-www-form-urlencoded"
Host: "cdcti-stg-api.azurewebsites.net"
# RS => Hospital: translates ORU_R01 from FHIR to HL7 and uploads the message to the SFTP folder
# *** Settings used for testing below ***
# Simulated Hospital Receiver: converts ORU_R01 from FHIR to HL7 and routes the message to the SFTP folder
- name: "simulated-hospital"
externalName: "Simulated Hospital ETOR Receiver - Receiving ORU_R01 HL7 results"
organizationName: "flexion"
topic: "etor-ti"
customerStatus: "active"
jurisdictionalFilter:
- "Bundle.entry.resource.ofType(MessageHeader).event.code = 'R01'" # ORU_R01
- "Bundle.entry.resource.ofType(MessageHeader).meta.tag.where(system = 'http://localcodes.org/ETOR').code = 'ETOR'"
- "Bundle.entry.resource.ofType(MessageHeader).destination.receiver.resolve().identifier.where(value = 'simulated-hospital-id').exists()"
- "Bundle.entry.resource.ofType(MessageHeader).event.code = 'R01'" # ORU_R01
- "Bundle.entry.resource.ofType(MessageHeader).meta.tag.where(system = 'http://localcodes.org/ETOR').code = 'ETOR'" # required to avoid looping issue
- "Bundle.entry.resource.ofType(MessageHeader).destination.receiver.resolve().identifier.where(value = 'simulated-hospital-id').exists()" # receiver routing filter
qualityFilter:
- "true"
timing:
Expand All @@ -174,3 +147,29 @@
port: 22
filePath: "./upload"
credentialName: null # use "DEFAULT-SFTP" if running locally
# Simulated State Public Health Lab Receiver: converts OML_O21 from FHIR to HL7 and routes the message to the SFTP folder
- name: "simulated-lab"
organizationName: "flexion"
topic: "etor-ti"
customerStatus: "active"
jurisdictionalFilter:
- "Bundle.entry.resource.ofType(MessageHeader).event.code = 'O21'" # OML_O21
- "Bundle.entry.resource.ofType(MessageHeader).meta.tag.where(system = 'http://localcodes.org/ETOR').code = 'ETOR'" # required to avoid looping issue
- "Bundle.entry.resource.ofType(MessageHeader).destination.receiver.resolve().identifier.where(value = 'simulated-lab-id').exists()" # receiver routing filter
qualityFilter:
- "true"
timing:
operation: "MERGE"
numberPerDay: 1440 # Every minute
initialTime: "00:00"
translation:
type: "HL7"
schemaName: "classpath:/metadata/hl7_mapping/receivers/Flexion/TILabOrder.yml"
useTestProcessingMode: false
useBatchHeaders: false
transport:
type: "SFTP"
host: "172.17.6.20" # use "sftp" if running locally
port: 22
filePath: "./upload"
credentialName: null # use "DEFAULT-SFTP" if running locally
53 changes: 53 additions & 0 deletions prime-router/settings/STLTs/LA/la-ochsner.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
# Ochsner settings for Louisiana in staging
#
# To load the settings in staging, run:
# ./prime login --env staging
# ./prime multiple-settings set --env staging --input ./settings/STLTs/LA/la-ochsner.yml
#
# To add the sender key in staging:
# ./prime organization addkey --env staging --public-key /path/to/public/key.pem --scope "la-ochsner.*.report" --orgName la-ochsner --kid la-ochsner.etor-nbs-orders --doit
#
# To submit a result to la-ochsner, in staging:
# Note: replace the TOKEN with the auth JWT and the path to the FHIR message to send
# curl -H 'Authorization: Bearer TOKEN' -H 'Client: flexion.etor-service-sender' -H 'Content-Type: application/fhir+ndjson' --data-binary '@/path/to/oru.fhir' 'https://staging.prime.cdc.gov/api/waters'
#
# To submit an order from la-ochsner, in staging:
# curl -H 'Authorization: Bearer TOKEN' -H 'Client: la-ochsner.etor-nbs-orders' -H 'Content-Type: application/hl7-v2' --data-binary '@/path/to/order.hl7' 'https://staging.prime.cdc.gov/api/waters'
---
- name: "la-ochsner"
description: "Ochsner - Louisiana"
jurisdiction: "STATE"
stateCode: "LA"
senders:
- name: "etor-nbs-orders"
organizationName: "la-ochsner"
topic: "etor-ti"
customerStatus: "active"
format: "HL7"
receivers:
- name: "etor-nbs-results"
organizationName: "la-ochsner"
topic: "etor-ti"
customerStatus: "active"
translation:
type: "HL7"
schemaName: "classpath:/metadata/hl7_mapping/ORU_R01/ORU_R01-base.yml"
useBatchHeaders: false
jurisdictionalFilter:
- "Bundle.entry.resource.ofType(MessageHeader).event.code = 'R01'" # ORU_R01
- "Bundle.entry.resource.ofType(MessageHeader).meta.tag.where(system = 'http://localcodes.org/ETOR').code = 'ETOR'" # required to avoid looping issue with TI
# Pending: add filter(s) for routing
qualityFilter:
- "true"
timing:
operation: "MERGE"
numberPerDay: 1440
initialTime: "00:00"
timeZone: "EASTERN"
maxReportCount: 100
transport:
type: "SFTP"
host: "172.17.6.20"
port: 22
filePath: "./upload"
credentialName: null
21 changes: 18 additions & 3 deletions prime-router/settings/STLTs/LA/la-phl.yml
Original file line number Diff line number Diff line change
@@ -1,3 +1,19 @@
# Louisiana Public Health Lab settings for staging
#
# To load the settings in staging, run:
# ./prime login --env staging
# ./prime multiple-settings set --env staging --input ./settings/STLTs/LA/la-phl.yml
#
# To add the sender key in staging:
# ./prime organization addkey --env staging --public-key /path/to/public/key.pem --scope "la-phl.*.report" --orgName la-phl --kid la-phl.etor-nbs-results --doit
#
# To submit an order to la-phl, in staging:
# Note: replace the TOKEN with the auth JWT and the path to the FHIR message to send
# curl -H 'Authorization: Bearer TOKEN' -H 'Client: flexion.etor-service-sender' -H 'Content-Type: application/fhir+ndjson' --data-binary '@/path/to/oml.fhir' 'https://staging.prime.cdc.gov/api/waters'
#
# To submit a result from la-phl, in staging:
# curl -H 'Authorization: Bearer TOKEN' -H 'Client: la-phl.etor-nbs-results' -H 'Content-Type: application/hl7-v2' --data-binary '@/path/to/oru.hl7' 'https://staging.prime.cdc.gov/api/waters'
---
- name: "la-phl"
description: "Louisiana Public Health Lab"
jurisdiction: "STATE"
Expand All @@ -11,13 +27,12 @@
receivers:
- name: "etor-nbs-orders"
organizationName: "la-phl"
externalName: "Louisiana State Public Health Lab ETOR Receiver"
topic: "etor-ti"
customerStatus: "active"
jurisdictionalFilter:
- "Bundle.entry.resource.ofType(MessageHeader).event.code = 'O21'" # OML_O21
- "Bundle.entry.resource.ofType(MessageHeader).meta.tag.where(system = 'http://localcodes.org/ETOR').code = 'ETOR'"
- "Bundle.entry.resource.ofType(MessageHeader).destination.receiver.resolve().identifier.where(value = '2.16.840.1.114222.4.3.26.3.2').exists()"
- "Bundle.entry.resource.ofType(MessageHeader).meta.tag.where(system = 'http://localcodes.org/ETOR').code = 'ETOR'" # required to avoid looping issue with TI
- "Bundle.entry.resource.ofType(MessageHeader).destination.receiver.resolve().identifier.where(value = '2.16.840.1.114222.4.3.26.3.2').exists()" # receiver routing filter
qualityFilter:
- "true"
timing:
Expand Down
52 changes: 52 additions & 0 deletions prime-router/settings/STLTs/Oracle/oracle-rln.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,52 @@
# Oracle RLN settings in staging
#
# To load the settings in staging, run:
# ./prime login --env staging
# ./prime multiple-settings set --env staging --input ./settings/STLTs/Oracle/oracle-rln.yml
#
# To add the sender key in staging:
# ./prime organization addkey --env staging --public-key /path/to/public/key.pem --scope "oracle-rln.*.report" --orgName oracle-rln --kid oracle-rln.etor-nbs-orders --doit
#
# To submit a result to oracle-rln, in staging:
# Note: replace the TOKEN with the auth JWT and the path to the FHIR message to send
# curl -H 'Authorization: Bearer TOKEN' -H 'Client: flexion.etor-service-sender' -H 'Content-Type: application/fhir+ndjson' --data-binary '@/path/to/oru.fhir' 'https://staging.prime.cdc.gov/api/waters'
#
# To submit an order from la-ochsner, in staging:
# curl -H 'Authorization: Bearer TOKEN' -H 'Client: oracle-rln.etor-nbs-orders' -H 'Content-Type: application/hl7-v2' --data-binary '@/path/to/order.hl7' 'https://staging.prime.cdc.gov/api/waters'
---
- name: "oracle-rln"
description: "Oracle RLN"
jurisdiction: "FEDERAL"
senders:
- name: "etor-nbs-orders"
organizationName: "oracle-rln"
topic: "etor-ti"
customerStatus: "active"
format: "HL7"
receivers:
- name: "etor-nbs-results"
organizationName: "oracle-rln"
topic: "etor-ti"
customerStatus: "active"
translation:
type: "HL7"
schemaName: "classpath:/metadata/hl7_mapping/ORU_R01/ORU_R01-base.yml"
useBatchHeaders: false
jurisdictionalFilter:
- "Bundle.entry.resource.ofType(MessageHeader).event.code = 'R01'" # ORU_R01
- "Bundle.entry.resource.ofType(MessageHeader).meta.tag.where(system = 'http://localcodes.org/ETOR').code = 'ETOR'" # required to avoid looping issue with TI
# Pending: add filter(s) for routing
qualityFilter:
- "true"
timing:
operation: "MERGE"
numberPerDay: 1440
initialTime: "00:00"
timeZone: "EASTERN"
maxReportCount: 100
transport:
type: "SFTP"
host: "172.17.6.20"
port: 22
filePath: "./upload"
credentialName: null

0 comments on commit 122f9cb

Please sign in to comment.