adding ability to count by wildcard (source_resource_type).
internal fields like `id`, `source_id`, `source_resource_id` and `source_resource_type` are now queryable via keyword type.
This commit is contained in:
parent
dbc2f49d86
commit
3fe72918fd
|
@ -27,6 +27,9 @@ const (
|
|||
SearchParameterTypeQuantity SearchParameterType = "quantity"
|
||||
SearchParameterTypeComposite SearchParameterType = "composite"
|
||||
SearchParameterTypeSpecial SearchParameterType = "special"
|
||||
|
||||
SearchParameterTypeKeyword SearchParameterType = "keyword" //this is a literal/string primitive.
|
||||
|
||||
)
|
||||
|
||||
const TABLE_ALIAS = "fhir"
|
||||
|
@ -148,6 +151,12 @@ func (sr *SqliteRepository) sqlQueryResources(ctx context.Context, query models.
|
|||
//populate the group by and order by clause with the count by values
|
||||
query.Aggregations.OrderBy = "count(*) DESC"
|
||||
query.Aggregations.GroupBy = query.Aggregations.CountBy
|
||||
|
||||
if query.Aggregations.GroupBy == "*" {
|
||||
//we need to get the count of all resources, so we need to remove the group by clause and replace it by
|
||||
// `source_resource_type` which will be the same for all resources
|
||||
query.Aggregations.GroupBy = "source_resource_type"
|
||||
}
|
||||
}
|
||||
|
||||
//process order by clause
|
||||
|
@ -322,7 +331,7 @@ func ProcessSearchParameterValue(searchParameter SearchParameter, searchValueWit
|
|||
SecondaryValues: map[string]interface{}{},
|
||||
Value: searchValueWithPrefix,
|
||||
}
|
||||
if (searchParameter.Type == SearchParameterTypeString || searchParameter.Type == SearchParameterTypeUri) && len(searchParameterValue.Value.(string)) == 0 {
|
||||
if (searchParameter.Type == SearchParameterTypeString || searchParameter.Type == SearchParameterTypeUri || searchParameter.Type == SearchParameterTypeKeyword) && len(searchParameterValue.Value.(string)) == 0 {
|
||||
return searchParameterValue, fmt.Errorf("invalid search parameter value: (%s=%s)", searchParameter.Name, searchParameterValue.Value)
|
||||
}
|
||||
|
||||
|
@ -533,6 +542,9 @@ func SearchCodeToWhereClause(searchParam SearchParameter, searchParamValue Searc
|
|||
}
|
||||
return fmt.Sprintf("(%s)", clause), searchClauseNamedParams, nil
|
||||
|
||||
case SearchParameterTypeKeyword:
|
||||
//setup the clause
|
||||
return fmt.Sprintf("(%s = @%s)", searchParam.Name, NamedParameterWithSuffix(searchParam.Name, namedParameterSuffix)), searchClauseNamedParams, nil
|
||||
case SearchParameterTypeReference:
|
||||
return "", nil, fmt.Errorf("search parameter type %s not supported", searchParam.Type)
|
||||
}
|
||||
|
@ -593,7 +605,7 @@ func ProcessAggregationParameter(aggregationFieldWithProperty string, searchPara
|
|||
}
|
||||
|
||||
//primitive types should not have a modifier, we need to throw an error
|
||||
if aggregationParameter.Type == SearchParameterTypeNumber || aggregationParameter.Type == SearchParameterTypeUri {
|
||||
if aggregationParameter.Type == SearchParameterTypeNumber || aggregationParameter.Type == SearchParameterTypeUri || aggregationParameter.Type == SearchParameterTypeKeyword {
|
||||
if len(aggregationParameter.Modifier) > 0 {
|
||||
return aggregationParameter, fmt.Errorf("primitive aggregation parameter %s cannot have a property (%s)", aggregationParameter.Name, aggregationParameter.Modifier)
|
||||
}
|
||||
|
|
|
@ -180,6 +180,41 @@ func (suite *RepositorySqlTestSuite) TestQueryResources_SQL_WithPrimitiveOrderBy
|
|||
})
|
||||
}
|
||||
|
||||
func (suite *RepositorySqlTestSuite) TestQueryResources_SQL_WithKeywordOrderByAggregation() {
|
||||
//setup
|
||||
sqliteRepo := suite.TestRepository.(*SqliteRepository)
|
||||
sqliteRepo.GormClient = sqliteRepo.GormClient.Session(&gorm.Session{DryRun: true})
|
||||
|
||||
//test
|
||||
authContext := context.WithValue(context.Background(), pkg.ContextKeyTypeAuthUsername, "test_username")
|
||||
|
||||
sqlQuery, err := sqliteRepo.sqlQueryResources(authContext, models.QueryResource{
|
||||
Select: []string{},
|
||||
Where: map[string]interface{}{},
|
||||
From: "CarePlan",
|
||||
Aggregations: &models.QueryResourceAggregations{OrderBy: "id"},
|
||||
})
|
||||
require.NoError(suite.T(), err)
|
||||
var results []map[string]interface{}
|
||||
statement := sqlQuery.Find(&results).Statement
|
||||
sqlString := statement.SQL.String()
|
||||
sqlParams := statement.Vars
|
||||
|
||||
//assert
|
||||
require.NoError(suite.T(), err)
|
||||
require.Equal(suite.T(),
|
||||
strings.Join([]string{
|
||||
"SELECT fhir.*",
|
||||
"FROM fhir_care_plan as fhir",
|
||||
"WHERE (user_id = ?)",
|
||||
"GROUP BY `fhir`.`id`",
|
||||
"ORDER BY fhir.id ASC",
|
||||
}, " "), sqlString)
|
||||
require.Equal(suite.T(), sqlParams, []interface{}{
|
||||
"00000000-0000-0000-0000-000000000000",
|
||||
})
|
||||
}
|
||||
|
||||
func (suite *RepositorySqlTestSuite) TestQueryResources_SQL_WithComplexOrderByAggregation() {
|
||||
//setup
|
||||
sqliteRepo := suite.TestRepository.(*SqliteRepository)
|
||||
|
@ -254,6 +289,78 @@ func (suite *RepositorySqlTestSuite) TestQueryResources_SQL_WithPrimitiveCountBy
|
|||
})
|
||||
}
|
||||
|
||||
func (suite *RepositorySqlTestSuite) TestQueryResources_SQL_WithKeywordCountByAggregation() {
|
||||
//setup
|
||||
sqliteRepo := suite.TestRepository.(*SqliteRepository)
|
||||
sqliteRepo.GormClient = sqliteRepo.GormClient.Session(&gorm.Session{DryRun: true})
|
||||
|
||||
//test
|
||||
authContext := context.WithValue(context.Background(), pkg.ContextKeyTypeAuthUsername, "test_username")
|
||||
|
||||
sqlQuery, err := sqliteRepo.sqlQueryResources(authContext, models.QueryResource{
|
||||
Select: []string{},
|
||||
Where: map[string]interface{}{
|
||||
"activityCode": "test_code",
|
||||
},
|
||||
From: "CarePlan",
|
||||
Aggregations: &models.QueryResourceAggregations{CountBy: "source_resource_type"},
|
||||
})
|
||||
require.NoError(suite.T(), err)
|
||||
var results []map[string]interface{}
|
||||
statement := sqlQuery.Find(&results).Statement
|
||||
sqlString := statement.SQL.String()
|
||||
sqlParams := statement.Vars
|
||||
|
||||
//assert
|
||||
require.NoError(suite.T(), err)
|
||||
require.Equal(suite.T(),
|
||||
strings.Join([]string{
|
||||
"SELECT fhir.source_resource_type as label, count(*) as value",
|
||||
"FROM fhir_care_plan as fhir, json_each(fhir.activityCode) as activityCodeJson",
|
||||
"WHERE ((activityCodeJson.value ->> '$.code' = ?)) AND (user_id = ?)",
|
||||
"GROUP BY `fhir`.`source_resource_type`",
|
||||
"ORDER BY count(*) DESC",
|
||||
}, " "), sqlString)
|
||||
require.Equal(suite.T(), sqlParams, []interface{}{
|
||||
"test_code", "00000000-0000-0000-0000-000000000000",
|
||||
})
|
||||
}
|
||||
|
||||
func (suite *RepositorySqlTestSuite) TestQueryResources_SQL_WithWildcardCountByAggregation() {
|
||||
//setup
|
||||
sqliteRepo := suite.TestRepository.(*SqliteRepository)
|
||||
sqliteRepo.GormClient = sqliteRepo.GormClient.Session(&gorm.Session{DryRun: true})
|
||||
|
||||
//test
|
||||
authContext := context.WithValue(context.Background(), pkg.ContextKeyTypeAuthUsername, "test_username")
|
||||
|
||||
sqlQuery, err := sqliteRepo.sqlQueryResources(authContext, models.QueryResource{
|
||||
Select: []string{},
|
||||
Where: map[string]interface{}{},
|
||||
From: "CarePlan",
|
||||
Aggregations: &models.QueryResourceAggregations{CountBy: "*"},
|
||||
})
|
||||
require.NoError(suite.T(), err)
|
||||
var results []map[string]interface{}
|
||||
statement := sqlQuery.Find(&results).Statement
|
||||
sqlString := statement.SQL.String()
|
||||
sqlParams := statement.Vars
|
||||
|
||||
//assert
|
||||
require.NoError(suite.T(), err)
|
||||
require.Equal(suite.T(),
|
||||
strings.Join([]string{
|
||||
"SELECT fhir.source_resource_type as label, count(*) as value",
|
||||
"FROM fhir_care_plan as fhir",
|
||||
"WHERE (user_id = ?)",
|
||||
"GROUP BY `fhir`.`source_resource_type`",
|
||||
"ORDER BY count(*) DESC",
|
||||
}, " "), sqlString)
|
||||
require.Equal(suite.T(), sqlParams, []interface{}{
|
||||
"00000000-0000-0000-0000-000000000000",
|
||||
})
|
||||
}
|
||||
|
||||
func (suite *RepositorySqlTestSuite) TestQueryResources_SQL_WithComplexCountByAggregation() {
|
||||
//setup
|
||||
sqliteRepo := suite.TestRepository.(*SqliteRepository)
|
||||
|
|
|
@ -28,6 +28,7 @@ func TestProcessSearchParameter(t *testing.T) {
|
|||
{"unknown:doesntmatter", map[string]string{"test": "string"}, SearchParameter{}, true}, //unknown search parameter shoudl throw error
|
||||
{"unknown", map[string]string{"test": "string"}, SearchParameter{}, true}, //unknown search parameter shoudl throw error
|
||||
{"test", map[string]string{"test": "faketype"}, SearchParameter{Type: "faketype", Name: "test", Modifier: ""}, false},
|
||||
{"id", map[string]string{"id": "keyword"}, SearchParameter{Type: "keyword", Name: "id", Modifier: ""}, false},
|
||||
|
||||
{"given", map[string]string{"given": "string"}, SearchParameter{Type: "string", Name: "given", Modifier: ""}, false},
|
||||
{"given:contains", map[string]string{"given": "string"}, SearchParameter{Type: "string", Name: "given", Modifier: "contains"}, false},
|
||||
|
@ -112,6 +113,8 @@ func TestProcessSearchParameterValue(t *testing.T) {
|
|||
{SearchParameter{Type: "quantity", Name: "valueQuantity", Modifier: ""}, "ap5.4|http://unitsofmeasure.org|mg|additional", SearchParameterValue{Value: float64(5.4), Prefix: "ap", SecondaryValues: map[string]interface{}{"valueQuantitySystem": "http://unitsofmeasure.org", "valueQuantityCode": "mg|additional"}}, false},
|
||||
{SearchParameter{Type: "quantity", Name: "valueQuantity", Modifier: ""}, "5.4||", SearchParameterValue{Value: float64(5.4), Prefix: "", SecondaryValues: map[string]interface{}{}}, false},
|
||||
{SearchParameter{Type: "quantity", Name: "valueQuantity", Modifier: ""}, "", SearchParameterValue{}, true},
|
||||
|
||||
{SearchParameter{Type: "keyword", Name: "id", Modifier: ""}, "1234", SearchParameterValue{Value: "1234", SecondaryValues: map[string]interface{}{}}, false},
|
||||
}
|
||||
|
||||
//test && assert
|
||||
|
@ -155,6 +158,8 @@ func TestSearchCodeToWhereClause(t *testing.T) {
|
|||
{SearchParameter{Type: "token", Name: "code", Modifier: ""}, SearchParameterValue{Value: "ha125", Prefix: "", SecondaryValues: map[string]interface{}{"codeSystem": "http://acme.org/conditions/codes"}}, "0_0", "(codeJson.value ->> '$.code' = @code_0_0 AND codeJson.value ->> '$.system' = @codeSystem_0_0)", map[string]interface{}{"code_0_0": "ha125", "codeSystem_0_0": "http://acme.org/conditions/codes"}, false},
|
||||
{SearchParameter{Type: "token", Name: "code", Modifier: ""}, SearchParameterValue{Value: "ha125", Prefix: "", SecondaryValues: map[string]interface{}{}}, "0_0", "(codeJson.value ->> '$.code' = @code_0_0)", map[string]interface{}{"code_0_0": "ha125"}, false},
|
||||
{SearchParameter{Type: "token", Name: "identifier", Modifier: "otype"}, SearchParameterValue{Value: "MR|446053", Prefix: "", SecondaryValues: map[string]interface{}{"identifierSystem": "http://terminology.hl7.org/CodeSystem/v2-0203"}}, "0_0", "(identifierJson.value ->> '$.code' = @identifier_0_0 AND identifierJson.value ->> '$.system' = @identifierSystem_0_0)", map[string]interface{}{"identifier_0_0": "MR|446053", "identifierSystem_0_0": "http://terminology.hl7.org/CodeSystem/v2-0203"}, false},
|
||||
|
||||
{SearchParameter{Type: "keyword", Name: "id", Modifier: ""}, SearchParameterValue{Value: "1234", Prefix: "", SecondaryValues: map[string]interface{}{}}, "0_0", "(id = @id_0_0)", map[string]interface{}{"id_0_0": "1234"}, false},
|
||||
}
|
||||
|
||||
//test && assert
|
||||
|
@ -181,6 +186,7 @@ func TestSearchCodeToFromClause(t *testing.T) {
|
|||
}{
|
||||
{SearchParameter{Type: "number", Name: "probability", Modifier: ""}, "", false},
|
||||
{SearchParameter{Type: "date", Name: "issueDate", Modifier: ""}, "", false},
|
||||
{SearchParameter{Type: "keyword", Name: "id", Modifier: ""}, "", false},
|
||||
{SearchParameter{Type: "token", Name: "hello", Modifier: ""}, "json_each(fhir.hello) as helloJson", false},
|
||||
}
|
||||
|
||||
|
|
|
@ -54,6 +54,7 @@ type FhirAccount struct {
|
|||
|
||||
func (s *FhirAccount) GetSearchParameters() map[string]string {
|
||||
searchParameters := map[string]string{
|
||||
"id": "keyword",
|
||||
"identifier": "token",
|
||||
"language": "token",
|
||||
"lastUpdated": "date",
|
||||
|
@ -61,6 +62,10 @@ func (s *FhirAccount) GetSearchParameters() map[string]string {
|
|||
"owner": "reference",
|
||||
"period": "date",
|
||||
"profile": "reference",
|
||||
"source_id": "keyword",
|
||||
"source_resource_id": "keyword",
|
||||
"source_resource_type": "keyword",
|
||||
"source_uri": "keyword",
|
||||
"status": "token",
|
||||
"subject": "reference",
|
||||
"tag": "token",
|
||||
|
|
|
@ -76,6 +76,7 @@ func (s *FhirAdverseEvent) GetSearchParameters() map[string]string {
|
|||
"category": "token",
|
||||
"date": "date",
|
||||
"event": "token",
|
||||
"id": "keyword",
|
||||
"language": "token",
|
||||
"lastUpdated": "date",
|
||||
"location": "reference",
|
||||
|
@ -84,6 +85,10 @@ func (s *FhirAdverseEvent) GetSearchParameters() map[string]string {
|
|||
"resultingcondition": "reference",
|
||||
"seriousness": "token",
|
||||
"severity": "token",
|
||||
"source_id": "keyword",
|
||||
"source_resource_id": "keyword",
|
||||
"source_resource_type": "keyword",
|
||||
"source_uri": "keyword",
|
||||
"study": "reference",
|
||||
"subject": "reference",
|
||||
"substance": "reference",
|
||||
|
|
|
@ -154,6 +154,7 @@ func (s *FhirAllergyIntolerance) GetSearchParameters() map[string]string {
|
|||
"code": "token",
|
||||
"criticality": "token",
|
||||
"date": "date",
|
||||
"id": "keyword",
|
||||
"identifier": "token",
|
||||
"language": "token",
|
||||
"lastDate": "date",
|
||||
|
@ -164,6 +165,10 @@ func (s *FhirAllergyIntolerance) GetSearchParameters() map[string]string {
|
|||
"recorder": "reference",
|
||||
"route": "token",
|
||||
"severity": "token",
|
||||
"source_id": "keyword",
|
||||
"source_resource_id": "keyword",
|
||||
"source_resource_type": "keyword",
|
||||
"source_uri": "keyword",
|
||||
"tag": "token",
|
||||
"text": "string",
|
||||
"type": "special",
|
||||
|
|
|
@ -88,6 +88,7 @@ func (s *FhirAppointment) GetSearchParameters() map[string]string {
|
|||
"appointmentType": "token",
|
||||
"basedOn": "reference",
|
||||
"date": "date",
|
||||
"id": "keyword",
|
||||
"identifier": "token",
|
||||
"language": "token",
|
||||
"lastUpdated": "date",
|
||||
|
@ -100,6 +101,10 @@ func (s *FhirAppointment) GetSearchParameters() map[string]string {
|
|||
"serviceCategory": "token",
|
||||
"serviceType": "token",
|
||||
"slot": "reference",
|
||||
"source_id": "keyword",
|
||||
"source_resource_id": "keyword",
|
||||
"source_resource_type": "keyword",
|
||||
"source_uri": "keyword",
|
||||
"specialty": "token",
|
||||
"status": "token",
|
||||
"supportingInfo": "reference",
|
||||
|
|
|
@ -36,9 +36,14 @@ type FhirBinary struct {
|
|||
|
||||
func (s *FhirBinary) GetSearchParameters() map[string]string {
|
||||
searchParameters := map[string]string{
|
||||
"id": "keyword",
|
||||
"language": "token",
|
||||
"lastUpdated": "date",
|
||||
"profile": "reference",
|
||||
"source_id": "keyword",
|
||||
"source_resource_id": "keyword",
|
||||
"source_resource_type": "keyword",
|
||||
"source_uri": "keyword",
|
||||
"tag": "token",
|
||||
"text": "string",
|
||||
"type": "special",
|
||||
|
|
|
@ -156,6 +156,7 @@ func (s *FhirCarePlan) GetSearchParameters() map[string]string {
|
|||
"date": "date",
|
||||
"encounter": "reference",
|
||||
"goal": "reference",
|
||||
"id": "keyword",
|
||||
"identifier": "token",
|
||||
"instantiatesCanonical": "reference",
|
||||
"instantiatesUri": "uri",
|
||||
|
@ -166,6 +167,10 @@ func (s *FhirCarePlan) GetSearchParameters() map[string]string {
|
|||
"performer": "reference",
|
||||
"profile": "reference",
|
||||
"replaces": "reference",
|
||||
"source_id": "keyword",
|
||||
"source_resource_id": "keyword",
|
||||
"source_resource_type": "keyword",
|
||||
"source_uri": "keyword",
|
||||
"status": "token",
|
||||
"subject": "reference",
|
||||
"tag": "token",
|
||||
|
|
|
@ -113,11 +113,16 @@ func (s *FhirCareTeam) GetSearchParameters() map[string]string {
|
|||
"category": "token",
|
||||
"date": "date",
|
||||
"encounter": "reference",
|
||||
"id": "keyword",
|
||||
"identifier": "token",
|
||||
"language": "token",
|
||||
"lastUpdated": "date",
|
||||
"participant": "reference",
|
||||
"profile": "reference",
|
||||
"source_id": "keyword",
|
||||
"source_resource_id": "keyword",
|
||||
"source_resource_type": "keyword",
|
||||
"source_uri": "keyword",
|
||||
"status": "token",
|
||||
"subject": "reference",
|
||||
"tag": "token",
|
||||
|
|
|
@ -90,6 +90,7 @@ func (s *FhirClaim) GetSearchParameters() map[string]string {
|
|||
"encounter": "reference",
|
||||
"enterer": "reference",
|
||||
"facility": "reference",
|
||||
"id": "keyword",
|
||||
"identifier": "token",
|
||||
"insurer": "reference",
|
||||
"itemUdi": "reference",
|
||||
|
@ -100,6 +101,10 @@ func (s *FhirClaim) GetSearchParameters() map[string]string {
|
|||
"procedureUdi": "reference",
|
||||
"profile": "reference",
|
||||
"provider": "reference",
|
||||
"source_id": "keyword",
|
||||
"source_resource_id": "keyword",
|
||||
"source_resource_type": "keyword",
|
||||
"source_uri": "keyword",
|
||||
"status": "token",
|
||||
"subdetailUdi": "reference",
|
||||
"tag": "token",
|
||||
|
|
|
@ -68,6 +68,7 @@ func (s *FhirClaimResponse) GetSearchParameters() map[string]string {
|
|||
searchParameters := map[string]string{
|
||||
"created": "date",
|
||||
"disposition": "string",
|
||||
"id": "keyword",
|
||||
"identifier": "token",
|
||||
"insurer": "reference",
|
||||
"language": "token",
|
||||
|
@ -77,6 +78,10 @@ func (s *FhirClaimResponse) GetSearchParameters() map[string]string {
|
|||
"profile": "reference",
|
||||
"request": "reference",
|
||||
"requestor": "reference",
|
||||
"source_id": "keyword",
|
||||
"source_resource_id": "keyword",
|
||||
"source_resource_type": "keyword",
|
||||
"source_uri": "keyword",
|
||||
"status": "token",
|
||||
"tag": "token",
|
||||
"text": "string",
|
||||
|
|
|
@ -160,6 +160,7 @@ func (s *FhirComposition) GetSearchParameters() map[string]string {
|
|||
"date": "date",
|
||||
"encounter": "reference",
|
||||
"entry": "reference",
|
||||
"id": "keyword",
|
||||
"identifier": "token",
|
||||
"language": "token",
|
||||
"lastUpdated": "date",
|
||||
|
@ -168,6 +169,10 @@ func (s *FhirComposition) GetSearchParameters() map[string]string {
|
|||
"relatedId": "token",
|
||||
"relatedRef": "reference",
|
||||
"section": "token",
|
||||
"source_id": "keyword",
|
||||
"source_resource_id": "keyword",
|
||||
"source_resource_type": "keyword",
|
||||
"source_uri": "keyword",
|
||||
"status": "token",
|
||||
"subject": "reference",
|
||||
"tag": "token",
|
||||
|
|
|
@ -157,6 +157,7 @@ func (s *FhirCondition) GetSearchParameters() map[string]string {
|
|||
"encounter": "reference",
|
||||
"evidence": "token",
|
||||
"evidenceDetail": "reference",
|
||||
"id": "keyword",
|
||||
"identifier": "token",
|
||||
"language": "token",
|
||||
"lastUpdated": "date",
|
||||
|
@ -166,6 +167,10 @@ func (s *FhirCondition) GetSearchParameters() map[string]string {
|
|||
"profile": "reference",
|
||||
"recordedDate": "date",
|
||||
"severity": "token",
|
||||
"source_id": "keyword",
|
||||
"source_resource_id": "keyword",
|
||||
"source_resource_type": "keyword",
|
||||
"source_uri": "keyword",
|
||||
"stage": "token",
|
||||
"subject": "reference",
|
||||
"tag": "token",
|
||||
|
|
|
@ -137,6 +137,7 @@ func (s *FhirConsent) GetSearchParameters() map[string]string {
|
|||
"consentor": "reference",
|
||||
"data": "reference",
|
||||
"date": "date",
|
||||
"id": "keyword",
|
||||
"identifier": "token",
|
||||
"language": "token",
|
||||
"lastUpdated": "date",
|
||||
|
@ -147,6 +148,10 @@ func (s *FhirConsent) GetSearchParameters() map[string]string {
|
|||
"scope": "token",
|
||||
"securityLabel": "token",
|
||||
"sourceReference": "reference",
|
||||
"source_id": "keyword",
|
||||
"source_resource_id": "keyword",
|
||||
"source_resource_type": "keyword",
|
||||
"source_uri": "keyword",
|
||||
"status": "token",
|
||||
"tag": "token",
|
||||
"text": "string",
|
||||
|
|
|
@ -67,12 +67,17 @@ func (s *FhirCoverage) GetSearchParameters() map[string]string {
|
|||
"classType": "token",
|
||||
"classValue": "string",
|
||||
"dependent": "string",
|
||||
"id": "keyword",
|
||||
"identifier": "token",
|
||||
"language": "token",
|
||||
"lastUpdated": "date",
|
||||
"payor": "reference",
|
||||
"policyHolder": "reference",
|
||||
"profile": "reference",
|
||||
"source_id": "keyword",
|
||||
"source_resource_id": "keyword",
|
||||
"source_resource_type": "keyword",
|
||||
"source_uri": "keyword",
|
||||
"status": "token",
|
||||
"subscriber": "reference",
|
||||
"tag": "token",
|
||||
|
|
|
@ -57,11 +57,16 @@ func (s *FhirCoverageEligibilityRequest) GetSearchParameters() map[string]string
|
|||
"created": "date",
|
||||
"enterer": "reference",
|
||||
"facility": "reference",
|
||||
"id": "keyword",
|
||||
"identifier": "token",
|
||||
"language": "token",
|
||||
"lastUpdated": "date",
|
||||
"profile": "reference",
|
||||
"provider": "reference",
|
||||
"source_id": "keyword",
|
||||
"source_resource_id": "keyword",
|
||||
"source_resource_type": "keyword",
|
||||
"source_uri": "keyword",
|
||||
"status": "token",
|
||||
"tag": "token",
|
||||
"text": "string",
|
||||
|
|
|
@ -62,6 +62,7 @@ func (s *FhirCoverageEligibilityResponse) GetSearchParameters() map[string]strin
|
|||
searchParameters := map[string]string{
|
||||
"created": "date",
|
||||
"disposition": "string",
|
||||
"id": "keyword",
|
||||
"identifier": "token",
|
||||
"insurer": "reference",
|
||||
"language": "token",
|
||||
|
@ -70,6 +71,10 @@ func (s *FhirCoverageEligibilityResponse) GetSearchParameters() map[string]strin
|
|||
"profile": "reference",
|
||||
"request": "reference",
|
||||
"requestor": "reference",
|
||||
"source_id": "keyword",
|
||||
"source_resource_id": "keyword",
|
||||
"source_resource_type": "keyword",
|
||||
"source_uri": "keyword",
|
||||
"status": "token",
|
||||
"tag": "token",
|
||||
"text": "string",
|
||||
|
|
|
@ -67,6 +67,7 @@ type FhirDevice struct {
|
|||
func (s *FhirDevice) GetSearchParameters() map[string]string {
|
||||
searchParameters := map[string]string{
|
||||
"deviceName": "string",
|
||||
"id": "keyword",
|
||||
"identifier": "token",
|
||||
"language": "token",
|
||||
"lastUpdated": "date",
|
||||
|
@ -75,6 +76,10 @@ func (s *FhirDevice) GetSearchParameters() map[string]string {
|
|||
"model": "string",
|
||||
"organization": "reference",
|
||||
"profile": "reference",
|
||||
"source_id": "keyword",
|
||||
"source_resource_id": "keyword",
|
||||
"source_resource_type": "keyword",
|
||||
"source_uri": "keyword",
|
||||
"status": "token",
|
||||
"tag": "token",
|
||||
"text": "string",
|
||||
|
|
|
@ -159,6 +159,7 @@ func (s *FhirDeviceRequest) GetSearchParameters() map[string]string {
|
|||
"encounter": "reference",
|
||||
"eventDate": "date",
|
||||
"groupIdentifier": "token",
|
||||
"id": "keyword",
|
||||
"identifier": "token",
|
||||
"instantiatesCanonical": "reference",
|
||||
"instantiatesUri": "uri",
|
||||
|
@ -170,6 +171,10 @@ func (s *FhirDeviceRequest) GetSearchParameters() map[string]string {
|
|||
"priorRequest": "reference",
|
||||
"profile": "reference",
|
||||
"requester": "reference",
|
||||
"source_id": "keyword",
|
||||
"source_resource_id": "keyword",
|
||||
"source_resource_type": "keyword",
|
||||
"source_uri": "keyword",
|
||||
"status": "token",
|
||||
"subject": "reference",
|
||||
"tag": "token",
|
||||
|
|
|
@ -172,6 +172,7 @@ func (s *FhirDiagnosticReport) GetSearchParameters() map[string]string {
|
|||
"conclusion": "token",
|
||||
"date": "date",
|
||||
"encounter": "reference",
|
||||
"id": "keyword",
|
||||
"identifier": "token",
|
||||
"issued": "date",
|
||||
"language": "token",
|
||||
|
@ -181,6 +182,10 @@ func (s *FhirDiagnosticReport) GetSearchParameters() map[string]string {
|
|||
"profile": "reference",
|
||||
"result": "reference",
|
||||
"resultsInterpreter": "reference",
|
||||
"source_id": "keyword",
|
||||
"source_resource_id": "keyword",
|
||||
"source_resource_type": "keyword",
|
||||
"source_uri": "keyword",
|
||||
"specimen": "reference",
|
||||
"status": "token",
|
||||
"subject": "reference",
|
||||
|
|
|
@ -105,6 +105,7 @@ func (s *FhirDocumentManifest) GetSearchParameters() map[string]string {
|
|||
"author": "reference",
|
||||
"created": "date",
|
||||
"description": "string",
|
||||
"id": "keyword",
|
||||
"identifier": "token",
|
||||
"item": "reference",
|
||||
"language": "token",
|
||||
|
@ -114,6 +115,10 @@ func (s *FhirDocumentManifest) GetSearchParameters() map[string]string {
|
|||
"relatedId": "token",
|
||||
"relatedRef": "reference",
|
||||
"source": "uri",
|
||||
"source_id": "keyword",
|
||||
"source_resource_id": "keyword",
|
||||
"source_resource_type": "keyword",
|
||||
"source_uri": "keyword",
|
||||
"status": "token",
|
||||
"subject": "reference",
|
||||
"tag": "token",
|
||||
|
|
|
@ -158,6 +158,7 @@ func (s *FhirDocumentReference) GetSearchParameters() map[string]string {
|
|||
"event": "token",
|
||||
"facility": "token",
|
||||
"format": "token",
|
||||
"id": "keyword",
|
||||
"identifier": "token",
|
||||
"language": "token",
|
||||
"lastUpdated": "date",
|
||||
|
@ -169,6 +170,10 @@ func (s *FhirDocumentReference) GetSearchParameters() map[string]string {
|
|||
"relation": "token",
|
||||
"securityLabel": "token",
|
||||
"setting": "token",
|
||||
"source_id": "keyword",
|
||||
"source_resource_id": "keyword",
|
||||
"source_resource_type": "keyword",
|
||||
"source_uri": "keyword",
|
||||
"status": "token",
|
||||
"subject": "reference",
|
||||
"tag": "token",
|
||||
|
|
|
@ -159,6 +159,7 @@ func (s *FhirEncounter) GetSearchParameters() map[string]string {
|
|||
"date": "date",
|
||||
"diagnosis": "reference",
|
||||
"episodeOfCare": "reference",
|
||||
"id": "keyword",
|
||||
"identifier": "token",
|
||||
"language": "token",
|
||||
"lastUpdated": "date",
|
||||
|
@ -173,6 +174,10 @@ func (s *FhirEncounter) GetSearchParameters() map[string]string {
|
|||
"reasonCode": "token",
|
||||
"reasonReference": "reference",
|
||||
"serviceProvider": "reference",
|
||||
"source_id": "keyword",
|
||||
"source_resource_id": "keyword",
|
||||
"source_resource_type": "keyword",
|
||||
"source_uri": "keyword",
|
||||
"specialArrangement": "token",
|
||||
"status": "token",
|
||||
"subject": "reference",
|
||||
|
|
|
@ -55,6 +55,7 @@ type FhirEndpoint struct {
|
|||
func (s *FhirEndpoint) GetSearchParameters() map[string]string {
|
||||
searchParameters := map[string]string{
|
||||
"connectionType": "token",
|
||||
"id": "keyword",
|
||||
"identifier": "token",
|
||||
"language": "token",
|
||||
"lastUpdated": "date",
|
||||
|
@ -62,6 +63,10 @@ func (s *FhirEndpoint) GetSearchParameters() map[string]string {
|
|||
"organization": "reference",
|
||||
"payloadType": "token",
|
||||
"profile": "reference",
|
||||
"source_id": "keyword",
|
||||
"source_resource_id": "keyword",
|
||||
"source_resource_type": "keyword",
|
||||
"source_uri": "keyword",
|
||||
"status": "token",
|
||||
"tag": "token",
|
||||
"text": "string",
|
||||
|
|
|
@ -45,10 +45,15 @@ type FhirEnrollmentRequest struct {
|
|||
|
||||
func (s *FhirEnrollmentRequest) GetSearchParameters() map[string]string {
|
||||
searchParameters := map[string]string{
|
||||
"id": "keyword",
|
||||
"identifier": "token",
|
||||
"language": "token",
|
||||
"lastUpdated": "date",
|
||||
"profile": "reference",
|
||||
"source_id": "keyword",
|
||||
"source_resource_id": "keyword",
|
||||
"source_resource_type": "keyword",
|
||||
"source_uri": "keyword",
|
||||
"status": "token",
|
||||
"subject": "reference",
|
||||
"tag": "token",
|
||||
|
|
|
@ -45,11 +45,16 @@ type FhirEnrollmentResponse struct {
|
|||
|
||||
func (s *FhirEnrollmentResponse) GetSearchParameters() map[string]string {
|
||||
searchParameters := map[string]string{
|
||||
"id": "keyword",
|
||||
"identifier": "token",
|
||||
"language": "token",
|
||||
"lastUpdated": "date",
|
||||
"profile": "reference",
|
||||
"request": "reference",
|
||||
"source_id": "keyword",
|
||||
"source_resource_id": "keyword",
|
||||
"source_resource_type": "keyword",
|
||||
"source_uri": "keyword",
|
||||
"status": "token",
|
||||
"tag": "token",
|
||||
"text": "string",
|
||||
|
|
|
@ -93,6 +93,7 @@ func (s *FhirExplanationOfBenefit) GetSearchParameters() map[string]string {
|
|||
"encounter": "reference",
|
||||
"enterer": "reference",
|
||||
"facility": "reference",
|
||||
"id": "keyword",
|
||||
"identifier": "token",
|
||||
"itemUdi": "reference",
|
||||
"language": "token",
|
||||
|
@ -101,6 +102,10 @@ func (s *FhirExplanationOfBenefit) GetSearchParameters() map[string]string {
|
|||
"procedureUdi": "reference",
|
||||
"profile": "reference",
|
||||
"provider": "reference",
|
||||
"source_id": "keyword",
|
||||
"source_resource_id": "keyword",
|
||||
"source_resource_type": "keyword",
|
||||
"source_uri": "keyword",
|
||||
"status": "token",
|
||||
"subdetailUdi": "reference",
|
||||
"tag": "token",
|
||||
|
|
|
@ -132,6 +132,7 @@ func (s *FhirFamilyMemberHistory) GetSearchParameters() map[string]string {
|
|||
searchParameters := map[string]string{
|
||||
"code": "token",
|
||||
"date": "date",
|
||||
"id": "keyword",
|
||||
"identifier": "token",
|
||||
"instantiatesCanonical": "reference",
|
||||
"instantiatesUri": "uri",
|
||||
|
@ -140,6 +141,10 @@ func (s *FhirFamilyMemberHistory) GetSearchParameters() map[string]string {
|
|||
"profile": "reference",
|
||||
"relationship": "token",
|
||||
"sex": "token",
|
||||
"source_id": "keyword",
|
||||
"source_resource_id": "keyword",
|
||||
"source_resource_type": "keyword",
|
||||
"source_uri": "keyword",
|
||||
"status": "token",
|
||||
"tag": "token",
|
||||
"text": "string",
|
||||
|
|
|
@ -92,11 +92,16 @@ func (s *FhirGoal) GetSearchParameters() map[string]string {
|
|||
searchParameters := map[string]string{
|
||||
"achievementStatus": "token",
|
||||
"category": "token",
|
||||
"id": "keyword",
|
||||
"identifier": "token",
|
||||
"language": "token",
|
||||
"lastUpdated": "date",
|
||||
"lifecycleStatus": "token",
|
||||
"profile": "reference",
|
||||
"source_id": "keyword",
|
||||
"source_resource_id": "keyword",
|
||||
"source_resource_type": "keyword",
|
||||
"source_uri": "keyword",
|
||||
"startDate": "date",
|
||||
"subject": "reference",
|
||||
"tag": "token",
|
||||
|
|
|
@ -122,6 +122,7 @@ func (s *FhirImagingStudy) GetSearchParameters() map[string]string {
|
|||
"dicomClass": "token",
|
||||
"encounter": "reference",
|
||||
"endpoint": "reference",
|
||||
"id": "keyword",
|
||||
"identifier": "token",
|
||||
"instance": "token",
|
||||
"interpreter": "reference",
|
||||
|
@ -133,6 +134,10 @@ func (s *FhirImagingStudy) GetSearchParameters() map[string]string {
|
|||
"reason": "token",
|
||||
"referrer": "reference",
|
||||
"series": "token",
|
||||
"source_id": "keyword",
|
||||
"source_resource_id": "keyword",
|
||||
"source_resource_type": "keyword",
|
||||
"source_uri": "keyword",
|
||||
"started": "date",
|
||||
"status": "token",
|
||||
"subject": "reference",
|
||||
|
|
|
@ -135,6 +135,7 @@ type FhirImmunization struct {
|
|||
func (s *FhirImmunization) GetSearchParameters() map[string]string {
|
||||
searchParameters := map[string]string{
|
||||
"date": "date",
|
||||
"id": "keyword",
|
||||
"identifier": "token",
|
||||
"language": "token",
|
||||
"lastUpdated": "date",
|
||||
|
@ -148,6 +149,10 @@ func (s *FhirImmunization) GetSearchParameters() map[string]string {
|
|||
"reasonCode": "token",
|
||||
"reasonReference": "reference",
|
||||
"series": "string",
|
||||
"source_id": "keyword",
|
||||
"source_resource_id": "keyword",
|
||||
"source_resource_type": "keyword",
|
||||
"source_uri": "keyword",
|
||||
"status": "token",
|
||||
"statusReason": "token",
|
||||
"tag": "token",
|
||||
|
|
|
@ -83,6 +83,7 @@ func (s *FhirInsurancePlan) GetSearchParameters() map[string]string {
|
|||
"addressUse": "token",
|
||||
"administeredBy": "reference",
|
||||
"endpoint": "reference",
|
||||
"id": "keyword",
|
||||
"identifier": "token",
|
||||
"language": "token",
|
||||
"lastUpdated": "date",
|
||||
|
@ -90,6 +91,10 @@ func (s *FhirInsurancePlan) GetSearchParameters() map[string]string {
|
|||
"ownedBy": "reference",
|
||||
"phonetic": "string",
|
||||
"profile": "reference",
|
||||
"source_id": "keyword",
|
||||
"source_resource_id": "keyword",
|
||||
"source_resource_type": "keyword",
|
||||
"source_uri": "keyword",
|
||||
"status": "token",
|
||||
"tag": "token",
|
||||
"text": "string",
|
||||
|
|
|
@ -82,6 +82,7 @@ func (s *FhirLocation) GetSearchParameters() map[string]string {
|
|||
"addressState": "string",
|
||||
"addressUse": "token",
|
||||
"endpoint": "reference",
|
||||
"id": "keyword",
|
||||
"identifier": "token",
|
||||
"language": "token",
|
||||
"lastUpdated": "date",
|
||||
|
@ -90,6 +91,10 @@ func (s *FhirLocation) GetSearchParameters() map[string]string {
|
|||
"organization": "reference",
|
||||
"partof": "reference",
|
||||
"profile": "reference",
|
||||
"source_id": "keyword",
|
||||
"source_resource_id": "keyword",
|
||||
"source_resource_type": "keyword",
|
||||
"source_uri": "keyword",
|
||||
"status": "token",
|
||||
"tag": "token",
|
||||
"text": "string",
|
||||
|
|
|
@ -73,6 +73,7 @@ func (s *FhirMedia) GetSearchParameters() map[string]string {
|
|||
"created": "date",
|
||||
"device": "reference",
|
||||
"encounter": "reference",
|
||||
"id": "keyword",
|
||||
"identifier": "token",
|
||||
"language": "token",
|
||||
"lastUpdated": "date",
|
||||
|
@ -80,6 +81,10 @@ func (s *FhirMedia) GetSearchParameters() map[string]string {
|
|||
"operator": "reference",
|
||||
"profile": "reference",
|
||||
"site": "token",
|
||||
"source_id": "keyword",
|
||||
"source_resource_id": "keyword",
|
||||
"source_resource_type": "keyword",
|
||||
"source_uri": "keyword",
|
||||
"status": "token",
|
||||
"subject": "reference",
|
||||
"tag": "token",
|
||||
|
|
|
@ -83,6 +83,7 @@ func (s *FhirMedication) GetSearchParameters() map[string]string {
|
|||
"code": "token",
|
||||
"expirationDate": "date",
|
||||
"form": "token",
|
||||
"id": "keyword",
|
||||
"identifier": "token",
|
||||
"ingredient": "reference",
|
||||
"ingredientCode": "token",
|
||||
|
@ -91,6 +92,10 @@ func (s *FhirMedication) GetSearchParameters() map[string]string {
|
|||
"lotNumber": "token",
|
||||
"manufacturer": "reference",
|
||||
"profile": "reference",
|
||||
"source_id": "keyword",
|
||||
"source_resource_id": "keyword",
|
||||
"source_resource_type": "keyword",
|
||||
"source_uri": "keyword",
|
||||
"status": "token",
|
||||
"tag": "token",
|
||||
"text": "string",
|
||||
|
|
|
@ -140,6 +140,7 @@ func (s *FhirMedicationAdministration) GetSearchParameters() map[string]string {
|
|||
"context": "reference",
|
||||
"device": "reference",
|
||||
"effectiveTime": "date",
|
||||
"id": "keyword",
|
||||
"identifier": "token",
|
||||
"language": "token",
|
||||
"lastUpdated": "date",
|
||||
|
@ -149,6 +150,10 @@ func (s *FhirMedicationAdministration) GetSearchParameters() map[string]string {
|
|||
"reasonGiven": "token",
|
||||
"reasonNotGiven": "token",
|
||||
"request": "reference",
|
||||
"source_id": "keyword",
|
||||
"source_resource_id": "keyword",
|
||||
"source_resource_type": "keyword",
|
||||
"source_uri": "keyword",
|
||||
"status": "token",
|
||||
"subject": "reference",
|
||||
"tag": "token",
|
||||
|
|
|
@ -146,6 +146,7 @@ func (s *FhirMedicationDispense) GetSearchParameters() map[string]string {
|
|||
"code": "token",
|
||||
"context": "reference",
|
||||
"destination": "reference",
|
||||
"id": "keyword",
|
||||
"identifier": "token",
|
||||
"language": "token",
|
||||
"lastUpdated": "date",
|
||||
|
@ -155,6 +156,10 @@ func (s *FhirMedicationDispense) GetSearchParameters() map[string]string {
|
|||
"profile": "reference",
|
||||
"receiver": "reference",
|
||||
"responsibleparty": "reference",
|
||||
"source_id": "keyword",
|
||||
"source_resource_id": "keyword",
|
||||
"source_resource_type": "keyword",
|
||||
"source_uri": "keyword",
|
||||
"status": "token",
|
||||
"subject": "reference",
|
||||
"tag": "token",
|
||||
|
|
|
@ -158,6 +158,7 @@ func (s *FhirMedicationRequest) GetSearchParameters() map[string]string {
|
|||
"code": "token",
|
||||
"date": "date",
|
||||
"encounter": "reference",
|
||||
"id": "keyword",
|
||||
"identifier": "token",
|
||||
"intendedDispenser": "reference",
|
||||
"intendedPerformer": "reference",
|
||||
|
@ -169,6 +170,10 @@ func (s *FhirMedicationRequest) GetSearchParameters() map[string]string {
|
|||
"priority": "token",
|
||||
"profile": "reference",
|
||||
"requester": "reference",
|
||||
"source_id": "keyword",
|
||||
"source_resource_id": "keyword",
|
||||
"source_resource_type": "keyword",
|
||||
"source_uri": "keyword",
|
||||
"status": "token",
|
||||
"subject": "reference",
|
||||
"tag": "token",
|
||||
|
|
|
@ -134,6 +134,7 @@ func (s *FhirMedicationStatement) GetSearchParameters() map[string]string {
|
|||
"code": "token",
|
||||
"context": "reference",
|
||||
"effective": "date",
|
||||
"id": "keyword",
|
||||
"identifier": "token",
|
||||
"language": "token",
|
||||
"lastUpdated": "date",
|
||||
|
@ -141,6 +142,10 @@ func (s *FhirMedicationStatement) GetSearchParameters() map[string]string {
|
|||
"partOf": "reference",
|
||||
"profile": "reference",
|
||||
"source": "reference",
|
||||
"source_id": "keyword",
|
||||
"source_resource_id": "keyword",
|
||||
"source_resource_type": "keyword",
|
||||
"source_uri": "keyword",
|
||||
"status": "token",
|
||||
"subject": "reference",
|
||||
"tag": "token",
|
||||
|
|
|
@ -121,6 +121,7 @@ func (s *FhirNutritionOrder) GetSearchParameters() map[string]string {
|
|||
"datetime": "date",
|
||||
"encounter": "reference",
|
||||
"formula": "token",
|
||||
"id": "keyword",
|
||||
"identifier": "token",
|
||||
"instantiatesCanonical": "reference",
|
||||
"instantiatesUri": "uri",
|
||||
|
@ -129,6 +130,10 @@ func (s *FhirNutritionOrder) GetSearchParameters() map[string]string {
|
|||
"oraldiet": "token",
|
||||
"profile": "reference",
|
||||
"provider": "reference",
|
||||
"source_id": "keyword",
|
||||
"source_resource_id": "keyword",
|
||||
"source_resource_type": "keyword",
|
||||
"source_uri": "keyword",
|
||||
"status": "token",
|
||||
"supplement": "token",
|
||||
"tag": "token",
|
||||
|
|
|
@ -226,6 +226,7 @@ func (s *FhirObservation) GetSearchParameters() map[string]string {
|
|||
"encounter": "reference",
|
||||
"focus": "reference",
|
||||
"hasMember": "reference",
|
||||
"id": "keyword",
|
||||
"identifier": "token",
|
||||
"language": "token",
|
||||
"lastUpdated": "date",
|
||||
|
@ -233,6 +234,10 @@ func (s *FhirObservation) GetSearchParameters() map[string]string {
|
|||
"partOf": "reference",
|
||||
"performer": "reference",
|
||||
"profile": "reference",
|
||||
"source_id": "keyword",
|
||||
"source_resource_id": "keyword",
|
||||
"source_resource_type": "keyword",
|
||||
"source_uri": "keyword",
|
||||
"specimen": "reference",
|
||||
"status": "token",
|
||||
"subject": "reference",
|
||||
|
|
|
@ -80,6 +80,7 @@ func (s *FhirOrganization) GetSearchParameters() map[string]string {
|
|||
"addressState": "string",
|
||||
"addressUse": "token",
|
||||
"endpoint": "reference",
|
||||
"id": "keyword",
|
||||
"identifier": "token",
|
||||
"language": "token",
|
||||
"lastUpdated": "date",
|
||||
|
@ -87,6 +88,10 @@ func (s *FhirOrganization) GetSearchParameters() map[string]string {
|
|||
"partof": "reference",
|
||||
"phonetic": "string",
|
||||
"profile": "reference",
|
||||
"source_id": "keyword",
|
||||
"source_resource_id": "keyword",
|
||||
"source_resource_type": "keyword",
|
||||
"source_uri": "keyword",
|
||||
"tag": "token",
|
||||
"text": "string",
|
||||
"type": "special",
|
||||
|
|
|
@ -82,6 +82,7 @@ func (s *FhirOrganizationAffiliation) GetSearchParameters() map[string]string {
|
|||
"date": "date",
|
||||
"email": "token",
|
||||
"endpoint": "reference",
|
||||
"id": "keyword",
|
||||
"identifier": "token",
|
||||
"language": "token",
|
||||
"lastUpdated": "date",
|
||||
|
@ -93,6 +94,10 @@ func (s *FhirOrganizationAffiliation) GetSearchParameters() map[string]string {
|
|||
"profile": "reference",
|
||||
"role": "token",
|
||||
"service": "reference",
|
||||
"source_id": "keyword",
|
||||
"source_resource_id": "keyword",
|
||||
"source_resource_type": "keyword",
|
||||
"source_uri": "keyword",
|
||||
"specialty": "token",
|
||||
"tag": "token",
|
||||
"telecom": "token",
|
||||
|
|
|
@ -213,6 +213,7 @@ func (s *FhirPatient) GetSearchParameters() map[string]string {
|
|||
"gender": "token",
|
||||
"generalPractitioner": "reference",
|
||||
"given": "string",
|
||||
"id": "keyword",
|
||||
"identifier": "token",
|
||||
"language": "token",
|
||||
"lastUpdated": "date",
|
||||
|
@ -222,6 +223,10 @@ func (s *FhirPatient) GetSearchParameters() map[string]string {
|
|||
"phone": "token",
|
||||
"phonetic": "string",
|
||||
"profile": "reference",
|
||||
"source_id": "keyword",
|
||||
"source_resource_id": "keyword",
|
||||
"source_resource_type": "keyword",
|
||||
"source_uri": "keyword",
|
||||
"tag": "token",
|
||||
"telecom": "token",
|
||||
"text": "string",
|
||||
|
|
|
@ -185,6 +185,7 @@ func (s *FhirPerson) GetSearchParameters() map[string]string {
|
|||
"birthdate": "date",
|
||||
"email": "token",
|
||||
"gender": "token",
|
||||
"id": "keyword",
|
||||
"identifier": "token",
|
||||
"language": "token",
|
||||
"lastUpdated": "date",
|
||||
|
@ -196,6 +197,10 @@ func (s *FhirPerson) GetSearchParameters() map[string]string {
|
|||
"practitioner": "reference",
|
||||
"profile": "reference",
|
||||
"relatedperson": "reference",
|
||||
"source_id": "keyword",
|
||||
"source_resource_id": "keyword",
|
||||
"source_resource_type": "keyword",
|
||||
"source_uri": "keyword",
|
||||
"tag": "token",
|
||||
"telecom": "token",
|
||||
"text": "string",
|
||||
|
|
|
@ -189,6 +189,7 @@ func (s *FhirPractitioner) GetSearchParameters() map[string]string {
|
|||
"family": "string",
|
||||
"gender": "token",
|
||||
"given": "string",
|
||||
"id": "keyword",
|
||||
"identifier": "token",
|
||||
"language": "token",
|
||||
"lastUpdated": "date",
|
||||
|
@ -196,6 +197,10 @@ func (s *FhirPractitioner) GetSearchParameters() map[string]string {
|
|||
"phone": "token",
|
||||
"phonetic": "string",
|
||||
"profile": "reference",
|
||||
"source_id": "keyword",
|
||||
"source_resource_id": "keyword",
|
||||
"source_resource_type": "keyword",
|
||||
"source_uri": "keyword",
|
||||
"tag": "token",
|
||||
"telecom": "token",
|
||||
"text": "string",
|
||||
|
|
|
@ -103,6 +103,7 @@ func (s *FhirPractitionerRole) GetSearchParameters() map[string]string {
|
|||
"date": "date",
|
||||
"email": "token",
|
||||
"endpoint": "reference",
|
||||
"id": "keyword",
|
||||
"identifier": "token",
|
||||
"language": "token",
|
||||
"lastUpdated": "date",
|
||||
|
@ -113,6 +114,10 @@ func (s *FhirPractitionerRole) GetSearchParameters() map[string]string {
|
|||
"profile": "reference",
|
||||
"role": "token",
|
||||
"service": "reference",
|
||||
"source_id": "keyword",
|
||||
"source_resource_id": "keyword",
|
||||
"source_resource_type": "keyword",
|
||||
"source_uri": "keyword",
|
||||
"specialty": "token",
|
||||
"tag": "token",
|
||||
"telecom": "token",
|
||||
|
|
|
@ -171,6 +171,7 @@ func (s *FhirProcedure) GetSearchParameters() map[string]string {
|
|||
"code": "token",
|
||||
"date": "date",
|
||||
"encounter": "reference",
|
||||
"id": "keyword",
|
||||
"identifier": "token",
|
||||
"instantiatesCanonical": "reference",
|
||||
"instantiatesUri": "uri",
|
||||
|
@ -182,6 +183,10 @@ func (s *FhirProcedure) GetSearchParameters() map[string]string {
|
|||
"profile": "reference",
|
||||
"reasonCode": "token",
|
||||
"reasonReference": "reference",
|
||||
"source_id": "keyword",
|
||||
"source_resource_id": "keyword",
|
||||
"source_resource_type": "keyword",
|
||||
"source_uri": "keyword",
|
||||
"status": "token",
|
||||
"subject": "reference",
|
||||
"tag": "token",
|
||||
|
|
|
@ -67,12 +67,17 @@ func (s *FhirProvenance) GetSearchParameters() map[string]string {
|
|||
"agentRole": "token",
|
||||
"agentType": "token",
|
||||
"entity": "reference",
|
||||
"id": "keyword",
|
||||
"language": "token",
|
||||
"lastUpdated": "date",
|
||||
"location": "reference",
|
||||
"profile": "reference",
|
||||
"recorded": "date",
|
||||
"signatureType": "token",
|
||||
"source_id": "keyword",
|
||||
"source_resource_id": "keyword",
|
||||
"source_resource_type": "keyword",
|
||||
"source_uri": "keyword",
|
||||
"tag": "token",
|
||||
"target": "reference",
|
||||
"text": "string",
|
||||
|
|
|
@ -95,6 +95,7 @@ func (s *FhirQuestionnaire) GetSearchParameters() map[string]string {
|
|||
"definition": "uri",
|
||||
"description": "string",
|
||||
"effective": "date",
|
||||
"id": "keyword",
|
||||
"identifier": "token",
|
||||
"jurisdiction": "token",
|
||||
"language": "token",
|
||||
|
@ -102,6 +103,10 @@ func (s *FhirQuestionnaire) GetSearchParameters() map[string]string {
|
|||
"name": "string",
|
||||
"profile": "reference",
|
||||
"publisher": "string",
|
||||
"source_id": "keyword",
|
||||
"source_resource_id": "keyword",
|
||||
"source_resource_type": "keyword",
|
||||
"source_uri": "keyword",
|
||||
"status": "token",
|
||||
"subjectType": "token",
|
||||
"tag": "token",
|
||||
|
|
|
@ -70,6 +70,7 @@ func (s *FhirQuestionnaireResponse) GetSearchParameters() map[string]string {
|
|||
"authored": "date",
|
||||
"basedOn": "reference",
|
||||
"encounter": "reference",
|
||||
"id": "keyword",
|
||||
"identifier": "token",
|
||||
"language": "token",
|
||||
"lastUpdated": "date",
|
||||
|
@ -77,6 +78,10 @@ func (s *FhirQuestionnaireResponse) GetSearchParameters() map[string]string {
|
|||
"profile": "reference",
|
||||
"questionnaire": "reference",
|
||||
"source": "reference",
|
||||
"source_id": "keyword",
|
||||
"source_resource_id": "keyword",
|
||||
"source_resource_type": "keyword",
|
||||
"source_uri": "keyword",
|
||||
"status": "token",
|
||||
"subject": "reference",
|
||||
"tag": "token",
|
||||
|
|
|
@ -180,6 +180,7 @@ func (s *FhirRelatedPerson) GetSearchParameters() map[string]string {
|
|||
"birthdate": "date",
|
||||
"email": "token",
|
||||
"gender": "token",
|
||||
"id": "keyword",
|
||||
"identifier": "token",
|
||||
"language": "token",
|
||||
"lastUpdated": "date",
|
||||
|
@ -188,6 +189,10 @@ func (s *FhirRelatedPerson) GetSearchParameters() map[string]string {
|
|||
"phonetic": "string",
|
||||
"profile": "reference",
|
||||
"relationship": "token",
|
||||
"source_id": "keyword",
|
||||
"source_resource_id": "keyword",
|
||||
"source_resource_type": "keyword",
|
||||
"source_uri": "keyword",
|
||||
"tag": "token",
|
||||
"telecom": "token",
|
||||
"text": "string",
|
||||
|
|
|
@ -60,12 +60,17 @@ func (s *FhirSchedule) GetSearchParameters() map[string]string {
|
|||
"active": "token",
|
||||
"actor": "reference",
|
||||
"date": "date",
|
||||
"id": "keyword",
|
||||
"identifier": "token",
|
||||
"language": "token",
|
||||
"lastUpdated": "date",
|
||||
"profile": "reference",
|
||||
"serviceCategory": "token",
|
||||
"serviceType": "token",
|
||||
"source_id": "keyword",
|
||||
"source_resource_id": "keyword",
|
||||
"source_resource_type": "keyword",
|
||||
"source_uri": "keyword",
|
||||
"specialty": "token",
|
||||
"tag": "token",
|
||||
"text": "string",
|
||||
|
|
|
@ -167,6 +167,7 @@ func (s *FhirServiceRequest) GetSearchParameters() map[string]string {
|
|||
"category": "token",
|
||||
"code": "token",
|
||||
"encounter": "reference",
|
||||
"id": "keyword",
|
||||
"identifier": "token",
|
||||
"instantiatesCanonical": "reference",
|
||||
"instantiatesUri": "uri",
|
||||
|
@ -181,6 +182,10 @@ func (s *FhirServiceRequest) GetSearchParameters() map[string]string {
|
|||
"replaces": "reference",
|
||||
"requester": "reference",
|
||||
"requisition": "token",
|
||||
"source_id": "keyword",
|
||||
"source_resource_id": "keyword",
|
||||
"source_resource_type": "keyword",
|
||||
"source_uri": "keyword",
|
||||
"specimen": "reference",
|
||||
"status": "token",
|
||||
"subject": "reference",
|
||||
|
|
|
@ -61,6 +61,7 @@ type FhirSlot struct {
|
|||
func (s *FhirSlot) GetSearchParameters() map[string]string {
|
||||
searchParameters := map[string]string{
|
||||
"appointmentType": "token",
|
||||
"id": "keyword",
|
||||
"identifier": "token",
|
||||
"language": "token",
|
||||
"lastUpdated": "date",
|
||||
|
@ -68,6 +69,10 @@ func (s *FhirSlot) GetSearchParameters() map[string]string {
|
|||
"schedule": "reference",
|
||||
"serviceCategory": "token",
|
||||
"serviceType": "token",
|
||||
"source_id": "keyword",
|
||||
"source_resource_id": "keyword",
|
||||
"source_resource_type": "keyword",
|
||||
"source_uri": "keyword",
|
||||
"specialty": "token",
|
||||
"start": "date",
|
||||
"status": "token",
|
||||
|
|
|
@ -72,11 +72,16 @@ func (s *FhirSpecimen) GetSearchParameters() map[string]string {
|
|||
"collector": "reference",
|
||||
"container": "token",
|
||||
"containerId": "token",
|
||||
"id": "keyword",
|
||||
"identifier": "token",
|
||||
"language": "token",
|
||||
"lastUpdated": "date",
|
||||
"parent": "reference",
|
||||
"profile": "reference",
|
||||
"source_id": "keyword",
|
||||
"source_resource_id": "keyword",
|
||||
"source_resource_type": "keyword",
|
||||
"source_uri": "keyword",
|
||||
"status": "token",
|
||||
"subject": "reference",
|
||||
"tag": "token",
|
||||
|
|
|
@ -101,11 +101,16 @@ func (s *FhirVisionPrescription) GetSearchParameters() map[string]string {
|
|||
searchParameters := map[string]string{
|
||||
"datewritten": "date",
|
||||
"encounter": "reference",
|
||||
"id": "keyword",
|
||||
"identifier": "token",
|
||||
"language": "token",
|
||||
"lastUpdated": "date",
|
||||
"prescriber": "reference",
|
||||
"profile": "reference",
|
||||
"source_id": "keyword",
|
||||
"source_resource_id": "keyword",
|
||||
"source_resource_type": "keyword",
|
||||
"source_uri": "keyword",
|
||||
"status": "token",
|
||||
"tag": "token",
|
||||
"text": "string",
|
||||
|
|
|
@ -203,6 +203,13 @@ func main() {
|
|||
fieldNameLowerCamel := strcase.ToLowerCamel(fieldName)
|
||||
d[jen.Lit(fieldNameLowerCamel)] = jen.Lit(fieldInfo.FieldType)
|
||||
}
|
||||
|
||||
d[jen.Lit("id")] = jen.Lit("keyword")
|
||||
d[jen.Lit("source_id")] = jen.Lit("keyword")
|
||||
d[jen.Lit("source_uri")] = jen.Lit("keyword")
|
||||
d[jen.Lit("source_resource_id")] = jen.Lit("keyword")
|
||||
d[jen.Lit("source_resource_type")] = jen.Lit("keyword")
|
||||
|
||||
}))
|
||||
g.Return(jen.Id("searchParameters"))
|
||||
})
|
||||
|
|
|
@ -157,9 +157,9 @@
|
|||
"select": [],
|
||||
"from": "Immunization",
|
||||
"where": {},
|
||||
|
||||
"aggregation_params":["resourceType"],
|
||||
"aggregation_type":"countBy"
|
||||
"aggregations":{
|
||||
"count_by": "*"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
|
@ -170,9 +170,9 @@
|
|||
"select": [],
|
||||
"from": "Claim",
|
||||
"where": {},
|
||||
|
||||
"aggregation_params":["resourceType"],
|
||||
"aggregation_type":"countBy"
|
||||
"aggregations":{
|
||||
"count_by": "*"
|
||||
}
|
||||
}
|
||||
}],
|
||||
"parsing": {
|
||||
|
|
|
@ -8,19 +8,24 @@ import * as _ from 'lodash';
|
|||
export class DatasetLatestEntryPipe implements PipeTransform {
|
||||
|
||||
transform(dataset: ChartDataset<'line'>, round?: number, valLookupKey?: string, unitLookupKey?: string): string {
|
||||
if(!round){
|
||||
if(!dataset) {
|
||||
return '--'
|
||||
}
|
||||
|
||||
try{
|
||||
if (!round) {
|
||||
round = 0 //round to nearest whole number
|
||||
}
|
||||
let lastItem = dataset?.data?.[dataset?.data?.length -1] || ''
|
||||
let lastItem = dataset?.data?.[dataset?.data?.length - 1] || ''
|
||||
// let valueKey = this.chartOptions?.parsing?.['yAxisKey'] || dataset?.parsing?.['key']
|
||||
console.log('latestEntryConfig', lastItem, valLookupKey, unitLookupKey, round)
|
||||
let lastItemUnit = ""
|
||||
let lastItemValue
|
||||
|
||||
if(Array.isArray(lastItem)){
|
||||
if (Array.isArray(lastItem)) {
|
||||
lastItemValue = _.flatten(lastItem?.[0]?.[valLookupKey])?.[0] as string
|
||||
lastItemUnit = _.flatten(lastItem?.[0]?.[unitLookupKey])?.[0] as string
|
||||
} else if(typeof lastItem === 'object'){
|
||||
} else if (typeof lastItem === 'object') {
|
||||
console.log('lastItem-object', lastItem?.[valLookupKey])
|
||||
lastItemValue = lastItem?.[valLookupKey]
|
||||
lastItemUnit = lastItem?.[unitLookupKey]
|
||||
|
@ -29,16 +34,27 @@ export class DatasetLatestEntryPipe implements PipeTransform {
|
|||
}
|
||||
|
||||
lastItemValue = this.roundToDecimalPlaces(lastItemValue, round)
|
||||
if(lastItemUnit){
|
||||
if (lastItemUnit) {
|
||||
return lastItemValue + ' ' + lastItemUnit
|
||||
} else {
|
||||
return lastItemValue.toString()
|
||||
}
|
||||
}
|
||||
catch (e) {
|
||||
return '--'
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
roundToDecimalPlaces(value: string, decimalPlaces: number): string {
|
||||
if(!value) {
|
||||
return '--'
|
||||
}
|
||||
try{
|
||||
return parseFloat(value).toFixed(decimalPlaces).toString()
|
||||
} catch (e) {
|
||||
return '--'
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -22,7 +22,7 @@
|
|||
</div>
|
||||
<div>
|
||||
<label>{{chartDataset.label}}</label>
|
||||
<h4>3</h4>
|
||||
<h4>{{chartDataset | datasetLatestEntry: 0:'value' }}</h4>
|
||||
</div>
|
||||
</div>
|
||||
</div><!-- col -->
|
||||
|
|
|
@ -5,10 +5,11 @@ import {DashboardWidgetComponent} from '../dashboard-widget/dashboard-widget.com
|
|||
import {ChartConfiguration} from 'chart.js/dist/types';
|
||||
import {LoadingWidgetComponent} from '../loading-widget/loading-widget.component';
|
||||
import {EmptyWidgetComponent} from '../empty-widget/empty-widget.component';
|
||||
import {PipesModule} from '../../pipes/pipes.module';
|
||||
|
||||
@Component({
|
||||
standalone: true,
|
||||
imports: [NgChartsModule,CommonModule, LoadingWidgetComponent, EmptyWidgetComponent],
|
||||
imports: [NgChartsModule,CommonModule, LoadingWidgetComponent, EmptyWidgetComponent, PipesModule],
|
||||
selector: 'dual-gauges-widget',
|
||||
templateUrl: './dual-gauges-widget.component.html',
|
||||
styleUrls: ['./dual-gauges-widget.component.scss']
|
||||
|
|
Loading…
Reference in New Issue