fix CareEvolution (now configured as a Confidential client)
fixes fastenhealth/docs#10
This commit is contained in:
parent
2ba9f3493b
commit
581d008f09
|
@ -10,6 +10,7 @@ import (
|
||||||
"github.com/fastenhealth/fastenhealth-onprem/backend/pkg/hub/internal/fhir/athena"
|
"github.com/fastenhealth/fastenhealth-onprem/backend/pkg/hub/internal/fhir/athena"
|
||||||
"github.com/fastenhealth/fastenhealth-onprem/backend/pkg/hub/internal/fhir/base"
|
"github.com/fastenhealth/fastenhealth-onprem/backend/pkg/hub/internal/fhir/base"
|
||||||
"github.com/fastenhealth/fastenhealth-onprem/backend/pkg/hub/internal/fhir/bluebutton"
|
"github.com/fastenhealth/fastenhealth-onprem/backend/pkg/hub/internal/fhir/bluebutton"
|
||||||
|
"github.com/fastenhealth/fastenhealth-onprem/backend/pkg/hub/internal/fhir/careevolution"
|
||||||
"github.com/fastenhealth/fastenhealth-onprem/backend/pkg/hub/internal/fhir/cerner"
|
"github.com/fastenhealth/fastenhealth-onprem/backend/pkg/hub/internal/fhir/cerner"
|
||||||
"github.com/fastenhealth/fastenhealth-onprem/backend/pkg/hub/internal/fhir/cigna"
|
"github.com/fastenhealth/fastenhealth-onprem/backend/pkg/hub/internal/fhir/cigna"
|
||||||
"github.com/fastenhealth/fastenhealth-onprem/backend/pkg/hub/internal/fhir/epic"
|
"github.com/fastenhealth/fastenhealth-onprem/backend/pkg/hub/internal/fhir/epic"
|
||||||
|
@ -35,6 +36,8 @@ func NewClient(sourceType pkg.SourceType, ctx context.Context, appConfig config.
|
||||||
sourceClient, updatedSource, err = cigna.NewClient(ctx, appConfig, globalLogger, credentials, testHttpClient...)
|
sourceClient, updatedSource, err = cigna.NewClient(ctx, appConfig, globalLogger, credentials, testHttpClient...)
|
||||||
case pkg.SourceTypeBlueButtonMedicare:
|
case pkg.SourceTypeBlueButtonMedicare:
|
||||||
sourceClient, updatedSource, err = bluebutton.NewClient(ctx, appConfig, globalLogger, credentials, testHttpClient...)
|
sourceClient, updatedSource, err = bluebutton.NewClient(ctx, appConfig, globalLogger, credentials, testHttpClient...)
|
||||||
|
case pkg.SourceTypeCareEvolution:
|
||||||
|
sourceClient, updatedSource, err = careevolution.NewClient(ctx, appConfig, globalLogger, credentials, testHttpClient...)
|
||||||
case pkg.SourceTypeCerner:
|
case pkg.SourceTypeCerner:
|
||||||
sourceClient, updatedSource, err = cerner.NewClient(ctx, appConfig, globalLogger, credentials, testHttpClient...)
|
sourceClient, updatedSource, err = cerner.NewClient(ctx, appConfig, globalLogger, credentials, testHttpClient...)
|
||||||
case pkg.SourceTypeCigna:
|
case pkg.SourceTypeCigna:
|
||||||
|
|
|
@ -0,0 +1,22 @@
|
||||||
|
package careevolution
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"github.com/fastenhealth/fastenhealth-onprem/backend/pkg/config"
|
||||||
|
"github.com/fastenhealth/fastenhealth-onprem/backend/pkg/hub/internal/fhir/base"
|
||||||
|
"github.com/fastenhealth/fastenhealth-onprem/backend/pkg/models"
|
||||||
|
"github.com/sirupsen/logrus"
|
||||||
|
"net/http"
|
||||||
|
)
|
||||||
|
|
||||||
|
type CareEvolutionClient struct {
|
||||||
|
*base.FHIR401Client
|
||||||
|
}
|
||||||
|
|
||||||
|
func NewClient(ctx context.Context, appConfig config.Interface, globalLogger logrus.FieldLogger, source models.Source, testHttpClient ...*http.Client) (base.Client, *models.Source, error) {
|
||||||
|
baseClient, updatedSource, err := base.NewFHIR401Client(ctx, appConfig, globalLogger, source, testHttpClient...)
|
||||||
|
baseClient.Headers["Accept"] = "application/json+fhir"
|
||||||
|
return CareEvolutionClient{
|
||||||
|
baseClient,
|
||||||
|
}, updatedSource, err
|
||||||
|
}
|
|
@ -14,6 +14,8 @@ func GetMetadataSource(c *gin.Context) {
|
||||||
string(pkg.SourceTypeEpic): {Display: "Epic (Sandbox)", SourceType: pkg.SourceTypeEpic, Category: []string{"Sandbox"}, Supported: true},
|
string(pkg.SourceTypeEpic): {Display: "Epic (Sandbox)", SourceType: pkg.SourceTypeEpic, Category: []string{"Sandbox"}, Supported: true},
|
||||||
string(pkg.SourceTypeLogica): {Display: "Logica (Sandbox)", SourceType: pkg.SourceTypeLogica, Category: []string{"Sandbox"}, Supported: true},
|
string(pkg.SourceTypeLogica): {Display: "Logica (Sandbox)", SourceType: pkg.SourceTypeLogica, Category: []string{"Sandbox"}, Supported: true},
|
||||||
string(pkg.SourceTypeHealthIT): {Display: "HealthIT (Sandbox)", SourceType: pkg.SourceTypeHealthIT, Category: []string{"Sandbox"}, Supported: true},
|
string(pkg.SourceTypeHealthIT): {Display: "HealthIT (Sandbox)", SourceType: pkg.SourceTypeHealthIT, Category: []string{"Sandbox"}, Supported: true},
|
||||||
|
//fails with CORS error when swapping token. Must be a confidential client.
|
||||||
|
string(pkg.SourceTypeCareEvolution): {Display: "CareEvolution (Sandbox)", SourceType: pkg.SourceTypeCareEvolution, Category: []string{"Sandbox"}, Supported: false},
|
||||||
|
|
||||||
// enabled
|
// enabled
|
||||||
string(pkg.SourceTypeAetna): {Display: "Aetna", SourceType: pkg.SourceTypeAetna, Category: []string{"Insurance"}, Supported: true},
|
string(pkg.SourceTypeAetna): {Display: "Aetna", SourceType: pkg.SourceTypeAetna, Category: []string{"Insurance"}, Supported: true},
|
||||||
|
@ -23,9 +25,6 @@ func GetMetadataSource(c *gin.Context) {
|
||||||
//TODO: infinite pagination for Encounters??
|
//TODO: infinite pagination for Encounters??
|
||||||
string(pkg.SourceTypeCerner): {Display: "Cerner (Sandbox)", SourceType: pkg.SourceTypeCerner, Category: []string{"Sandbox"}, Supported: true},
|
string(pkg.SourceTypeCerner): {Display: "Cerner (Sandbox)", SourceType: pkg.SourceTypeCerner, Category: []string{"Sandbox"}, Supported: true},
|
||||||
|
|
||||||
//TODO: fails with CORS error when swapping token. Should be confidential client.
|
|
||||||
string(pkg.SourceTypeCareEvolution): {Display: "CareEvolution (Sandbox)", SourceType: pkg.SourceTypeCareEvolution, Category: []string{"Sandbox"}, Supported: false},
|
|
||||||
|
|
||||||
// pending
|
// pending
|
||||||
string(pkg.SourceTypeAnthem): {Display: "Anthem", SourceType: pkg.SourceTypeAnthem, Category: []string{"Insurance"}},
|
string(pkg.SourceTypeAnthem): {Display: "Anthem", SourceType: pkg.SourceTypeAnthem, Category: []string{"Insurance"}},
|
||||||
string(pkg.SourceTypeCedarSinai): {Display: "Cedar Sinai", SourceType: pkg.SourceTypeCedarSinai, Category: []string{"Hospital"}},
|
string(pkg.SourceTypeCedarSinai): {Display: "Cedar Sinai", SourceType: pkg.SourceTypeCedarSinai, Category: []string{"Hospital"}},
|
||||||
|
|
|
@ -28,7 +28,7 @@ export class AppComponent implements OnInit {
|
||||||
}
|
}
|
||||||
|
|
||||||
modifyHeader(location) {
|
modifyHeader(location) {
|
||||||
if(location.url.startsWith('/auth'))
|
if(location.url?.startsWith('/auth'))
|
||||||
{
|
{
|
||||||
this.showHeader = false;
|
this.showHeader = false;
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -1,5 +1,6 @@
|
||||||
<div class="az-content">
|
<div class="az-content">
|
||||||
<div *ngIf="resourceTypeCounts" class="container">
|
|
||||||
|
<div class="container">
|
||||||
<div class="az-content-left">
|
<div class="az-content-left">
|
||||||
<ul class="list-group">
|
<ul class="list-group">
|
||||||
<li *ngFor="let resourceGroup of resourceTypeCounts | keyvalue" (click)="selectResourceType(resourceGroup.key)" class="list-group-item d-flex justify-content-between align-items-center">
|
<li *ngFor="let resourceGroup of resourceTypeCounts | keyvalue" (click)="selectResourceType(resourceGroup.key)" class="list-group-item d-flex justify-content-between align-items-center">
|
||||||
|
@ -19,14 +20,15 @@
|
||||||
</div><!-- az-content-body -->
|
</div><!-- az-content-body -->
|
||||||
</div><!-- container -->
|
</div><!-- container -->
|
||||||
|
|
||||||
<div class="container">
|
<ng-template #empty >
|
||||||
<div class="az-error-wrapper">
|
<div class="container">
|
||||||
<h1>{{selectedSource.source_type}}</h1>
|
<div class="az-error-wrapper">
|
||||||
<h2>No resources found for this Healthcare provider</h2>
|
<h1>{{selectedSource.source_type}}</h1>
|
||||||
<h6>You may need to re-authenticate to this source, or wait for the resources to sync.</h6>
|
<h2>No resources found for this Healthcare provider</h2>
|
||||||
<a routerLink="/sources" class="btn btn-outline-indigo">Sources</a>
|
<h6>You may need to re-authenticate to this source, or wait for the resources to sync.</h6>
|
||||||
|
<a routerLink="/sources" class="btn btn-outline-indigo">Sources</a>
|
||||||
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
</ng-template>
|
||||||
</div>
|
|
||||||
|
|
||||||
</div><!-- az-content -->
|
</div><!-- az-content -->
|
||||||
|
|
Loading…
Reference in New Issue