mastering bridging
This commit is contained in:
+146
@@ -0,0 +1,146 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"log"
|
||||
"net/http"
|
||||
"os"
|
||||
"satusehat-rssa/internal/config"
|
||||
"satusehat-rssa/internal/handler"
|
||||
"satusehat-rssa/internal/integration"
|
||||
"satusehat-rssa/internal/midleware"
|
||||
"satusehat-rssa/internal/routes"
|
||||
|
||||
"github.com/gin-gonic/gin"
|
||||
"github.com/joho/godotenv"
|
||||
)
|
||||
|
||||
func main() {
|
||||
var err error
|
||||
|
||||
// load environment
|
||||
if err := godotenv.Load(); err != nil {
|
||||
log.Println("No .env file found or error loading it")
|
||||
}
|
||||
|
||||
// init gin engine
|
||||
e := gin.Default()
|
||||
|
||||
err = e.SetTrustedProxies(nil)
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
|
||||
// cors middleware
|
||||
e.Use(func(c *gin.Context) {
|
||||
c.Writer.Header().Set("Access-Control-Allow-Origin", "*")
|
||||
c.Writer.Header().Set("Access-Control-Allow-Methods", "GET, POST, PUT, DELETE, OPTIONS, PATCH")
|
||||
c.Writer.Header().Set("Access-Control-Allow-Headers", "Origin, Content-Type, Accept, Authorization")
|
||||
|
||||
// log to ensure the middleware is being executed
|
||||
c.Writer.Header().Set("Access-Control-Expose-Headers", "Access-Control-Allow-Origin, Access-Control-Allow-Methods, Access-Control-Allow-Headers, Content-Disposition")
|
||||
if c.Request.Method == "OPTIONS" {
|
||||
c.Writer.Header().Set("Access-Control-Max-Age", "86400")
|
||||
c.AbortWithStatus(http.StatusOK)
|
||||
return
|
||||
}
|
||||
|
||||
c.Next()
|
||||
})
|
||||
|
||||
// health check
|
||||
e.GET("/health", func(c *gin.Context) {
|
||||
c.JSON(200, gin.H{
|
||||
"message": "ok",
|
||||
})
|
||||
})
|
||||
|
||||
// route for handling 404
|
||||
e.NoRoute(func(c *gin.Context) {
|
||||
c.JSON(http.StatusNotFound, gin.H{"message": "Hello in API Satu Sehat Integration"})
|
||||
})
|
||||
|
||||
//Load Akses
|
||||
akses := config.LoadConfig()
|
||||
authMiddleware := midleware.AuthMiddleware{}
|
||||
|
||||
oa := integration.NewOauthRequestRepo(akses)
|
||||
at := integration.NewAllergancyToleranRepo(akses)
|
||||
cp := integration.NewCarePlanRepo(akses)
|
||||
qr := integration.NewQuestionnaireResponseRepo(akses)
|
||||
ms := integration.NewMedicationStatementRepo(akses)
|
||||
im := integration.NewImmunizationRepo(akses)
|
||||
is := integration.NewImagingStudyRepo(akses)
|
||||
mr := integration.NewMedicationRequestRepo(akses)
|
||||
md := integration.NewMedicationDispenseRepo(akses)
|
||||
gl := integration.NewGoalRepo(akses)
|
||||
medic := integration.NewMedicineKfaRepo(akses)
|
||||
patient := integration.NewPatientRepo(akses)
|
||||
practioner := integration.NewPracticionerRepo(akses)
|
||||
encounter := integration.NewEncounterRepo(akses)
|
||||
clinicalImpression := integration.NewClinicalImpressionRepo(akses)
|
||||
observation := integration.NewObservationRepo(akses)
|
||||
organization := integration.NewOrganizationRepo(akses)
|
||||
condition := integration.NewConditionRepo(akses)
|
||||
dianosisReport := integration.NewDiagnosisReportRepo(akses)
|
||||
serviceRequest := integration.NewServiceRequestRepository(akses)
|
||||
specimen := integration.NewSpecimenRepository(akses)
|
||||
episodeOfCare := integration.NewEpisodeOfCareRepo(akses)
|
||||
procedure := integration.NewProcedureRepo(akses)
|
||||
composition := integration.NewCompositionRepo(akses)
|
||||
|
||||
oahandler := handler.NewOuathHandler(oa)
|
||||
athandler := handler.NewAllergancyToleranHandler(at)
|
||||
cphandler := handler.NewCarePlanHandler(cp)
|
||||
qrhandler := handler.NewQuestionnaireResponseHandler(qr)
|
||||
mshandler := handler.NewMedicationStatementHandler(ms)
|
||||
imhandler := handler.NewImmunizationHandler(im)
|
||||
ishandler := handler.NewImagingStudyHandler(is)
|
||||
mrhandler := handler.NewMedicationRequestHandler(mr)
|
||||
mdhandler := handler.NewMedicationDispenseHandler(md)
|
||||
glhandler := handler.NewGoalHandler(gl)
|
||||
medicineHandler := handler.NewMedicineHandler(medic)
|
||||
patientHandler := handler.NewPatientHandler(patient)
|
||||
practicionerHandler := handler.NewPracticionerHandler(practioner)
|
||||
encounterHandler := handler.NewEncounterHandler(encounter)
|
||||
clinicalImpressionHandler := handler.NewClinicalImpressionHandler(clinicalImpression)
|
||||
observationHandler := handler.NewObservationHandler(observation)
|
||||
organizationHandler := handler.NewOrganizationHandler(organization)
|
||||
conditionHandler := handler.NewConditionHandler(condition)
|
||||
diagnosisReportHandler := handler.NewDiagnosisReportHandler(dianosisReport)
|
||||
serviceRequestHandler := handler.NewServiceRequestHandler(serviceRequest)
|
||||
specimenHandler := handler.NewSpecimenHandler(specimen)
|
||||
episodeOfCareHandler := handler.NewEpisodeOfCareHandler(episodeOfCare)
|
||||
procedureHandler := handler.NewProcedureHandler(procedure)
|
||||
compositionHandler := handler.NewCompositionHandler(composition)
|
||||
|
||||
routes.Oauth(e, oahandler, authMiddleware)
|
||||
routes.AllergancyToleran(e, athandler, authMiddleware)
|
||||
routes.CarePlan(e, cphandler, authMiddleware)
|
||||
routes.QuestionnaireResponse(e, qrhandler, authMiddleware)
|
||||
routes.MedicationStatement(e, mshandler, authMiddleware)
|
||||
routes.Immunization(e, imhandler, authMiddleware)
|
||||
routes.ImagingStudy(e, ishandler, authMiddleware)
|
||||
routes.MedicationRequest(e, mrhandler, authMiddleware)
|
||||
routes.MedicationDispense(e, mdhandler, authMiddleware)
|
||||
routes.Goal(e, glhandler, authMiddleware)
|
||||
routes.MedicineKfa(e, medicineHandler, authMiddleware)
|
||||
routes.Patient(e, patientHandler, authMiddleware)
|
||||
routes.Practicioner(e, practicionerHandler, authMiddleware)
|
||||
routes.Encounter(e, encounterHandler, authMiddleware)
|
||||
routes.ClinicalImpression(e, clinicalImpressionHandler, authMiddleware)
|
||||
routes.Observation(e, observationHandler, authMiddleware)
|
||||
routes.Organization(e, organizationHandler, authMiddleware)
|
||||
routes.Condition(e, conditionHandler, authMiddleware)
|
||||
routes.DiagnosisReport(e, diagnosisReportHandler, authMiddleware)
|
||||
routes.ServiceRequest(e, serviceRequestHandler, authMiddleware)
|
||||
routes.Specimen(e, specimenHandler, authMiddleware)
|
||||
routes.EpisodeOfCare(e, episodeOfCareHandler, authMiddleware)
|
||||
routes.Procedure(e, procedureHandler, authMiddleware)
|
||||
routes.Composition(e, compositionHandler, authMiddleware)
|
||||
|
||||
port := fmt.Sprintf(":%s", os.Getenv("HTTP_PORT"))
|
||||
if err = e.Run(port); err != nil {
|
||||
panic(err)
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user