Skip to content

Commit

Permalink
fixing Condition onset and abatement extraction.
Browse files Browse the repository at this point in the history
  • Loading branch information
AnalogJ committed Aug 13, 2023
1 parent b4ee83b commit ddbf650
Show file tree
Hide file tree
Showing 3 changed files with 29 additions and 10 deletions.
13 changes: 9 additions & 4 deletions .idea/dataSources.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

12 changes: 6 additions & 6 deletions backend/pkg/models/database/fhir_condition.go
Original file line number Diff line number Diff line change
Expand Up @@ -207,12 +207,12 @@ func (s *FhirCondition) PopulateAndExtractSearchParameters(resourceRaw json.RawM
}
// execute the fhirpath expression for each search parameter
// extracting AbatementAge
abatementAgeResult, err := vm.RunString("JSON.stringify(window.fhirpath.evaluate(fhirResource, 'Condition.abatement.as(Age) | Condition.abatement.as(Range)'))")
abatementAgeResult, err := vm.RunString("JSON.stringify(window.fhirpath.evaluate(fhirResource, 'Condition.abatementAge | Condition.abatementRange'))")
if err == nil && abatementAgeResult.String() != "undefined" {
s.AbatementAge = []byte(abatementAgeResult.String())
}
// extracting AbatementDate
abatementDateResult, err := vm.RunString("window.fhirpath.evaluate(fhirResource, 'Condition.abatement.as(dateTime) | Condition.abatement.as(Period)')[0]")
abatementDateResult, err := vm.RunString("window.fhirpath.evaluate(fhirResource, 'Condition.abatementDateTime | Condition.abatementPeriod')[0]")
if err == nil && abatementDateResult.String() != "undefined" {
t, err := time.Parse(time.RFC3339, abatementDateResult.String())
if err == nil {
Expand All @@ -226,7 +226,7 @@ func (s *FhirCondition) PopulateAndExtractSearchParameters(resourceRaw json.RawM
}
// extracting AbatementString
abatementStringResult, err := vm.RunString(`
AbatementStringResult = window.fhirpath.evaluate(fhirResource, 'Condition.abatement.as(string)')
AbatementStringResult = window.fhirpath.evaluate(fhirResource, 'Condition.abatementString')
AbatementStringProcessed = AbatementStringResult.reduce((accumulator, currentValue) => {
if (typeof currentValue === 'string') {
//basic string
Expand Down Expand Up @@ -638,12 +638,12 @@ func (s *FhirCondition) PopulateAndExtractSearchParameters(resourceRaw json.RawM
}
}
// extracting OnsetAge
onsetAgeResult, err := vm.RunString("JSON.stringify(window.fhirpath.evaluate(fhirResource, 'Condition.onset.as(Age) | Condition.onset.as(Range)'))")
onsetAgeResult, err := vm.RunString("JSON.stringify(window.fhirpath.evaluate(fhirResource, 'Condition.onsetAge | Condition.onsetRange'))")
if err == nil && onsetAgeResult.String() != "undefined" {
s.OnsetAge = []byte(onsetAgeResult.String())
}
// extracting OnsetDate
onsetDateResult, err := vm.RunString("window.fhirpath.evaluate(fhirResource, 'Condition.onset.as(dateTime) | Condition.onset.as(Period)')[0]")
onsetDateResult, err := vm.RunString("window.fhirpath.evaluate(fhirResource, 'Condition.onsetDateTime | Condition.onsetPeriod')[0]")
if err == nil && onsetDateResult.String() != "undefined" {
t, err := time.Parse(time.RFC3339, onsetDateResult.String())
if err == nil {
Expand All @@ -657,7 +657,7 @@ func (s *FhirCondition) PopulateAndExtractSearchParameters(resourceRaw json.RawM
}
// extracting OnsetInfo
onsetInfoResult, err := vm.RunString(`
OnsetInfoResult = window.fhirpath.evaluate(fhirResource, 'Condition.onset.as(string)')
OnsetInfoResult = window.fhirpath.evaluate(fhirResource, 'Condition.onsetString')
OnsetInfoProcessed = OnsetInfoResult.reduce((accumulator, currentValue) => {
if (typeof currentValue === 'string') {
//basic string
Expand Down
14 changes: 14 additions & 0 deletions backend/pkg/models/database/generate.go
Original file line number Diff line number Diff line change
Expand Up @@ -264,14 +264,28 @@ func main() {
// https://hl7.org/fhir/r4/formats.html#choice
// this is a very naive implementation, but it works for now
fieldInfo.FHIRPathExpression = strings.ReplaceAll(fieldInfo.FHIRPathExpression, " as string", " as String")
fieldInfo.FHIRPathExpression = strings.ReplaceAll(fieldInfo.FHIRPathExpression, ".as(string)", " as String")
fieldInfo.FHIRPathExpression = strings.ReplaceAll(fieldInfo.FHIRPathExpression, " as time", " as Time")
fieldInfo.FHIRPathExpression = strings.ReplaceAll(fieldInfo.FHIRPathExpression, ".as(time)", " as Time")
fieldInfo.FHIRPathExpression = strings.ReplaceAll(fieldInfo.FHIRPathExpression, " as date", " as Date")
fieldInfo.FHIRPathExpression = strings.ReplaceAll(fieldInfo.FHIRPathExpression, ".as(date)", " as Date")
fieldInfo.FHIRPathExpression = strings.ReplaceAll(fieldInfo.FHIRPathExpression, " as dateTime", " as DateTime")
fieldInfo.FHIRPathExpression = strings.ReplaceAll(fieldInfo.FHIRPathExpression, ".as(dateTime)", " as DateTime")
fieldInfo.FHIRPathExpression = strings.ReplaceAll(fieldInfo.FHIRPathExpression, " as boolean", " as Boolean")
fieldInfo.FHIRPathExpression = strings.ReplaceAll(fieldInfo.FHIRPathExpression, ".as(boolean)", " as Boolean")
fieldInfo.FHIRPathExpression = strings.ReplaceAll(fieldInfo.FHIRPathExpression, " as url", " as Url")
fieldInfo.FHIRPathExpression = strings.ReplaceAll(fieldInfo.FHIRPathExpression, ".as(url)", " as Url")
fieldInfo.FHIRPathExpression = strings.ReplaceAll(fieldInfo.FHIRPathExpression, " as code", " as Code")
fieldInfo.FHIRPathExpression = strings.ReplaceAll(fieldInfo.FHIRPathExpression, ".as(code)", " as Code")
fieldInfo.FHIRPathExpression = strings.ReplaceAll(fieldInfo.FHIRPathExpression, " as integer", " as Integer")
fieldInfo.FHIRPathExpression = strings.ReplaceAll(fieldInfo.FHIRPathExpression, ".as(integer)", " as Integer")
fieldInfo.FHIRPathExpression = strings.ReplaceAll(fieldInfo.FHIRPathExpression, " as uri", " as Uri")
fieldInfo.FHIRPathExpression = strings.ReplaceAll(fieldInfo.FHIRPathExpression, ".as(uri)", " as Uri")
fieldInfo.FHIRPathExpression = strings.ReplaceAll(fieldInfo.FHIRPathExpression, " as decimal", " as Decimal")
fieldInfo.FHIRPathExpression = strings.ReplaceAll(fieldInfo.FHIRPathExpression, ".as(decimal)", " as Decimal")
fieldInfo.FHIRPathExpression = strings.ReplaceAll(fieldInfo.FHIRPathExpression, ".as(Age)", " as Age")
fieldInfo.FHIRPathExpression = strings.ReplaceAll(fieldInfo.FHIRPathExpression, ".as(Period)", " as Period")
fieldInfo.FHIRPathExpression = strings.ReplaceAll(fieldInfo.FHIRPathExpression, ".as(Range)", " as Range")

//remove all " as " from the fhirpath expression, this does not work correctly with goja or otto
fieldInfo.FHIRPathExpression = strings.ReplaceAll(fieldInfo.FHIRPathExpression, " as ", "")
Expand Down

0 comments on commit ddbf650

Please sign in to comment.