diff --git a/endpointmanager/pkg/chplendpointquerier/chplendpointquerier.go b/endpointmanager/pkg/chplendpointquerier/chplendpointquerier.go index bc9f55278..d5b2ef3c9 100644 --- a/endpointmanager/pkg/chplendpointquerier/chplendpointquerier.go +++ b/endpointmanager/pkg/chplendpointquerier/chplendpointquerier.go @@ -194,6 +194,7 @@ var nextgenPracticeURL = "https://www.nextgen.com/api/practice-search" var aspmdURL = "https://fhirapi.asp.md:3030/aspmd/fhirserver/fhir_aspmd.asp" var axeiumURL = "https://apifhir.axeium.net:8443/reference-server/" var curemdURL = "https://www.curemd.com/developer/base-fhir-urls/" +var emdscloudURL = "https://identity.emdscloud.com/api/api-resource/fhir" var betaAfoundriaURL = "https://beta.afoundria.com/api/fhir/urls" var ehealthlineURL = "http://ehealthline.com/dev/pdf/FHIR%20API%20Endpoints.htm" @@ -569,6 +570,8 @@ func QueryCHPLEndpointList(chplURL string, fileToWriteTo string) { BundleQuerierParser(chplURL, fileToWriteTo) } else if URLsEqual(chplURL, curemdURL) { CuremdWebscraper(curemdURL, fileToWriteTo) + } else if URLsEqual(emdscloudURL, chplURL) { + EmdsCloudWebscraper(emdscloudURL, fileToWriteTo) } else if URLsEqual(chplURL, betaAfoundriaURL) { BetaAfoundriaWebScraper(chplURL, fileToWriteTo) } else if URLsEqual(chplURL, ontadaURL) { diff --git a/endpointmanager/pkg/chplendpointquerier/emdscloudwebscraper.go b/endpointmanager/pkg/chplendpointquerier/emdscloudwebscraper.go new file mode 100644 index 000000000..590a24850 --- /dev/null +++ b/endpointmanager/pkg/chplendpointquerier/emdscloudwebscraper.go @@ -0,0 +1,56 @@ +package chplendpointquerier + +import ( + "encoding/json" + "io" + "net/http" + + log "github.com/sirupsen/logrus" +) + +func EmdsCloudWebscraper(CHPLURL string, fileToWriteTo string) { + var entry LanternEntry + var lanternEntryList []LanternEntry + var endpointEntryList EndpointList + + client := &http.Client{} + req, err := http.NewRequest("GET", CHPLURL, nil) + if err != nil { + log.Fatalf("Error creating HTTP request: %v", err) + return + } + + req.Header.Set("User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36") + + res, err := client.Do(req) + if err != nil { + log.Fatalf("Error making HTTP request: %v", err) + return + } + defer res.Body.Close() + + body, err := io.ReadAll(res.Body) + if err != nil { + log.Fatalf("Error reading response body: %v", err) + return + } + + var resources []map[string]interface{} + if err := json.Unmarshal(body, &resources); err != nil { + log.Fatalf("Error parsing JSON: %v", err) + return + } + + for _, resource := range resources { + if url, ok := resource["ResourceUrl"].(string); ok { + entry.URL = url + lanternEntryList = append(lanternEntryList, entry) + } + } + endpointEntryList.Endpoints = lanternEntryList + + err = WriteCHPLFile(endpointEntryList, fileToWriteTo) + if err != nil { + log.Fatalf("Error writing to file: %v", err) + } +}