diff --git a/.github/workflows/swagger-json.yml b/.github/workflows/swagger-json.yml
new file mode 100644
index 0000000..d140252
--- /dev/null
+++ b/.github/workflows/swagger-json.yml
@@ -0,0 +1,107 @@
+name: Sync Swagger to AMRIT-Docs
+
+on:
+ push:
+ branches: [ main ]
+ workflow_dispatch:
+
+jobs:
+ swagger-sync:
+ runs-on: ubuntu-latest
+ timeout-minutes: 20
+
+ steps:
+ - name: Checkout API repo
+ uses: actions/checkout@v4
+
+ - name: Set up Java 17
+ uses: actions/setup-java@v4
+ with:
+ distribution: temurin
+ java-version: 17
+ cache: maven
+
+ - name: Build API (skip tests)
+ run: mvn -B clean package -DskipTests
+
+ - name: Install jq
+ run: sudo apt-get update && sudo apt-get install -y jq
+
+ - name: Run API in swagger profile
+ run: |
+ nohup java -jar target/fhir-api-*.war \
+ --spring.profiles.active=swagger \
+ --server.port=9090 \
+ > app.log 2>&1 &
+ echo $! > api_pid.txt
+
+ - name: Wait for API & fetch Swagger
+ run: |
+ for i in {1..40}; do
+ CODE=$(curl --connect-timeout 2 --max-time 5 -s -o swagger_raw.json -w "%{http_code}" http://localhost:9090/v3/api-docs || true)
+
+ if [ "$CODE" = "200" ]; then
+ jq . swagger_raw.json > fhir-api.json || {
+ echo "Swagger JSON invalid"
+ cat swagger_raw.json
+ exit 1
+ }
+
+ if [ "$(jq '.paths | length' fhir-api.json)" -eq 0 ]; then
+ echo "Swagger paths empty – failing"
+ exit 1
+ fi
+
+ echo "Swagger generated successfully"
+ exit 0
+ fi
+
+ echo "Waiting for API... ($i)"
+ sleep 4
+ done
+
+ echo "Swagger not generated"
+ cat app.log || true
+ exit 1
+
+ - name: Stop API
+ if: always()
+ run: |
+ # Graceful shutdown of the process group
+ sleep 5
+ # Force kill the process group if still running
+ if [ -f api_pid.txt ]; then
+ PID=$(cat api_pid.txt)
+ kill -TERM -- -"$PID" 2>/dev/null || true
+ sleep 2
+ kill -9 -- -"$PID" 2>/dev/null || true
+ fi
+ # Fallback: kill any remaining java process on port 9090
+ fuser -k 9090/tcp 2>/dev/null || true
+
+ - name: Checkout AMRIT-Docs
+ uses: actions/checkout@v4
+ with:
+ repository: PSMRI/AMRIT-Docs
+ token: ${{ secrets.DOCS_REPO_TOKEN }}
+ path: amrit-docs
+ fetch-depth: 0
+
+ - name: Copy Swagger JSON
+ run: |
+ mkdir -p amrit-docs/docs/swagger
+ cp fhir-api.json amrit-docs/docs/swagger/fhir-api.json
+
+ - name: Create Pull Request
+ uses: peter-evans/create-pull-request@v8
+ with:
+ token: ${{ secrets.DOCS_REPO_TOKEN }}
+ path: amrit-docs
+ branch: auto/swagger-update-${{ github.run_id }}-${{ github.run_attempt }}
+ base: main
+ commit-message: "chore(docs): auto-update FHIR-API swagger"
+ title: "chore(docs): auto-update FHIR-API swagger"
+ delete-branch: true
+ body: |
+ This PR automatically updates FHIR-API Swagger JSON
+ from the latest main branch build.
diff --git a/README.md b/README.md
index a6836c0..a52fdd3 100644
--- a/README.md
+++ b/README.md
@@ -1,5 +1,7 @@
# AMRIT - FHIR Service
[](https://www.gnu.org/licenses/gpl-3.0) 
+[](https://deepwiki.com/PSMRI/FHIR-API)
+
FHIR (Fast Healthcare Interoperability Resources) standard defines how healthcare information can be exchanged between different computer systems regardless of how it is stored in those systems. FHIR provides a means for representing and sharing information among clinicians and organizations in a standard way regardless of the ways local EHRs represent or store the data. FHIR combines the best features of previous standards into a common specification, while being flexible enough to meet needs of a wide variety of use cases within the healthcare ecosystem. Resources are the basis for all exchangeable FHIR content. Each resource includes a standard definition and human-readable descriptions about how to use the resource. Each resource also has a set of common and resource-specific metadata (attributes) to allow its use clearly and unambiguously. FHIR Resources can store and/or exchange many types of clinical and administrative data.
diff --git a/pom.xml b/pom.xml
index f9aea27..0479b05 100644
--- a/pom.xml
+++ b/pom.xml
@@ -268,6 +268,11 @@
0.12.6
runtime
+
+ com.h2database
+ h2
+ runtime
+
diff --git a/src/main/resources/application-swagger.properties b/src/main/resources/application-swagger.properties
new file mode 100644
index 0000000..ce50e62
--- /dev/null
+++ b/src/main/resources/application-swagger.properties
@@ -0,0 +1,133 @@
+ndhmCreateHealthID=placeholder
+# --- Swagger Profile Dummy Properties ---
+# Database
+spring.datasource.url=jdbc:h2:mem:swaggerdb
+spring.datasource.username=SA
+spring.datasource.password=
+spring.datasource.driver-class-name=org.h2.Driver
+spring.jpa.database-platform=org.hibernate.dialect.H2Dialect
+spring.jpa.hibernate.ddl-auto=none
+spring.jpa.show-sql=false
+spring.jpa.properties.hibernate.format_sql=false
+
+# Redis
+spring.redis.host=localhost
+spring.redis.port=6379
+spring.redis.password=
+
+# MongoDB (dummy connection string for CI/CD)
+spring.data.mongodb.uri=mongodb://dummyuser:dummypassword@localhost:27017/test?authSource=admin
+
+# Quartz Scheduler
+spring.quartz.job-store-type=memory
+
+# Dummy external API endpoints and keys
+feedAuthUserName=placeholder
+feedAuthPassword=placeholder
+parentUrl=placeholder
+atomFeedURLPatientDemographic=placeholder
+abdmFacilityId=placeholder
+generateOTPForCareContext=placeholder
+validateOTPForCareContext=placeholder
+addCareContext=placeholder
+getAbdmFacilityServicies=placeholder
+x-CM-ID=placeholder
+abdmV3UserAuthenticate=placeholder
+generateOTP_ForCard=placeholder
+verifyOTP_ForCard=placeholder
+verifyOTP_ForCard_Aadhaar=placeholder
+generateHealthCard=placeholder
+generateHealthIDCard=placeholder
+ndhmGenerateOTPWithAadhaar=placeholder
+abdmGenerateMobileOTP=placeholder
+abdmConfirmAadhaarBio=placeholder
+ndhmGenerateOTP=placeholder
+ndhmVerifyOTP=placeholder
+abdmcreateHealthIdWithPreVerified=placeholder
+abdmVerifyOTP=placeholder
+abdmCheckAndGenerateMobileOTP=placeholder
+abdmVerifyMobileOTP=placeholder
+abdmVerifyBio=placeholder
+
+# Other likely required placeholders (add more as needed)
+server.port=8080
+logging.level.root=INFO
+logging.level.org.springframework=INFO
+management.endpoints.web.exposure.include=health,info
+management.server.address=127.0.0.1
+management.server.port=8081
+
+abdmVerifyBio=placeholder
+abdmVerifyMobileOTP=placeholder
+abdmCheckAndGenerateMobileOTP=placeholder
+abdmVerifyOTP=placeholder
+abdmcreateHealthIdWithPreVerified=placeholder
+ndhmGenerateOTPWithAadhaar=placeholder
+generateHealthIDCard=placeholder
+generateHealthCard=placeholder
+verifyOTP_ForCard_Aadhaar=placeholder
+verifyOTP_ForCard=placeholder
+generateOTP_ForCard=placeholder
+abdmV3UserAuthenticate=placeholder
+x-CM-ID=placeholder
+spring.datasource.url=jdbc:h2:mem:swaggerdb
+spring.datasource.driver-class-name=org.h2.Driver
+spring.datasource.username=sa
+spring.datasource.password=
+spring.jpa.database-platform=org.hibernate.dialect.H2Dialect
+spring.jpa.hibernate.ddl-auto=none
+
+# Disable Redis if not needed for docs (optional)
+spring.redis.host=localhost
+spring.redis.port=6379
+
+cors.allowed-origins=http://localhost:8080
+logging.level.root=INFO
+jwt.secret=sample-jwt-secret
+eaushadhiStoreStockDetailsUrl=http://test-eaushadhi-details-url
+eaushadhiStoreStockAckUrl=http://test-eaushadhi-ack-url
+eAushadhiDummy=sample-eaushadhi
+benSearchByBenIDURL=http://test-ben-search-url
+userAuthURL=http://test-user-auth-url
+fhirUserName=sample-fhir-username
+fhirPassword=sample-fhir-password
+abhaMode=sample-abha-mode
+clientID=sample-client-id
+clientSecret=sample-client-secret
+ndhmuserAuthenticate=sample-ndhm-auth
+generateABDM_NotifySMS=sample-abdm-notify-sms
+atomsFeedStartPage=1
+feedAuthUserName=sample-feed-auth-username
+feedAuthPassword=sample-feed-auth-password
+parentUrl=http://test-parent-url-for-swagger
+atomFeedURLPatientDemographic=http://test-patient-demographic-url-for-swagger
+abdmFacilityId=sample-facility-id-for-swagger
+generateOTPForCareContext=sample-generate-otp-for-care-context
+validateOTPForCareContext=sample-validate-otp-for-care-context
+addCareContext=sample-add-care-context
+getAbdmFacilityServicies=sample-get-abdm-facility-services
+atomFeedURLPatientEncounter=http://test-atom-feed-patient-encounter
+atomFeedURLPatientClinical=http://test-atom-feed-patient-clinical
+webLoginAbhaRequestOtp=sample-web-login-abha-request-otp
+webLoginAbhaVerify=sample-web-login-abha-verify
+verifyAbhaLogin=sample-verify-abha-login
+abhaLoginRequestOtp=sample-abha-login-request-otp
+abhaProfileLoginVerifyUser=sample-abha-profile-login-verify-user
+webLoginPhrCard=sample-web-login-phr-card
+requestOtpForEnrollment=sample-request-otp-for-enrollment
+requestAuthByAbdm=sample-request-auth-by-abdm
+abhaEnrollByAadhaar=sample-abha-enroll-by-aadhaar
+printAbhaCard=sample-print-abha-card
+getAuthCertPublicKey=sample-auth-cert-public-key
+eAushadhiDispensePageSize=10
+patient-search-page-size=10
+nhm.agent.real.time.data.url=sample-nhm-agent-url
+everwellCalendarDuration=10
+callRetryConfiguration=3
+sms-username=sample-sms-username
+sms-password=sample-sms-password
+sms-entityid=sample-sms-entityid
+sms-consent-source-address=sample-sms-consent-source-address
+send-message-url=sample-send-message-url
+calibrationPageSize=10
+iemr.session.expiry.time.sec=3600
\ No newline at end of file