adding tests for condition and encounter.

This commit is contained in:
Jason Kulatunga 2023-11-17 17:16:36 -08:00
parent a82bef1441
commit d37fb12f89
No known key found for this signature in database
2 changed files with 222 additions and 0 deletions

View File

@ -0,0 +1,173 @@
package database
import (
"encoding/json"
"os"
"testing"
"time"
"github.com/stretchr/testify/require"
)
type SearchParameterTokenType struct {
System string `json:"system"`
Code string `json:"code"`
}
type SearchParameterStringType []string
func TestFhirCondition_ExtractSearchParameters(t *testing.T) {
t.Parallel()
//setup
//var observationJson map[string]interface{}
conditionBytes, err := os.ReadFile("../../../../frontend/src/lib/fixtures/r4/resources/condition/example1.json")
require.NoError(t, err)
//err = json.Unmarshal(conditionBytes, &observationJson)
//require.NoError(t, err)
//test
conditionModel := FhirCondition{}
err = conditionModel.PopulateAndExtractSearchParameters(conditionBytes)
//assert
var testClinicalStatus []SearchParameterTokenType
require.NoError(t, err)
err = json.Unmarshal(json.RawMessage(conditionModel.ClinicalStatus), &testClinicalStatus)
require.NoError(t, err)
require.Equal(t, []SearchParameterTokenType{
{
Code: "active",
System: "http://terminology.hl7.org/CodeSystem/condition-clinical",
},
}, testClinicalStatus)
var testVerificationStatus []SearchParameterTokenType
require.NoError(t, err)
err = json.Unmarshal(json.RawMessage(conditionModel.VerificationStatus), &testVerificationStatus)
require.NoError(t, err)
require.Equal(t, []SearchParameterTokenType{
{
Code: "confirmed",
System: "http://terminology.hl7.org/CodeSystem/condition-ver-status",
},
}, testVerificationStatus)
var testCategory []SearchParameterTokenType
require.NoError(t, err)
err = json.Unmarshal(json.RawMessage(conditionModel.Category), &testCategory)
require.NoError(t, err)
require.Equal(t, []SearchParameterTokenType{
{
Code: "encounter-diagnosis",
System: "http://terminology.hl7.org/CodeSystem/condition-category",
},
{
Code: "439401001",
System: "http://snomed.info/sct",
},
}, testCategory)
var testSeverity []SearchParameterTokenType
require.NoError(t, err)
err = json.Unmarshal(json.RawMessage(conditionModel.Severity), &testSeverity)
require.NoError(t, err)
require.Equal(t, []SearchParameterTokenType{
{
Code: "24484000",
System: "http://snomed.info/sct",
},
}, testSeverity)
var testCodeSystem []SearchParameterTokenType
require.NoError(t, err)
err = json.Unmarshal(json.RawMessage(conditionModel.Code), &testCodeSystem)
require.NoError(t, err)
require.Equal(t, []SearchParameterTokenType{
{
Code: "39065001",
System: "http://snomed.info/sct",
},
}, testCodeSystem)
var testBodySite []SearchParameterTokenType
require.NoError(t, err)
err = json.Unmarshal(json.RawMessage(conditionModel.BodySite), &testBodySite)
require.NoError(t, err)
require.Equal(t, []SearchParameterTokenType{
{
Code: "49521004",
System: "http://snomed.info/sct",
},
}, testBodySite)
require.Equal(t, time.Date(2012, 05, 24, 0, 0, 0, 0, time.UTC), *conditionModel.OnsetDate)
}
func TestFhirCondition2_ExtractSearchParameters(t *testing.T) {
t.Parallel()
//setup
//var observationJson map[string]interface{}
conditionBytes, err := os.ReadFile("../../../../frontend/src/lib/fixtures/r4/resources/condition/example2.json")
require.NoError(t, err)
//err = json.Unmarshal(conditionBytes, &observationJson)
//require.NoError(t, err)
//test
conditionModel := FhirCondition{}
err = conditionModel.PopulateAndExtractSearchParameters(conditionBytes)
//assert
var testClinicalStatus []SearchParameterTokenType
require.NoError(t, err)
err = json.Unmarshal(json.RawMessage(conditionModel.ClinicalStatus), &testClinicalStatus)
require.NoError(t, err)
require.Equal(t, []SearchParameterTokenType{
{
Code: "active",
System: "http://terminology.hl7.org/CodeSystem/condition-clinical",
},
}, testClinicalStatus)
var testVerificationStatus []SearchParameterTokenType
require.NoError(t, err)
err = json.Unmarshal(json.RawMessage(conditionModel.VerificationStatus), &testVerificationStatus)
require.NoError(t, err)
require.Equal(t, []SearchParameterTokenType{
{
Code: "confirmed",
System: "http://terminology.hl7.org/CodeSystem/condition-ver-status",
},
}, testVerificationStatus)
var testCategory []SearchParameterTokenType
require.NoError(t, err)
err = json.Unmarshal(json.RawMessage(conditionModel.Category), &testCategory)
require.NoError(t, err)
require.Equal(t, []SearchParameterTokenType{
{
Code: "problem-list-item",
System: "http://terminology.hl7.org/CodeSystem/condition-category",
},
}, testCategory)
var testSeverity []SearchParameterTokenType
require.NoError(t, err)
err = json.Unmarshal(json.RawMessage(conditionModel.Severity), &testSeverity)
require.NoError(t, err)
require.Equal(t, []SearchParameterTokenType{
{
Code: "255604002",
System: "http://snomed.info/sct",
},
}, testSeverity)
var testOnsetInfo SearchParameterStringType
err = json.Unmarshal(json.RawMessage(conditionModel.OnsetInfo), &testOnsetInfo)
require.NoError(t, err)
require.Equal(t, SearchParameterStringType{"approximately November 2012"}, testOnsetInfo)
}

View File

@ -0,0 +1,49 @@
package database
import (
"encoding/json"
"github.com/stretchr/testify/require"
"os"
"testing"
)
func TestFhirEncounter_ExtractSearchParameters(t *testing.T) {
t.Parallel()
//setup
//var observationJson map[string]interface{}
encounterBytes, err := os.ReadFile("../../../../frontend/src/lib/fixtures/r4/resources/encounter/example1.json")
require.NoError(t, err)
//test
encounterModel := FhirEncounter{}
err = encounterModel.PopulateAndExtractSearchParameters(encounterBytes)
//assert
var testStatus []SearchParameterTokenType
err = json.Unmarshal(json.RawMessage(encounterModel.Status), &testStatus)
require.NoError(t, err)
require.Equal(t, []SearchParameterTokenType{{Code: "in-progress"}}, testStatus)
}
func TestFhirEncounter2_ExtractSearchParameters(t *testing.T) {
t.Parallel()
//setup
//var observationJson map[string]interface{}
encounterBytes, err := os.ReadFile("../../../../frontend/src/lib/fixtures/r4/resources/encounter/example2.json")
require.NoError(t, err)
//test
encounterModel := FhirEncounter{}
err = encounterModel.PopulateAndExtractSearchParameters(encounterBytes)
//assert
var testStatus []SearchParameterTokenType
err = json.Unmarshal(json.RawMessage(encounterModel.Status), &testStatus)
require.NoError(t, err)
require.Equal(t, []SearchParameterTokenType{{Code: "finished"}}, testStatus)
//TODO: this is incorrect.
require.Nil(t, encounterModel.Date)
//require.Equal(t, time.Date(2015, 1, 17, 16, 0, 0, 0, time.UTC), *encounterModel.Date)
}