diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS new file mode 100644 index 0000000000..3e8830f14e --- /dev/null +++ b/.github/CODEOWNERS @@ -0,0 +1,4 @@ +# These owners will be the default owners for everything in +# the repo. Unless a later match takes precedence, +# they will be requested for review when someone opens a pull request. +* @akasper @angelathe @austin-hall-skylight @BobanL @gordonfarrell @JNygaard-Skylight @lina-roth @mcmcgrath13 @robertmitchellv diff --git a/containers/ecr-viewer/src/app/api/fhirPath.yml b/containers/ecr-viewer/src/app/api/fhirPath.yml index 46aeb97a91..6361e79e1d 100644 --- a/containers/ecr-viewer/src/app/api/fhirPath.yml +++ b/containers/ecr-viewer/src/app/api/fhirPath.yml @@ -2,6 +2,7 @@ patientNameList: "Bundle.entry.resource.where(resourceType = 'Patient').name" patientAddressList: "Bundle.entry.resource.where(resourceType = 'Patient').address" patientTelecom: "Bundle.entry.resource.where(resourceType = 'Patient').telecom" patientCounty: "Bundle.entry.resource.where(resourceType = 'Patient').address.first().county" +patientCountry: "Bundle.entry.resource.where(resourceType = 'Patient').address.first().country" patientIds: "Bundle.entry.resource.where(resourceType = 'Patient').identifier.where(system != 'urn:ietf:rfc:3986').value.join('\n')" patientDOB: "Bundle.entry.resource.where(resourceType = 'Patient').birthDate" @@ -21,7 +22,9 @@ patientCurrentJobTitle: "Bundle.entry.resource.where(resourceType='Observation') patientTobaccoUse: "Bundle.entry.resource.where(resourceType='Observation').where(code.coding.code='72166-2').where(category.coding.code='social-history').value" patientHomelessStatus: "Bundle.entry.resource.where(resourceType='Observation').where(code.coding.code='75274-1').where(category.coding.code='social-history').value" patientPregnancyStatus: "Bundle.entry.resource.where(resourceType='Observation').where(meta.profile='http://hl7.org/fhir/us/ecr/StructureDefinition/us-ph-pregnancy-status-observation').value" -patientAlcoholUse: "Bundle.entry.resource.where(resourceType='Observation').where(code.coding.code='11331-6').where(category.coding.code='social-history').value" +patientAlcoholUse: "Bundle.entry.resource.where(resourceType='Observation').where(code.coding.where(code='11331-6' and system = 'http://loinc.org')).value" +patientAlcoholIntake: "Bundle.entry.resource.where(resourceType='Observation').where(code.coding.where(code='74013-4' and system = 'http://loinc.org')).value" +patientAlcoholComment: "Bundle.entry.resource.where(resourceType='Observation').where(code.coding.display='Alcohol Comment').value" patientSexualOrientation: "Bundle.entry.resource.where(resourceType='Observation').where(code.coding.code='76690-7').value" patientGenderIdentity: "Bundle.entry.resource.where(resourceType = 'Patient').extension.where(url='http://hl7.org/fhir/us/ecr/StructureDefinition/us-ph-genderidentity-extension').value" patientReligion: "Bundle.entry.resource.where(resourceType = 'Patient').extension.where(url='http://hl7.org/fhir/StructureDefinition/patient-religion').value" diff --git a/containers/ecr-viewer/src/app/api/save-fhir-data/save-fhir-data-service.ts b/containers/ecr-viewer/src/app/api/save-fhir-data/save-fhir-data-service.ts index bf9d37d237..82ec31d434 100644 --- a/containers/ecr-viewer/src/app/api/save-fhir-data/save-fhir-data-service.ts +++ b/containers/ecr-viewer/src/app/api/save-fhir-data/save-fhir-data-service.ts @@ -358,12 +358,20 @@ export const saveMetadataToSqlServer = async ( sql.VarChar(50), lab.test_result_code_system, ) - .input("test_result_interpretation", sql.VarChar(255), null) // Not implemented - .input("test_result_interpretation_code", sql.VarChar(50), null) // Not implemented + .input( + "test_result_interpretation", + sql.VarChar(255), + lab.test_result_interpretation, + ) + .input( + "test_result_interpretation_code", + sql.VarChar(50), + lab.test_result_interpretation_code, + ) .input( "test_result_interpretation_system", sql.VarChar(255), - lab.test_result_interp_system, + lab.test_result_interpretation_system, ) .input( "test_result_ref_range_low_value", diff --git a/containers/ecr-viewer/src/app/api/save-fhir-data/types.ts b/containers/ecr-viewer/src/app/api/save-fhir-data/types.ts index f363ddb490..fa4aafc5b7 100644 --- a/containers/ecr-viewer/src/app/api/save-fhir-data/types.ts +++ b/containers/ecr-viewer/src/app/api/save-fhir-data/types.ts @@ -9,7 +9,9 @@ interface Lab { test_result_code: string | undefined; test_result_code_display: string | undefined; test_result_code_system: string | undefined; - test_result_interp_system: string | undefined; + test_result_interpretation: string | undefined; + test_result_interpretation_code: string | undefined; + test_result_interpretation_system: string | undefined; test_result_ref_range_low: string | undefined; test_result_ref_range_low_units: string | undefined; test_result_ref_range_high: string | undefined; diff --git a/containers/ecr-viewer/src/app/services/evaluateFhirDataService.ts b/containers/ecr-viewer/src/app/services/evaluateFhirDataService.ts index ca60b3d61a..646e4fe616 100644 --- a/containers/ecr-viewer/src/app/services/evaluateFhirDataService.ts +++ b/containers/ecr-viewer/src/app/services/evaluateFhirDataService.ts @@ -31,6 +31,7 @@ import { DisplayDataProps } from "@/app/view-data/components/DataDisplay"; import { evaluateTravelHistoryTable } from "./socialHistoryService"; import { Path } from "fhirpath"; import { returnTableFromJson } from "../view-data/components/common"; +import { toSentenceCase } from "./formatService"; /** * Evaluates patient name from the FHIR bundle and formats it into structured data for display. @@ -197,6 +198,39 @@ export const calculatePatientAgeAtDeath = ( } }; +/** + * Evaluates alcohol use information from the FHIR bundle and formats it into structured data for display. + * @param fhirBundle - The FHIR bundle containing alcohol use data. + * @param fhirMappings - The object containing the fhir paths. + * @returns An array of evaluated and formatted alcohol use data. + */ +export const evaluateAlcoholUse = ( + fhirBundle: Bundle, + fhirMappings: PathMappings, +) => { + const alcoholUse = evaluateValue(fhirBundle, fhirMappings.patientAlcoholUse); + const alcoholIntake = evaluateValue( + fhirBundle, + fhirMappings.patientAlcoholIntake, + ); + let alcoholComment: string | undefined = evaluateValue( + fhirBundle, + fhirMappings.patientAlcoholComment, + ); + + if (alcoholComment) { + alcoholComment = toSentenceCase(alcoholComment); + } + + return [ + alcoholUse ? `Use: ${alcoholUse}` : null, + alcoholIntake ? `Intake (standard drinks/week): ${alcoholIntake}` : null, + alcoholComment ? `Comment: ${alcoholComment}` : null, + ] + .filter(Boolean) // Removes null or undefined lines + .join("\n"); // Joins the remaining lines with newlines +}; + /** * Evaluates social data from the FHIR bundle and formats it into structured data for display. * @param fhirBundle - The FHIR bundle containing social data. @@ -227,7 +261,7 @@ export const evaluateSocialData = ( }, { title: "Alcohol Use", - value: evaluateValue(fhirBundle, mappings["patientAlcoholUse"]), + value: evaluateAlcoholUse(fhirBundle, mappings), }, { title: "Sexual Orientation", @@ -313,6 +347,10 @@ export const evaluateDemographicsData = ( title: "County", value: evaluate(fhirBundle, mappings.patientCounty)[0], }, + { + title: "Country", + value: evaluate(fhirBundle, mappings.patientCountry)[0], + }, { title: "Contact", value: formatContactPoint(evaluate(fhirBundle, mappings.patientTelecom)), diff --git a/containers/ecr-viewer/src/app/services/labsService.tsx b/containers/ecr-viewer/src/app/services/labsService.tsx index bb2e085fe3..8fac361771 100644 --- a/containers/ecr-viewer/src/app/services/labsService.tsx +++ b/containers/ecr-viewer/src/app/services/labsService.tsx @@ -332,7 +332,11 @@ export function evaluateObservationTable( ).filter( (observation) => !observation.component && - observation.code?.coding.some((c: Coding) => c?.display), + // Make sure there is a component name, but it isn't "Lab Interpretation" as that's handled + // via the tab on the result's name + observation.code?.coding.some( + (c: Coding) => c?.display && c?.display !== "Lab Interpretation", + ), ); let obsTable; diff --git a/containers/ecr-viewer/src/app/tests/assets/BundleLab.json b/containers/ecr-viewer/src/app/tests/assets/BundleLab.json index 5136dc422d..7be4f68629 100644 --- a/containers/ecr-viewer/src/app/tests/assets/BundleLab.json +++ b/containers/ecr-viewer/src/app/tests/assets/BundleLab.json @@ -83,6 +83,10 @@ { "display": "Organism ID", "reference": "Observation/2a4f8fb5-f957-3c30-1353-a30aa441a12b" + }, + { + "reference": "Observation/e9c8e4b3-3fec-4f29-a5c5-e45f96680a4c", + "display": "Lab Interpretation" } ] } @@ -265,6 +269,9 @@ { "reference": "Observation/1c0f3367-0588-c90e-fed0-0d8c15c5ac1b" }, + { + "reference": "Observation/e9c8e4b3-3fec-4f29-a5c5-e45f96680a4c" + }, { "reference": "Observation/ab1ecbd4-6de0-4f78-cea6-a880a15e88bb" } @@ -396,6 +403,73 @@ "url": "DiagnosticReport/b0f590a6-4bf5-7add-9716-2bd3ba6defb2" } }, + { + "fullUrl": "urn:uuid:e9c8e4b3-3fec-4f29-a5c5-e45f96680a4c", + "resource": { + "resourceType": "Observation", + "id": "e9c8e4b3-3fec-4f29-a5c5-e45f96680a4c", + "meta": { + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-observationresults" + ], + "source": "ecr" + }, + "identifier": [ + { + "system": "urn:oid:1.2.840.114350.1.13.202.3.7.2.798268", + "value": "476858944" + } + ], + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "laboratory" + } + ] + } + ], + "status": "final", + "code": { + "coding": [ + { + "code": "56850-1", + "system": "http://loinc.org", + "display": "Lab Interpretation" + } + ] + }, + "effectiveDateTime": "2022-09-29T21:13:00Z", + "valueString": "Abnormal", + "extension": [ + { + "url": "http://hl7.org/fhir/R4/specimen.html", + "extension": [ + { + "url": "specimen source", + "valueString": "Stool" + }, + { + "url": "specimen collection time", + "valueDateTime": "2022-09-28T20:51:00Z" + }, + { + "url": "specimen receive time", + "valueDateTime": "2022-09-28T20:51:36Z" + } + ] + } + ], + "subject": { + "reference": "Patient/1586f68b-1a17-4188-ac0b-82c3cbdbfbda" + } + }, + "request": { + "method": "PUT", + "url": "Observation/e9c8e4b3-3fec-4f29-a5c5-e45f96680a4c" + } + }, { "fullUrl": "urn:uuid:1c0f3367-0588-c90e-fed0-0d8c15c5ac1b", "resource": { diff --git a/containers/ecr-viewer/src/app/tests/assets/BundlePatient.json b/containers/ecr-viewer/src/app/tests/assets/BundlePatient.json index 1a49d29671..fc6e3753ec 100644 --- a/containers/ecr-viewer/src/app/tests/assets/BundlePatient.json +++ b/containers/ecr-viewer/src/app/tests/assets/BundlePatient.json @@ -177,6 +177,171 @@ "method": "PUT", "url": "Patient/6b6b3c4c-4884-4a96-b6ab-c46406839cea" } + }, + { + "fullUrl": "urn:uuid:b91cab75-e4a0-2227-79ec-44c9c8ea795a", + "resource": { + "resourceType": "Observation", + "id": "b91cab75-e4a0-2227-79ec-44c9c8ea795a", + "meta": { + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-observationresults" + ], + "source": "ecr" + }, + "identifier": [ + { + "system": "urn:oid:1.2.840.114350.1.13.66.2.7.7.698084.19222", + "value": "Z13909121" + } + ], + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "social-history" + } + ] + } + ], + "status": "final", + "code": { + "coding": [ + { + "code": "X-SDOH-19222", + "system": "urn:oid:1.2.840.114350.1.72.1.8", + "display": "Alcohol Comment" + } + ] + }, + "effectiveDateTime": "2022-11-04", + "valueString": "1-2 DRINKS 2 TO 4 TIMES A MONTH", + "subject": { + "reference": "Patient/5227f761-a6ea-461d-9523-8d9ee26eab84" + } + }, + "request": { + "method": "PUT", + "url": "Observation/b91cab75-e4a0-2227-79ec-44c9c8ea795a" + } + }, + { + "fullUrl": "urn:uuid:259df789-9da2-9b7c-bc69-a60c634860d8", + "resource": { + "resourceType": "Observation", + "id": "259df789-9da2-9b7c-bc69-a60c634860d8", + "meta": { + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-observationresults" + ], + "source": "ecr" + }, + "identifier": [ + { + "system": "urn:oid:1.2.840.114350.1.13.66.2.7.1.1040.13", + "value": "Z13909121^54660.98^897148007" + } + ], + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "social-history" + } + ] + } + ], + "status": "final", + "code": { + "coding": [ + { + "code": "897148007", + "system": "http://snomed.info/sct", + "display": "Alcoholic beverage intake" + }, + { + "code": "74013-4", + "system": "http://loinc.org", + "display": "Alcoholic drinks per day" + } + ] + }, + "effectiveDateTime": "2024-01-31", + "valueQuantity": { + "value": ".29", + "unit": "/d" + }, + "subject": { + "reference": "Patient/5227f761-a6ea-461d-9523-8d9ee26eab84" + } + }, + "request": { + "method": "PUT", + "url": "Observation/259df789-9da2-9b7c-bc69-a60c634860d8" + } + }, + { + "fullUrl": "urn:uuid:b467f663-f4f5-78af-a677-05b5545d8716", + "resource": { + "resourceType": "Observation", + "id": "b467f663-f4f5-78af-a677-05b5545d8716", + "meta": { + "profile": [ + "http://hl7.org/fhir/us/core/StructureDefinition/us-core-observationresults" + ], + "source": "ecr" + }, + "identifier": [ + { + "system": "urn:oid:1.2.840.114350.1.13.66.2.7.1.1040.12", + "value": "Z13909121^54660.98^897148007" + } + ], + "category": [ + { + "coding": [ + { + "system": "http://terminology.hl7.org/CodeSystem/observation-category", + "code": "social-history" + } + ] + } + ], + "status": "final", + "code": { + "coding": [ + { + "code": "897148007", + "system": "http://snomed.info/sct", + "display": "Alcoholic beverage intake" + }, + { + "code": "11331-6", + "system": "http://loinc.org", + "display": "History of Alcohol Use" + } + ] + }, + "effectiveDateTime": "2024-01-31", + "valueCodeableConcept": { + "coding": [ + { + "code": "219006", + "system": "http://snomed.info/sct", + "display": "Current drinker of alcohol (finding)" + } + ] + }, + "subject": { + "reference": "Patient/5227f761-a6ea-461d-9523-8d9ee26eab84" + } + }, + "request": { + "method": "PUT", + "url": "Observation/b467f663-f4f5-78af-a677-05b5545d8716" + } } ] } diff --git a/containers/ecr-viewer/src/app/tests/components/Demographics.test.tsx b/containers/ecr-viewer/src/app/tests/components/Demographics.test.tsx index 020f6465cd..d7a39cb759 100644 --- a/containers/ecr-viewer/src/app/tests/components/Demographics.test.tsx +++ b/containers/ecr-viewer/src/app/tests/components/Demographics.test.tsx @@ -35,6 +35,10 @@ describe("Demographics", () => { title: "County", value: "test", }, + { + title: "Country", + value: "USA", + }, { title: "Contact", value: "test contact" }, { title: "Emergency Contact", diff --git a/containers/ecr-viewer/src/app/tests/components/__snapshots__/AccordionContent.test.tsx.snap b/containers/ecr-viewer/src/app/tests/components/__snapshots__/AccordionContent.test.tsx.snap index 2a54fe1720..20fddbc244 100644 --- a/containers/ecr-viewer/src/app/tests/components/__snapshots__/AccordionContent.test.tsx.snap +++ b/containers/ecr-viewer/src/app/tests/components/__snapshots__/AccordionContent.test.tsx.snap @@ -439,6 +439,25 @@ exports[`Snapshot test for Accordion Content Given no data, info message for emp class="section__line_gray" /> +
+
+
+ Country +
+
+ No data +
+
+
+
+
+
+
+ Country +
+
+ USA +
+
+
+
{ expect(actual).toEqual("ABEL CASTILLO"); }); }); + +describe("Evaluate Alcohol Use", () => { + it("should return the use, intake comment", () => { + const actual = evaluateAlcoholUse( + BundleWithPatient as unknown as Bundle, + mappings, + ); + expect(actual).toEqual( + "Use: Current drinker of alcohol (finding)\n" + + "Intake (standard drinks/week): .29/d\n" + + "Comment: 1-2 drinks 2 to 4 times a month", + ); + }); + it("should empty string because there is no use, intake, or comment", () => { + const actual = evaluateAlcoholUse( + BundlePatientMultiple as unknown as Bundle, + mappings, + ); + expect(actual).toEqual(""); + }); +}); diff --git a/containers/ecr-viewer/src/middleware.ts b/containers/ecr-viewer/src/middleware.ts index 60f299ac75..53af45b832 100644 --- a/containers/ecr-viewer/src/middleware.ts +++ b/containers/ecr-viewer/src/middleware.ts @@ -36,7 +36,7 @@ export async function middleware(req: NextRequest): Promise { export const config = { matcher: [ /* - * Run Middleware on all request paths except these: + * Run middleware on all request paths except these: * - Api routes * - _next/static (static files) * - _next/image (image optimization files) @@ -49,7 +49,7 @@ export const config = { */ "/", /** - * Run middle ware on getting fhir-data + * Run middleware on getting fhir-data */ "/api/fhir-data", ], diff --git a/containers/fhir-converter/Dockerfile b/containers/fhir-converter/Dockerfile index 032523e7c1..fa71046e9b 100644 --- a/containers/fhir-converter/Dockerfile +++ b/containers/fhir-converter/Dockerfile @@ -1,7 +1,7 @@ FROM mcr.microsoft.com/dotnet/sdk:6.0 AS build # Download FHIR-Converter -RUN git clone https://github.com/skylight-hq/FHIR-Converter.git --branch v7.0-skylight-16 --single-branch /build/FHIR-Converter +RUN git clone https://github.com/skylight-hq/FHIR-Converter.git --branch v7.0-skylight-18 --single-branch /build/FHIR-Converter WORKDIR /build/FHIR-Converter diff --git a/containers/fhir-converter/tests/integration/__snapshots__/test_FHIR-Converter.ambr b/containers/fhir-converter/tests/integration/__snapshots__/test_FHIR-Converter.ambr index 4b4fe3127a..a93825bdd5 100644 --- a/containers/fhir-converter/tests/integration/__snapshots__/test_FHIR-Converter.ambr +++ b/containers/fhir-converter/tests/integration/__snapshots__/test_FHIR-Converter.ambr @@ -2792,6 +2792,10 @@ 'extension': list([ dict({ 'extension': list([ + dict({ + 'url': str, + 'valueString': 'Semen', + }), dict({ 'url': str, 'valueDateTime': '2022-06-16T16:48:00Z', @@ -2916,6 +2920,10 @@ 'extension': list([ dict({ 'extension': list([ + dict({ + 'url': str, + 'valueString': 'Semen', + }), dict({ 'url': str, 'valueDateTime': '2022-06-16T16:48:00Z', @@ -3019,6 +3027,10 @@ 'extension': list([ dict({ 'extension': list([ + dict({ + 'url': str, + 'valueString': 'Semen', + }), dict({ 'url': str, 'valueDateTime': '2022-06-16T16:48:00Z', @@ -3092,6 +3104,10 @@ 'extension': list([ dict({ 'extension': list([ + dict({ + 'url': str, + 'valueString': 'Semen', + }), dict({ 'url': str, 'valueDateTime': '2022-06-16T16:48:00Z', @@ -3193,6 +3209,10 @@ 'extension': list([ dict({ 'extension': list([ + dict({ + 'url': str, + 'valueString': 'Semen', + }), dict({ 'url': str, 'valueDateTime': '2022-06-16T16:48:00Z', @@ -3278,6 +3298,10 @@ 'extension': list([ dict({ 'extension': list([ + dict({ + 'url': str, + 'valueString': 'Semen', + }), dict({ 'url': str, 'valueDateTime': '2022-06-16T16:48:00Z', @@ -3358,6 +3382,10 @@ 'extension': list([ dict({ 'extension': list([ + dict({ + 'url': str, + 'valueString': 'Semen', + }), dict({ 'url': str, 'valueDateTime': '2022-06-16T16:48:00Z', @@ -3434,6 +3462,10 @@ 'extension': list([ dict({ 'extension': list([ + dict({ + 'url': str, + 'valueString': 'Semen', + }), dict({ 'url': str, 'valueDateTime': '2022-06-16T16:48:00Z', @@ -3510,6 +3542,10 @@ 'extension': list([ dict({ 'extension': list([ + dict({ + 'url': str, + 'valueString': 'Semen', + }), dict({ 'url': str, 'valueDateTime': '2022-06-16T16:48:00Z', @@ -3603,6 +3639,10 @@ 'extension': list([ dict({ 'extension': list([ + dict({ + 'url': str, + 'valueString': 'Semen', + }), dict({ 'url': str, 'valueDateTime': '2022-06-16T16:48:00Z', @@ -3683,6 +3723,10 @@ 'extension': list([ dict({ 'extension': list([ + dict({ + 'url': str, + 'valueString': 'Semen', + }), dict({ 'url': str, 'valueDateTime': '2022-06-16T16:48:00Z', @@ -3763,6 +3807,10 @@ 'extension': list([ dict({ 'extension': list([ + dict({ + 'url': str, + 'valueString': 'Semen', + }), dict({ 'url': str, 'valueDateTime': '2022-06-16T16:48:00Z', @@ -3852,6 +3900,10 @@ 'extension': list([ dict({ 'extension': list([ + dict({ + 'url': str, + 'valueString': 'Semen', + }), dict({ 'url': str, 'valueDateTime': '2022-06-16T16:48:00Z', @@ -3956,6 +4008,10 @@ 'extension': list([ dict({ 'extension': list([ + dict({ + 'url': str, + 'valueString': 'Semen', + }), dict({ 'url': str, 'valueDateTime': '2022-06-16T16:48:00Z', @@ -4049,6 +4105,10 @@ 'extension': list([ dict({ 'extension': list([ + dict({ + 'url': str, + 'valueString': 'Semen', + }), dict({ 'url': str, 'valueDateTime': '2022-06-16T16:48:00Z', @@ -4138,6 +4198,10 @@ 'extension': list([ dict({ 'extension': list([ + dict({ + 'url': str, + 'valueString': 'Semen', + }), dict({ 'url': str, 'valueDateTime': '2022-06-16T16:48:00Z', @@ -4192,6 +4256,10 @@ 'extension': list([ dict({ 'extension': list([ + dict({ + 'url': str, + 'valueString': 'Semen', + }), dict({ 'url': str, 'valueDateTime': '2022-06-16T16:48:00Z', @@ -4319,6 +4387,10 @@ 'extension': list([ dict({ 'extension': list([ + dict({ + 'url': str, + 'valueString': 'Blood', + }), dict({ 'url': str, 'valueDateTime': '2022-06-16T17:31:00Z', @@ -4416,6 +4488,10 @@ 'extension': list([ dict({ 'extension': list([ + dict({ + 'url': str, + 'valueString': 'Blood', + }), dict({ 'url': str, 'valueDateTime': '2022-06-16T17:31:00Z', @@ -4513,6 +4589,10 @@ 'extension': list([ dict({ 'extension': list([ + dict({ + 'url': str, + 'valueString': 'Blood', + }), dict({ 'url': str, 'valueDateTime': '2022-06-16T17:31:00Z', @@ -4610,6 +4690,10 @@ 'extension': list([ dict({ 'extension': list([ + dict({ + 'url': str, + 'valueString': 'Blood', + }), dict({ 'url': str, 'valueDateTime': '2022-06-16T17:31:00Z', @@ -4702,6 +4786,10 @@ 'extension': list([ dict({ 'extension': list([ + dict({ + 'url': str, + 'valueString': 'Blood', + }), dict({ 'url': str, 'valueDateTime': '2022-06-16T17:31:00Z', @@ -4802,6 +4890,10 @@ 'extension': list([ dict({ 'extension': list([ + dict({ + 'url': str, + 'valueString': 'Blood', + }), dict({ 'url': str, 'valueDateTime': '2022-06-16T17:31:00Z', @@ -4856,6 +4948,10 @@ 'extension': list([ dict({ 'extension': list([ + dict({ + 'url': str, + 'valueString': 'Blood', + }), dict({ 'url': str, 'valueDateTime': '2022-06-16T17:31:00Z', @@ -4992,6 +5088,10 @@ 'extension': list([ dict({ 'extension': list([ + dict({ + 'url': str, + 'valueString': 'Blood', + }), dict({ 'url': str, 'valueDateTime': '2022-06-16T17:44:00Z', @@ -5093,6 +5193,10 @@ 'extension': list([ dict({ 'extension': list([ + dict({ + 'url': str, + 'valueString': 'Blood', + }), dict({ 'url': str, 'valueDateTime': '2022-06-16T17:44:00Z', @@ -5193,6 +5297,10 @@ 'extension': list([ dict({ 'extension': list([ + dict({ + 'url': str, + 'valueString': 'Blood', + }), dict({ 'url': str, 'valueDateTime': '2022-06-16T17:44:00Z', @@ -5290,6 +5398,10 @@ 'extension': list([ dict({ 'extension': list([ + dict({ + 'url': str, + 'valueString': 'Blood', + }), dict({ 'url': str, 'valueDateTime': '2022-06-16T17:44:00Z', @@ -5379,6 +5491,10 @@ 'extension': list([ dict({ 'extension': list([ + dict({ + 'url': str, + 'valueString': 'Blood', + }), dict({ 'url': str, 'valueDateTime': '2022-06-16T17:44:00Z', @@ -5472,6 +5588,10 @@ 'extension': list([ dict({ 'extension': list([ + dict({ + 'url': str, + 'valueString': 'Blood', + }), dict({ 'url': str, 'valueDateTime': '2022-06-16T17:44:00Z', @@ -5569,6 +5689,10 @@ 'extension': list([ dict({ 'extension': list([ + dict({ + 'url': str, + 'valueString': 'Blood', + }), dict({ 'url': str, 'valueDateTime': '2022-06-16T17:44:00Z', @@ -5658,6 +5782,10 @@ 'extension': list([ dict({ 'extension': list([ + dict({ + 'url': str, + 'valueString': 'Blood', + }), dict({ 'url': str, 'valueDateTime': '2022-06-16T17:44:00Z', @@ -5747,6 +5875,10 @@ 'extension': list([ dict({ 'extension': list([ + dict({ + 'url': str, + 'valueString': 'Blood', + }), dict({ 'url': str, 'valueDateTime': '2022-06-16T17:44:00Z', @@ -5801,6 +5933,10 @@ 'extension': list([ dict({ 'extension': list([ + dict({ + 'url': str, + 'valueString': 'Blood', + }), dict({ 'url': str, 'valueDateTime': '2022-06-16T17:44:00Z', @@ -5916,6 +6052,10 @@ 'extension': list([ dict({ 'extension': list([ + dict({ + 'url': str, + 'valueString': 'Blood', + }), dict({ 'url': str, 'valueDateTime': '2022-06-16T17:53:00Z', @@ -5994,6 +6134,10 @@ 'extension': list([ dict({ 'extension': list([ + dict({ + 'url': str, + 'valueString': 'Blood', + }), dict({ 'url': str, 'valueDateTime': '2022-06-16T17:53:00Z', @@ -6048,6 +6192,10 @@ 'extension': list([ dict({ 'extension': list([ + dict({ + 'url': str, + 'valueString': 'Blood', + }), dict({ 'url': str, 'valueDateTime': '2022-06-16T17:53:00Z', @@ -6173,6 +6321,10 @@ 'extension': list([ dict({ 'extension': list([ + dict({ + 'url': str, + 'valueString': 'Semen', + }), dict({ 'url': str, 'valueDateTime': '2022-06-16T19:18:00Z', @@ -6266,6 +6418,10 @@ 'extension': list([ dict({ 'extension': list([ + dict({ + 'url': str, + 'valueString': 'Semen', + }), dict({ 'url': str, 'valueDateTime': '2022-06-16T19:18:00Z', @@ -6357,6 +6513,10 @@ 'extension': list([ dict({ 'extension': list([ + dict({ + 'url': str, + 'valueString': 'Semen', + }), dict({ 'url': str, 'valueDateTime': '2022-06-16T19:18:00Z', @@ -6457,6 +6617,10 @@ 'extension': list([ dict({ 'extension': list([ + dict({ + 'url': str, + 'valueString': 'Semen', + }), dict({ 'url': str, 'valueDateTime': '2022-06-16T19:18:00Z', @@ -6511,6 +6675,10 @@ 'extension': list([ dict({ 'extension': list([ + dict({ + 'url': str, + 'valueString': 'Semen', + }), dict({ 'url': str, 'valueDateTime': '2022-06-16T19:18:00Z', @@ -6626,6 +6794,10 @@ 'extension': list([ dict({ 'extension': list([ + dict({ + 'url': str, + 'valueString': 'Urine', + }), dict({ 'url': str, 'valueDateTime': '2022-06-16T20:22:00Z', @@ -6723,6 +6895,10 @@ 'extension': list([ dict({ 'extension': list([ + dict({ + 'url': str, + 'valueString': 'Urine', + }), dict({ 'url': str, 'valueDateTime': '2022-06-16T20:22:00Z', @@ -6777,6 +6953,10 @@ 'extension': list([ dict({ 'extension': list([ + dict({ + 'url': str, + 'valueString': 'Urine', + }), dict({ 'url': str, 'valueDateTime': '2022-06-16T20:22:00Z', @@ -6901,6 +7081,10 @@ 'extension': list([ dict({ 'extension': list([ + dict({ + 'url': str, + 'valueString': 'Swab', + }), dict({ 'url': str, 'valueDateTime': '2022-06-20T11:58:00Z', @@ -6998,6 +7182,10 @@ 'extension': list([ dict({ 'extension': list([ + dict({ + 'url': str, + 'valueString': 'Swab', + }), dict({ 'url': str, 'valueDateTime': '2022-06-20T11:58:00Z', @@ -7095,6 +7283,10 @@ 'extension': list([ dict({ 'extension': list([ + dict({ + 'url': str, + 'valueString': 'Swab', + }), dict({ 'url': str, 'valueDateTime': '2022-06-20T11:58:00Z', @@ -7192,6 +7384,10 @@ 'extension': list([ dict({ 'extension': list([ + dict({ + 'url': str, + 'valueString': 'Swab', + }), dict({ 'url': str, 'valueDateTime': '2022-06-20T11:58:00Z', @@ -7289,6 +7485,10 @@ 'extension': list([ dict({ 'extension': list([ + dict({ + 'url': str, + 'valueString': 'Swab', + }), dict({ 'url': str, 'valueDateTime': '2022-06-20T11:58:00Z', @@ -7343,6 +7543,10 @@ 'extension': list([ dict({ 'extension': list([ + dict({ + 'url': str, + 'valueString': 'Swab', + }), dict({ 'url': str, 'valueDateTime': '2022-06-20T11:58:00Z', diff --git a/containers/message-parser/app/default_schemas/extended.json b/containers/message-parser/app/default_schemas/extended.json index 2619f13a14..d209a4afb3 100644 --- a/containers/message-parser/app/default_schemas/extended.json +++ b/containers/message-parser/app/default_schemas/extended.json @@ -194,17 +194,17 @@ "data_type": "string", "nullable": true }, - "test_result_interp": { + "test_result_interpretation": { "fhir_path": "Observation.interpretation.coding.display", "data_type": "string", "nullable": true }, - "test_result_interp_code": { + "test_result_interpretation_code": { "fhir_path": "Observation.interpretation.coding.code", "data_type": "string", "nullable": true }, - "test_result_interp_system": { + "test_result_interpretation_system": { "fhir_path": "Observation.interpretation.coding.system", "data_type": "string", "nullable": true diff --git a/containers/orchestration/tests/integration/test_orchestration.py b/containers/orchestration/tests/integration/test_orchestration.py index 735e88565e..1dccb48213 100644 --- a/containers/orchestration/tests/integration/test_orchestration.py +++ b/containers/orchestration/tests/integration/test_orchestration.py @@ -148,7 +148,7 @@ def test_failed_save_to_ecr_viewer(setup, clean_up_db): } files = {"upload_file": ("file.zip", file)} orchestration_response = httpx.post( - PROCESS_ZIP_ENDPOINT, data=form_data, files=files, timeout=60 + PROCESS_ZIP_ENDPOINT, data=form_data, files=files, timeout=120 ) assert orchestration_response.status_code == 500 diff --git a/poetry.lock b/poetry.lock index 2e54c2999d..b72447e36c 100644 --- a/poetry.lock +++ b/poetry.lock @@ -1,4 +1,4 @@ -# This file is automatically @generated by Poetry 1.8.2 and should not be changed by hand. +# This file is automatically @generated by Poetry 1.8.5 and should not be changed by hand. [[package]] name = "antlr4-python3-runtime"