def testCreateTriggerLabelsPairLists(self): trigger1 = text_format.Parse( """ event_time { value_us: 1417392000000000 } # "2014-12-01T00:00:00+00:00" source { encounter_id { value: "1" } } """, google_extensions_pb2.EventTrigger()) trigger2 = text_format.Parse( """ event_time { value_us: 1417428000000000 } # "2014-12-01T01:00:00+00:00" """, google_extensions_pb2.EventTrigger()) label1 = text_format.Parse( """ patient { patient_id { value: "14" } } type { code { value: "test1" } } event_time { value_us: 1417392000000000 } # "2014-12-01T00:00:00+00:00" source { encounter_id { value: "1" } } """, google_extensions_pb2.EventLabel()) label2 = text_format.Parse( """ patient { patient_id { value: "14" } } type { code { value: "test2" } } event_time { value_us: 1417428000000000 } # "2014-12-01T01:00:00+00:00" label { class_name { system { value: "urn:test:label" } code { value: "green" } } } """, google_extensions_pb2.EventLabel()) with test_pipeline.TestPipeline() as p: event_labels_pcoll = ( p | "CreateEventLabels" >> beam.Create([label1, label2])) result = bundle_to_seqex.CreateTriggerLabelsPairLists( event_labels_pcoll) def check_result(got): try: self.assertLen(got, 1) (got_key, got_trigger_labels_pairs_list) = got[0] self.assertEqual(b"Patient/14", got_key) self.assertLen(got_trigger_labels_pairs_list, 2) # Sort got_trigger_labels_pairs_list by trigger.event_time, so that # the ordering is always consistent in ordering. sorted_list = sorted( got_trigger_labels_pairs_list, key=lambda x: x[0].event_time.value_us) (got_trigger1, got_label_list1) = sorted_list[0] self.assertProtoEqual(got_trigger1, trigger1) self.assertLen(got_label_list1, 1) self.assertProtoEqual(got_label_list1[0], label1) (got_trigger2, got_label_list2) = sorted_list[1] self.assertProtoEqual(got_trigger2, trigger2) self.assertLen(got_label_list2, 1) self.assertProtoEqual(got_label_list2[0], label2) except AssertionError as err: raise util.BeamAssertException(err) util.assert_that(result, check_result)
def test_get_trigger_labels_from_input_labels(self): trigger1 = text_format.Parse( """ event_time { value_us: 1417392000000000 } # "2014-12-01T00:00:00+00:00" source { encounter_id { value: "1" } } """, google_extensions_pb2.EventTrigger()) trigger2 = text_format.Parse( """ event_time { value_us: 1417428000000000 } # "2014-12-01T01:00:00+00:00" """, google_extensions_pb2.EventTrigger()) label1 = text_format.Parse( """ patient { patient_id { value: "14" } } type { code { value: "test1" } } event_time { value_us: 1417392000000000 } # "2014-12-01T00:00:00+00:00" source { encounter_id { value: "1" } } """, google_extensions_pb2.EventLabel()) label2 = text_format.Parse( """ patient { patient_id { value: "14" } } type { code { value: "test2" } } event_time { value_us: 1417428000000000 } # "2014-12-01T01:00:00+00:00" label { class_name { system { value: "urn:test:label" } code { value: "green " } } } """, google_extensions_pb2.EventLabel()) got_list = bundle_to_seqex_util.get_trigger_labels_from_input_labels( [label1, label2]) self.assertLen(got_list, 2) (got_trigger_1, got_label_list1) = got_list[0] (got_trigger_2, got_label_list2) = got_list[1] self.assertProtoEqual(got_trigger_1, trigger1) self.assertLen(got_label_list1, 1) self.assertProtoEqual(got_label_list1[0], label1) self.assertProtoEqual(got_trigger_2, trigger2) self.assertLen(got_label_list2, 1) self.assertProtoEqual(got_label_list2[0], label2)
def testSingleTriggerAndStats(self): event_trigger = text_format.Parse( """ event_time { value_us: 1420102800000000 } """, google_extensions_pb2.EventTrigger()) event_trigger_labels = (event_trigger, list()) event_trigger_labels_list = (event_trigger_labels,) bundle = text_format.Parse( """ entry { resource { patient { id { value: "14" } birth_date { value_us: 8640000000000 } } } } entry { resource { medication_request { id { value: "1" } subject { patient_id { value: "14" } } contained { medication { id { value: "med" } code { coding { system { value: "http://hl7.org/fhir/sid/ndc" } code { value: "123" } } } } } authored_on { value_us: 1420095600000000 # "2015-01-01T07:00:00+00:00" } medication { reference { medication_id { value: "med" } } } } } } """, resources_pb2.Bundle()) expected_seqex = text_format.Parse( """ context: { feature { key: "currentEncounterId" value { int64_list { value: 1420095600 } } } feature { key: "patientId" value { bytes_list { value: "14" } } } feature { key: "Patient.birthDate" value { int64_list { value: 8640000 } } } feature { key: "sequenceLength" value { int64_list { value: 1 } } } feature { key: "timestamp" value { int64_list { value: 1420102800 } } } } feature_lists: { feature_list { key: "MedicationRequest.contained.medication.code.ndc" value { feature { bytes_list { value: "123" } } } } feature_list { key: "MedicationRequest.meta.lastUpdated" value { feature { int64_list { value: 1420095600 } } } } feature_list { key: "MedicationRequest.authoredOn" value { feature { int64_list { value: 1420095600 } } } } feature_list { key: "eventId" value { feature { int64_list { value: 1420095600 } } } } feature_list { key: "MedicationRequest.contained.medication.code" value { feature { bytes_list { value: "ndc:123" } } } } feature_list { key: "encounterId" value { feature { int64_list { value: 1420095600 } } } } } """, example_pb2.SequenceExample()) got_stats = self._runTest( "Patient/14", bundle, event_trigger_labels_list, (("Patient/14:0-1@1420102800", expected_seqex, 1),)) # We only spot check a few counters here. The main goal is to make sure # we get the counters back from c++ land. self.assertEqual(1, got_stats.get("num-examples"))
def testMultipleTriggersAndExamples(self): event_trigger1 = text_format.Parse( """ event_time { value_us: 1417424400000000 } source { encounter_id { value: "1" } } """, google_extensions_pb2.EventTrigger()) event_trigger2 = text_format.Parse( """ event_time { value_us: 1420102800000000 } source { encounter_id { value: "2" } } """, google_extensions_pb2.EventTrigger()) event_trigger_labels1 = ( event_trigger1, list(), ) event_trigger_labels2 = ( event_trigger2, list(), ) event_trigger_labels_list = ( event_trigger_labels1, event_trigger_labels2, ) bundle = text_format.Parse( """ entry { resource { patient { id { value: "14" } } } } entry { resource { encounter { id { value: "1" } subject { patient_id { value: "14" } } class_value { system { value: "http://hl7.org/fhir/v3/ActCode" } code { value: "IMP" } } reason { coding { system { value: "http://hl7.org/fhir/sid/icd-9-cm/diagnosis" } code { value: "V410.9" } display { value: "Standard issue" } } } period { start { value_us: 1417420800000000 # "2014-12-01T08:00:00+00:00" } end { value_us: 1417424400000000 # "2014-12-01T09:00:00+00:00" } } } } } entry { resource { encounter { id { value: "2" } subject { patient_id { value: "14" } } class_value { system { value: "http://hl7.org/fhir/v3/ActCode" } code { value: "IMP" } } reason { coding { system { value: "http://hl7.org/fhir/sid/icd-9-cm/diagnosis" } code { value: "191.4" } display { value: "Malignant neoplasm of occipital lobe" } } } period { start { value_us: 1420099200000000 # "2015-01-01T08:00:00+00:00" } end { value_us: 1420102800000000 # "2015-01-01T09:00:00+00:00" } } } } } """, resources_pb2.Bundle()) # pylint: disable=line-too-long expected_seqex1 = text_format.Parse( """ context: { feature { key: "currentEncounterId" value { int64_list { value: 1417420800 } } } feature { key: "patientId" value { bytes_list { value: "14" } } } feature { key: "sequenceLength" value { int64_list { value: 2 } } } feature { key: "timestamp" value { int64_list { value: 1417424400 } } } } feature_lists: { feature_list { key: "Encounter.class" value { feature { bytes_list { value: "actcode:IMP" } } feature { bytes_list { value: "actcode:IMP" } } } } feature_list { key: "Encounter.meta.lastUpdated" value { feature { int64_list { value: 1417420800 } } feature { int64_list { value: 1417424400 } } } } feature_list { key: "Encounter.period.start" value { feature { int64_list { value: 1417420800 } } feature { int64_list { value: 1417420800 } } } } feature_list { key: "Encounter.period.end" value { feature { int64_list { } } feature { int64_list { value: 1417424400 } } } } feature_list { key: "Encounter.reason" value { feature { bytes_list { } } feature { bytes_list { value: "icd9:V410.9" } } } } feature_list { key: "Encounter.reason.icd9" value { feature { bytes_list { } } feature { bytes_list { value: "V410.9" } } } } feature_list { key: "Encounter.reason.icd9.display.tokenized" value { feature { bytes_list { } } feature { bytes_list { value: "standard" value: "issue" } } } } feature_list { key: "encounterId" value { feature { int64_list { value: 1417420800 } } feature { int64_list { value: 1417420800 } } } } feature_list { key: "eventId" value { feature { int64_list { value: 1417420800 } } feature { int64_list { value: 1417424400 } } } } } """, example_pb2.SequenceExample()) expected_seqex2 = text_format.Parse( """ context: { feature { key: "currentEncounterId" value { int64_list { value: 1420099200 } } } feature { key: "patientId" value { bytes_list { value: "14" } } } feature { key: "sequenceLength" value { int64_list { value: 4 } } } feature { key: "timestamp" value { int64_list { value: 1420102800 } } } } feature_lists: { feature_list { key: "Encounter.class" value { feature { bytes_list { value: "actcode:IMP" } } feature { bytes_list { value: "actcode:IMP" } } feature { bytes_list { value: "actcode:IMP" } } feature { bytes_list { value: "actcode:IMP" } } } } feature_list { key: "Encounter.meta.lastUpdated" value { feature { int64_list { value: 1417420800 } } feature { int64_list { value: 1417424400 } } feature { int64_list { value: 1420099200 } } feature { int64_list { value: 1420102800 } } } } feature_list { key: "Encounter.period.start" value { feature { int64_list { value: 1417420800 } } feature { int64_list { value: 1417420800 } } feature { int64_list { value: 1420099200 } } feature { int64_list { value: 1420099200 } } } } feature_list { key: "Encounter.period.end" value { feature { int64_list { } } feature { int64_list { value: 1417424400 } } feature { int64_list { } } feature { int64_list { value: 1420102800 } } } } feature_list { key: "Encounter.reason" value { feature { bytes_list { } } feature { bytes_list { value: "icd9:V410.9" } } feature { bytes_list { } } feature { bytes_list { value: "icd9:191.4" } } } } feature_list { key: "Encounter.reason.icd9" value { feature { bytes_list { } } feature { bytes_list { value: "V410.9" } } feature { bytes_list { } } feature { bytes_list { value: "191.4" } } } } feature_list { key: "Encounter.reason.icd9.display.tokenized" value { feature { bytes_list { } } feature { bytes_list { value: "standard" value: "issue" } } feature { bytes_list { } } feature { bytes_list { value: "malignant" value: "neoplasm" value: "of" value: "occipital" value: "lobe" } } } } feature_list { key: "encounterId" value { feature { int64_list { value: 1417420800 } } feature { int64_list { value: 1417420800 } } feature { int64_list { value: 1420099200 } } feature { int64_list { value: 1420099200 } } } } feature_list { key: "eventId" value { feature { int64_list { value: 1417420800 } } feature { int64_list { value: 1417424400 } } feature { int64_list { value: 1420099200 } } feature { int64_list { value: 1420102800 } } } } } """, example_pb2.SequenceExample()) # pylint: enable=line-too-long _ = self._runTest("Patient/14", bundle, event_trigger_labels_list, ( ("Patient/14:0-2@1417424400:Encounter/1", expected_seqex1, 2), ("Patient/14:0-4@1420102800:Encounter/2", expected_seqex2, 4), ))
def testSingleTriggerAndLabel(self): event_trigger = text_format.Parse( """ event_time { value_us: 1420102800000000 } source { encounter_id { value: "1" } } """, google_extensions_pb2.EventTrigger()) event_label = text_format.Parse( """ patient { patient_id { value: "14" } } type { code { value: "test1" }} event_time { value_us: 1420102800000000 } label { class_name { system { value: "urn:test:label" } code { value: "red" } } } """, google_extensions_pb2.EventLabel()) event_trigger_labels = ( event_trigger, (event_label,), ) event_trigger_labels_list = (event_trigger_labels,) bundle = text_format.Parse( """ entry { resource { patient { id { value: "14" } } } } entry { resource { condition { id { value: "1" } subject { patient_id { value: "14" } } code { coding { system { value: "http://hl7.org/fhir/sid/icd-9-cm/diagnosis" } code { value: "bar" } } } asserted_date { value_us: 1417392000000000 # "2014-12-01T00:00:00+00:00" } } } } entry { resource { condition { id { value: "2" } subject { patient_id { value: "14" } } code { coding { system { value: "http://hl7.org/fhir/sid/icd-9-cm/diagnosis" } code { value: "baz" } } } asserted_date { value_us: 1420099200000000 # "2015-01-01T08:00:00+00:00" } } } } entry { resource { composition { id { value: "1" } subject { patient_id { value: "14" } } encounter { encounter_id { value: "1" } } section { text { div { value: "test text" } } } date { value_us: 1420102800000000 timezone: "UTC" precision: SECOND } } } } entry { resource { encounter { id { value: "1" } subject { patient_id { value: "14" } } class_value { system { value: "http://hl7.org/fhir/v3/ActCode" } code { value: "IMP" } } reason { coding { system { value: "http://hl7.org/fhir/sid/icd-9-cm/diagnosis" } code { value: "191.4" } display { value: "Malignant neoplasm of occipital lobe" } } } period { start { value_us: 1420099200000000 # "2015-01-01T08:00:00+00:00" } end { value_us: 1420102800000000 # "2015-01-01T09:00:00+00:00" } } } } } """, resources_pb2.Bundle()) # pylint: disable=line-too-long expected_seqex = text_format.Parse( """ context: { feature { key: "currentEncounterId" value { int64_list { value: 1420099200 } } } feature { key: "label.test1.class" value { bytes_list { value: "red" } } } feature { key: "label.test1.timestamp_secs" value { int64_list { value: 1420102800 } } } feature { key: "patientId" value { bytes_list { value: "14" } } } feature { key: "sequenceLength" value { int64_list { value: 5 } } } feature { key: "timestamp" value { int64_list { value: 1420102800 } } } } feature_lists: { feature_list { key: "Composition.meta.lastUpdated" value { feature { int64_list { } } feature { int64_list { } } feature { int64_list { } } feature { int64_list { value: 1420102800 } } feature { int64_list { } } } } feature_list { key: "Composition.date" value { feature { int64_list { } } feature { int64_list { } } feature { int64_list { } } feature { int64_list { value: 1420102800 } } feature { int64_list { } } } } feature_list { key: "Composition.section.text.div.tokenized" value { feature { bytes_list { } } feature { bytes_list { } } feature { bytes_list { } } feature { bytes_list { value: "test" value: "text" } } feature { bytes_list { } } } } feature_list { key: "Condition.meta.lastUpdated" value { feature { int64_list { value: 1417392000 } } feature { int64_list { value: 1420099200 } } feature { int64_list { } } feature { int64_list { } } feature { int64_list { } } } } feature_list { key: "Condition.code" value { feature { bytes_list { value: "icd9:bar" } } feature { bytes_list { value: "icd9:baz" } } feature { bytes_list { } } feature { bytes_list { } } feature { bytes_list { } } } } feature_list { key: "Condition.code.icd9" value { feature { bytes_list { value: "bar" } } feature { bytes_list { value: "baz" } } feature { bytes_list { } } feature { bytes_list { } } feature { bytes_list { } } } } feature_list { key: "Condition.assertedDate" value { feature { int64_list { value: 1417392000 } } feature { int64_list { value: 1420099200 } } feature { int64_list { } } feature { int64_list { } } feature { int64_list { } } } } feature_list { key: "Encounter.class" value { feature { bytes_list { } } feature { bytes_list { } } feature { bytes_list { value: "actcode:IMP" } } feature { bytes_list { } } feature { bytes_list { value: "actcode:IMP" } } } } feature_list { key: "Encounter.meta.lastUpdated" value { feature { int64_list { } } feature { int64_list { } } feature { int64_list { value: 1420099200 } } feature { int64_list { } } feature { int64_list { value: 1420102800 } } } } feature_list { key: "Encounter.period.start" value { feature { int64_list { } } feature { int64_list { } } feature { int64_list { value: 1420099200 } } feature { int64_list { } } feature { int64_list { value: 1420099200 } } } } feature_list { key: "Encounter.period.end" value { feature { int64_list { } } feature { int64_list { } } feature { int64_list { } } feature { int64_list { } } feature { int64_list { value: 1420102800 } } } } feature_list { key: "Encounter.reason" value { feature { bytes_list { } } feature { bytes_list { } } feature { bytes_list { } } feature { bytes_list { } } feature { bytes_list { value: "icd9:191.4" } } } } feature_list { key: "Encounter.reason.icd9" value { feature { bytes_list { } } feature { bytes_list { } } feature { bytes_list { } } feature { bytes_list { } } feature { bytes_list { value: "191.4" } } } } feature_list { key: "Encounter.reason.icd9.display.tokenized" value { feature { bytes_list { } } feature { bytes_list { } } feature { bytes_list { } } feature { bytes_list { } } feature { bytes_list { value: "malignant" value: "neoplasm" value: "of" value: "occipital" value: "lobe" } } } } feature_list { key: "encounterId" value { feature { int64_list { value: 1417392000 } } feature { int64_list { value: 1420099200 } } feature { int64_list { value: 1420099200 } } feature { int64_list { value: 1420099200 } } feature { int64_list { value: 1420099200 } } } } feature_list { key: "eventId" value { feature { int64_list { value: 1417392000 } } feature { int64_list { value: 1420099200 } } feature { int64_list { value: 1420099200 } } feature { int64_list { value: 1420102800 } } feature { int64_list { value: 1420102800 } } } } } """, example_pb2.SequenceExample()) # pylint: enable=line-too-long _ = self._runTest( "Patient/14", bundle, event_trigger_labels_list, (("Patient/14:0-5@1420102800:Encounter/1", expected_seqex, 5),))
def testBundleAndLabelsToSeqexDoFn(self): event_trigger1 = text_format.Parse( """ event_time { value_us: 1417424400000000 } source { encounter_id { value: "1" } } """, google_extensions_pb2.EventTrigger()) event_trigger2 = text_format.Parse( """ event_time { value_us: 1420102800000000 } source { encounter_id { value: "2" } } """, google_extensions_pb2.EventTrigger()) event_trigger_labels1 = ( event_trigger1, list(), ) event_trigger_labels2 = ( event_trigger2, list(), ) event_trigger_labels_list = [ event_trigger_labels1, event_trigger_labels2, ] bundle = text_format.Parse( """ entry { resource { patient { id { value: "14" } } } } entry { resource { encounter { id { value: "1" } subject { patient_id { value: "14" } } class_value { system { value: "http://hl7.org/fhir/v3/ActCode" } code { value: "IMP" } } reason { coding { system { value: "http://hl7.org/fhir/sid/icd-9-cm/diagnosis" } code { value: "V410.9" } display { value: "Standard issue" } } } period { start { value_us: 1417420800000000 # "2014-12-01T08:00:00+00:00" } end { value_us: 1417424400000000 # "2014-12-01T09:00:00+00:00" } } } } } entry { resource { encounter { id { value: "2" } subject { patient_id { value: "14" } } class_value { system { value: "http://hl7.org/fhir/v3/ActCode" } code { value: "IMP" } } reason { coding { system { value: "http://hl7.org/fhir/sid/icd-9-cm/diagnosis" } code { value: "191.4" } display { value: "Malignant neoplasm of occipital lobe" } } } period { start { value_us: 1420099200000000 # "2015-01-01T08:00:00+00:00" } end { value_us: 1420102800000000 # "2015-01-01T09:00:00+00:00" } } } } } """, resources_pb2.Bundle()) # pylint: disable=line-too-long expected_seqex1 = text_format.Parse( """ context: { feature { key: "currentEncounterId" value { int64_list { value: 1417420800 } } } feature { key: "patientId" value { bytes_list { value: "14" } } } feature { key: "sequenceLength" value { int64_list { value: 2 } } } feature { key: "timestamp" value { int64_list { value: 1417424400 } } } } feature_lists: { feature_list { key: "Encounter.class" value { feature { bytes_list { value: "http-hl7-org-fhir-v3-ActCode:IMP" } } feature { bytes_list { value: "http-hl7-org-fhir-v3-ActCode:IMP" } } } } feature_list { key: "Encounter.meta.lastUpdated" value { feature { int64_list { value: 1417420800 } } feature { int64_list { value: 1417424400 } } } } feature_list { key: "Encounter.period.start" value { feature { int64_list { value: 1417420800 } } feature { int64_list { value: 1417420800 } } } } feature_list { key: "Encounter.period.end" value { feature { int64_list { } } feature { int64_list { value: 1417424400 } } } } feature_list { key: "Encounter.reason.http-hl7-org-fhir-sid-icd-9-cm-diagnosis" value { feature { bytes_list { } } feature { bytes_list { value: "V410.9" } } } } feature_list { key: "Encounter.reason.http-hl7-org-fhir-sid-icd-9-cm-diagnosis.display.tokenized" value { feature { bytes_list { } } feature { bytes_list { value: "standard" value: "issue" } } } } feature_list { key: "encounterId" value { feature { int64_list { value: 1417420800 } } feature { int64_list { value: 1417420800 } } } } feature_list { key: "eventId" value { feature { int64_list { value: 1417420800 } } feature { int64_list { value: 1417424400 } } } } } """, example_pb2.SequenceExample()) expected_seqex2 = text_format.Parse( """ context: { feature { key: "currentEncounterId" value { int64_list { value: 1420099200 } } } feature { key: "patientId" value { bytes_list { value: "14" } } } feature { key: "sequenceLength" value { int64_list { value: 4 } } } feature { key: "timestamp" value { int64_list { value: 1420102800 } } } } feature_lists: { feature_list { key: "Encounter.class" value { feature { bytes_list { value: "http-hl7-org-fhir-v3-ActCode:IMP" } } feature { bytes_list { value: "http-hl7-org-fhir-v3-ActCode:IMP" } } feature { bytes_list { value: "http-hl7-org-fhir-v3-ActCode:IMP" } } feature { bytes_list { value: "http-hl7-org-fhir-v3-ActCode:IMP" } } } } feature_list { key: "Encounter.meta.lastUpdated" value { feature { int64_list { value: 1417420800 } } feature { int64_list { value: 1417424400 } } feature { int64_list { value: 1420099200 } } feature { int64_list { value: 1420102800 } } } } feature_list { key: "Encounter.period.start" value { feature { int64_list { value: 1417420800 } } feature { int64_list { value: 1417420800 } } feature { int64_list { value: 1420099200 } } feature { int64_list { value: 1420099200 } } } } feature_list { key: "Encounter.period.end" value { feature { int64_list { } } feature { int64_list { value: 1417424400 } } feature { int64_list { } } feature { int64_list { value: 1420102800 } } } } feature_list { key: "Encounter.reason.http-hl7-org-fhir-sid-icd-9-cm-diagnosis" value { feature { bytes_list { } } feature { bytes_list { value: "V410.9" } } feature { bytes_list { } } feature { bytes_list { value: "191.4" } } } } feature_list { key: "Encounter.reason.http-hl7-org-fhir-sid-icd-9-cm-diagnosis.display.tokenized" value { feature { bytes_list { } } feature { bytes_list { value: "standard" value: "issue" } } feature { bytes_list { } } feature { bytes_list { value: "malignant" value: "neoplasm" value: "of" value: "occipital" value: "lobe" } } } } feature_list { key: "encounterId" value { feature { int64_list { value: 1417420800 } } feature { int64_list { value: 1417420800 } } feature { int64_list { value: 1420099200 } } feature { int64_list { value: 1420099200 } } } } feature_list { key: "eventId" value { feature { int64_list { value: 1417420800 } } feature { int64_list { value: 1417424400 } } feature { int64_list { value: 1420099200 } } feature { int64_list { value: 1420102800 } } } } } """, example_pb2.SequenceExample()) with test_pipeline.TestPipeline() as p: result = ( p | beam.Create([(b"Patient/14", (bundle, event_trigger_labels_list))]) | "BundleAndLabelsToSeqex" >> beam.ParDo( bundle_to_seqex.BundleAndLabelsToSeqexDoFn( version_config=self._version_config, enable_attribution=False, generate_sequence_label=False))) def check_result(got): try: self.assertLen(got, 2, "got: %s" % got) got_seqex1 = got[0] got_seqex2 = got[1] self.assertProtoEqual(expected_seqex1, got_seqex1) self.assertProtoEqual(expected_seqex2, got_seqex2) except AssertionError as err: raise util.BeamAssertException(err) util.assert_that(result, check_result)
def testCreateBundleAndLabels(self): bundle1 = text_format.Parse( """ entry { resource { patient { id { value: "14" } } } } entry { resource { condition { id { value: "1" } subject { patient_id { value: "14" } } code { coding { system { value: "http://hl7.org/fhir/sid/icd-9-cm/diagnosis" } code { value: "bar" } } } asserted_date { value_us: 1417392000000000 # "2014-12-01T00:00:00+00:00" } } } }""", resources_pb2.Bundle()) bundle1_event_trigger = text_format.Parse( """ event_time { value_us: 1388566800000000 } # "2014-01-01T09:00:00+00:00" """, google_extensions_pb2.EventTrigger()) # For the purpose of testing, bundle2 does not exist. bundle2_event_trigger = text_format.Parse( """ event_time { value_us: 1388566800000000 } # "2014-01-01T09:00:00+00:00" """, google_extensions_pb2.EventTrigger()) bundle3 = text_format.Parse( """ entry { resource { patient { id { value: "30" } } } }""", resources_pb2.Bundle()) bundle1_event_trigger_labels_list = [ ( bundle1_event_trigger, list(), ), ] bundle2_event_trigger_labels_list = [ ( bundle2_event_trigger, list(), ), ] with test_pipeline.TestPipeline() as p: bundle_pcoll = p | "CreateBundles" >> beam.Create([ (b"Patient/14", bundle1), (b"Patient/30", bundle3), ]) trigger_list_pcoll = p | "CreateTriggerLists" >> beam.Create([ (b"Patient/14", bundle1_event_trigger_labels_list), (b"Patient/20", bundle2_event_trigger_labels_list), ]) result = bundle_to_seqex.CreateBundleAndLabels(bundle_pcoll, trigger_list_pcoll) def check_result(got): try: self.assertLen(got, 1) (got_key, got_bundle_and_labels) = got[0] self.assertEqual(b"Patient/14", got_key) (got_bundle, got_trigger_labels_list) = got_bundle_and_labels self.assertProtoEqual(got_bundle, bundle1) self.assertLen(got_trigger_labels_list, 1) self.assertProtoEqual(got_trigger_labels_list[0][0], bundle1_event_trigger) self.assertFalse(len(got_trigger_labels_list[0][1])) except AssertionError as err: raise util.BeamAssertException(err) util.assert_that(result, check_result)
def test_get_trigger_labels_pair(self): # pylint: disable=line-too-long bundle = text_format.Parse( """ entry { resource { patient { id { value: "20" } } } } entry { resource { encounter { id { value: "1" } extension { url { value: "https://g.co/fhir/StructureDefinition/eventTrigger" } extension { url { value: "type" } value { coding { system { value: "urn:test:trigger"} code { value: "at_discharge" } } } } extension { url { value: "eventTime" } value { date_time { value_us: 1388566800000000 # "2014-01-01T09:00:00+00:00" } } } } extension { url { value: "https://g.co/fhir/StructureDefinition/eventLabel" } extension { url { value: "type" } value { coding { system { value: "urn:test:label" } code { value: "test1" } } } } extension { url { value: "eventTime" } value { date_time { value_us: 1388566800000000 } } } extension { url { value: "source" } value { reference { encounter_id { value: "1" } } } } } } } } entry { resource { encounter { id { value: "2" } extension { url { value: "https://g.co/fhir/StructureDefinition/eventTrigger" } extension { url { value: "type" } value { coding { system { value: "urn:test:trigger"} code { value: "at_discharge" } } } } extension { url { value: "eventTime" } value { date_time { value_us: 1420102800000000 # "2015-01-01T09:00:00+00:00" } } } } extension { url { value: "https://g.co/fhir/StructureDefinition/eventLabel" } extension { url { value: "type" } value { coding { system { value: "urn:test:label" } code { value: "test1" } } } } extension { url { value: "source" } value { reference { encounter_id { value: "2" } } } } extension { url { value: "label" } extension { url { value: "className" } value { coding { system { value: "urn:test:label:test1" } code { value: "red" } } } } } } } } } """, resources_pb2.Bundle()) trigger1 = text_format.Parse( """ type { system { value: "urn:test:trigger" } code { value: "at_discharge" } } event_time { value_us: 1388566800000000 } # "2014-01-01T09:00:00+00:00" """, google_extensions_pb2.EventTrigger()) trigger2 = text_format.Parse( """ type { system { value: "urn:test:trigger" } code { value: "at_discharge" } } event_time { value_us: 1420102800000000 } # "2015-01-01T09:00:00+00:00" """, google_extensions_pb2.EventTrigger()) label1 = text_format.Parse( """ type { system { value: "urn:test:label" } code { value: "test1" } } event_time { value_us: 1388566800000000 } source { encounter_id { value: "1" } } """, google_extensions_pb2.EventLabel()) label2 = text_format.Parse( """ type { system { value: "urn:test:label" } code { value: "test1" } } source { encounter_id { value: "2" } } label { class_name { system { value: "urn:test:label:test1" } code { value: "red" } } } """, google_extensions_pb2.EventLabel()) # pylint: enable=line-too-long (filtered_count, got_list) = bundle_to_seqex_util.get_trigger_labels_pair( bundle, [b"test1"], b"at_discharge") self.assertEqual(0, filtered_count) self.assertLen(got_list, 2) (got_trigger_1, got_label_list1) = got_list[0] (got_trigger_2, got_label_list2) = got_list[1] self.assertProtoEqual(got_trigger_1, trigger1) self.assertLen(got_label_list1, 1) self.assertProtoEqual(got_label_list1[0], label1) self.assertProtoEqual(got_trigger_2, trigger2) self.assertLen(got_label_list2, 1) self.assertProtoEqual(got_label_list2[0], label2)