# Satu Sehat FHIR Services Configuration global: module_name: "api-service" output_dir: "internal/handlers" enable_swagger: true enable_logging: true enable_metrics: true enable_auth: true base_url: "https://api-satusehat-stg.dto.kemkes.go.id/fhir-r4/v1" version: "1.0.0" environment: "staging" fhir_version: "FHIR R4" profile_url: "https://fhir.kemkes.go.id/r4/StructureDefinition" services: patient: name: "Patient" category: "fhir/patient" package: "patient" description: "FHIR Patient resource management for Satu Sehat ecosystem" base_url: "https://api-satusehat-stg.dto.kemkes.go.id/fhir-r4/v1" timeout: 30 retry_count: 3 fhir_resource: "Patient" validation: enable_fhir_validation: true required_fields: ["resourceType", "identifier"] custom_validators: ["validateNIK", "validateKTP"] authentication: type: "oauth2" token_url: "https://api-satusehat-stg.dto.kemkes.go.id/oauth2/v1/accesstoken" scopes: ["patient.read", "patient.write"] endpoints: patient: basic: methods: ["GET", "POST", "PUT", "PATCH", "DELETE", "SEARCH"] get_path: "/:id" post_path: "" put_path: "/:id" patch_path: "/:id" delete_path: "/:id" search_path: "" model: "PatientCreateRequest" response_model: "PatientResponse" description: "Manage FHIR Patient resources" summary: "Patient Resource Management" tags: ["Patient", "FHIR"] require_auth: true cache_enabled: true cache_ttl: 300 fhir_profiles: ["https://fhir.kemkes.go.id/r4/StructureDefinition/Patient"] search_params: ["identifier", "name", "gender", "birthdate", "address"] organization: name: "Organization" category: "fhir/organization" package: "organization" description: "FHIR Organization resource management for Satu Sehat ecosystem" base_url: "https://api-satusehat-stg.dto.kemkes.go.id/fhir-r4/v1" timeout: 30 retry_count: 3 fhir_resource: "Organization" validation: enable_fhir_validation: true required_fields: ["resourceType", "name"] authentication: type: "oauth2" token_url: "https://api-satusehat-stg.dto.kemkes.go.id/oauth2/v1/accesstoken" scopes: ["organization.read", "organization.write"] endpoints: organization: basic: methods: ["GET", "POST", "PUT", "PATCH", "DELETE", "SEARCH"] get_path: "/:id" post_path: "" put_path: "/:id" patch_path: "/:id" delete_path: "/:id" search_path: "" model: "OrganizationCreateRequest" response_model: "OrganizationResponse" description: "Manage FHIR Organization resources" summary: "Organization Resource Management" tags: ["Organization", "FHIR"] require_auth: true cache_enabled: true cache_ttl: 600 fhir_profiles: ["https://fhir.kemkes.go.id/r4/StructureDefinition/Organization"] search_params: ["identifier", "name", "type", "address"] practitioner: name: "Practitioner" category: "fhir/practitioner" package: "practitioner" description: "FHIR Practitioner resource management for Satu Sehat ecosystem" base_url: "https://api-satusehat-stg.dto.kemkes.go.id/fhir-r4/v1" timeout: 30 retry_count: 3 fhir_resource: "Practitioner" validation: enable_fhir_validation: true required_fields: ["resourceType", "name"] authentication: type: "oauth2" token_url: "https://api-satusehat-stg.dto.kemkes.go.id/oauth2/v1/accesstoken" scopes: ["practitioner.read", "practitioner.write"] endpoints: practitioner: basic: methods: ["GET", "POST", "PUT", "PATCH", "DELETE", "SEARCH"] get_path: "/:id" post_path: "" put_path: "/:id" patch_path: "/:id" delete_path: "/:id" search_path: "" model: "PractitionerCreateRequest" response_model: "PractitionerResponse" description: "Manage FHIR Practitioner resources" summary: "Practitioner Resource Management" tags: ["Practitioner", "FHIR"] require_auth: true cache_enabled: true cache_ttl: 600 fhir_profiles: ["https://fhir.kemkes.go.id/r4/StructureDefinition/Practitioner"] search_params: ["identifier", "name", "qualification"] encounter: name: "Encounter" category: "fhir/encounter" package: "encounter" description: "FHIR Encounter resource management for Satu Sehat ecosystem" base_url: "https://api-satusehat-stg.dto.kemkes.go.id/fhir-r4/v1" timeout: 45 retry_count: 3 fhir_resource: "Encounter" validation: enable_fhir_validation: true required_fields: ["resourceType", "status", "subject"] authentication: type: "oauth2" token_url: "https://api-satusehat-stg.dto.kemkes.go.id/oauth2/v1/accesstoken" scopes: ["encounter.read", "encounter.write"] endpoints: encounter: basic: methods: ["GET", "POST", "PUT", "PATCH", "DELETE", "SEARCH"] get_path: "/:id" post_path: "" put_path: "/:id" patch_path: "/:id" delete_path: "/:id" search_path: "" model: "EncounterCreateRequest" response_model: "EncounterResponse" description: "Manage FHIR Encounter resources" summary: "Encounter Resource Management" tags: ["Encounter", "FHIR"] require_auth: true cache_enabled: false fhir_profiles: ["https://fhir.kemkes.go.id/r4/StructureDefinition/Encounter"] search_params: ["patient", "subject", "status", "date", "practitioner"] observation: name: "Observation" category: "fhir/observation" package: "observation" description: "FHIR Observation resource management for Satu Sehat ecosystem" base_url: "https://api-satusehat-stg.dto.kemkes.go.id/fhir-r4/v1" timeout: 30 retry_count: 3 fhir_resource: "Observation" validation: enable_fhir_validation: true required_fields: ["resourceType", "status", "code", "subject"] authentication: type: "oauth2" token_url: "https://api-satusehat-stg.dto.kemkes.go.id/oauth2/v1/accesstoken" scopes: ["observation.read", "observation.write"] endpoints: observation: basic: methods: ["GET", "POST", "PUT", "PATCH", "DELETE", "SEARCH"] get_path: "/:id" post_path: "" put_path: "/:id" patch_path: "/:id" delete_path: "/:id" search_path: "" model: "ObservationCreateRequest" response_model: "ObservationResponse" description: "Manage FHIR Observation resources" summary: "Observation Resource Management" tags: ["Observation", "FHIR"] require_auth: true cache_enabled: true cache_ttl: 180 fhir_profiles: ["https://fhir.kemkes.go.id/r4/StructureDefinition/Observation"] search_params: ["patient", "subject", "code", "date", "category"]