A controller for reading waveform data from a rabbitmq queue and processing it.
Follow the emap development instructions configure and deploy a version of EMAP. To run a local version you'll need to set
fake_uds:
enable_fake_uds: true
uds:
UDS_JDBC_URL: jdbc:postgresql://fakeuds:5432/fakeuds
and configure and synthetic waveform generator
waveform:
enable_waveform: true
enable_waveform_generator: true
CORE_WAVEFORM_RETENTION_HOURS: 24
WAVEFORM_HL7_SOURCE_ADDRESS_ALLOW_LIST: ALL
WAVEFORM_HL7_TEST_DUMP_FILE: ""
WAVEFORM_HL7_SAVE_DIRECTORY: "/waveform-saved-messages"
WAVEFORM_SYNTHETIC_NUM_PATIENTS: 2
WAVEFORM_SYNTHETIC_WARP_FACTOR:1
WAVEFORM_SYNTHETIC_START_DATETIME: "2024-01-02T12:00:00Z"
WAVEFORM_SYNTHETIC_END_DATETIME: "2024-01-03T12:00:00Z"
Once configured you can start it with
emap docker up -d
Configuration, copy the configuration file to the config directory and edit as necessary. Remove the comment telling you not to put secrets in it.
cp settings.env.EXAMPLE config/settings.env
If it doesn't already exist you should create a directory named
waveform-export in the parent directory to store the saved waveform
messages.
mkdir ../waveform-export
Build and start the controller with docker
cd ../waveform-controller
docker compose build
docker compose up -d
Running the controller will save (to ../waveform-export) waveform messages
matched to Contact Serial Number (CSN) as csv files, each containing data for
one calender day, as
YYYY-MM-DD.CSN.sourceName.units.csv
Each row of the csv will contain
csn, mrn, units, samplingRate, observationTime, waveformData
See developing docs