{
  "schemaVersion": "1.0",
  "item": {
    "slug": "fhir-questionnaire",
    "name": "FHIR Questionnaire Designer",
    "source": "tencent",
    "type": "skill",
    "category": "效率提升",
    "sourceUrl": "https://clawhub.ai/elmariachi111/fhir-questionnaire",
    "canonicalUrl": "https://clawhub.ai/elmariachi111/fhir-questionnaire",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadMode": "redirect",
    "downloadUrl": "/downloads/fhir-questionnaire",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=fhir-questionnaire",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "installMethod": "Manual import",
    "extraction": "Extract archive",
    "prerequisites": [
      "OpenClaw"
    ],
    "packageFormat": "ZIP package",
    "includedAssets": [
      "REFERENCE.md",
      "SKILL.md",
      "assets/templates/CodeSystem-example.json",
      "assets/templates/ValueSet-example.json",
      "assets/templates/advanced.json",
      "assets/templates/basic.json"
    ],
    "primaryDoc": "SKILL.md",
    "quickSetup": [
      "Download the package from Yavira.",
      "Extract the archive and review SKILL.md first.",
      "Import or place the package into your OpenClaw setup."
    ],
    "agentAssist": {
      "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
      "steps": [
        "Download the package from Yavira.",
        "Extract it into a folder your agent can access.",
        "Paste one of the prompts below and point your agent at the extracted folder."
      ],
      "prompts": [
        {
          "label": "New install",
          "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
        },
        {
          "label": "Upgrade existing",
          "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
        }
      ]
    },
    "sourceHealth": {
      "source": "tencent",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-04-23T16:43:11.935Z",
      "expiresAt": "2026-04-30T16:43:11.935Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=4claw-imageboard",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=4claw-imageboard",
        "contentDisposition": "attachment; filename=\"4claw-imageboard-1.0.1.zip\"",
        "redirectLocation": null,
        "bodySnippet": null
      },
      "scope": "source",
      "summary": "Source download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this source.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/fhir-questionnaire"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    },
    "downloadPageUrl": "https://openagent3.xyz/downloads/fhir-questionnaire",
    "agentPageUrl": "https://openagent3.xyz/skills/fhir-questionnaire/agent",
    "manifestUrl": "https://openagent3.xyz/skills/fhir-questionnaire/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/fhir-questionnaire/agent.md"
  },
  "agentAssist": {
    "summary": "Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.",
    "steps": [
      "Download the package from Yavira.",
      "Extract it into a folder your agent can access.",
      "Paste one of the prompts below and point your agent at the extracted folder."
    ],
    "prompts": [
      {
        "label": "New install",
        "body": "I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete."
      },
      {
        "label": "Upgrade existing",
        "body": "I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run."
      }
    ]
  },
  "documentation": {
    "source": "clawhub",
    "primaryDoc": "SKILL.md",
    "sections": [
      {
        "title": "⚠️ CRITICAL RULES - READ FIRST",
        "body": "NEVER suggest LOINC or SNOMED CT codes from memory or training data. ALWAYS use the search and query scripts in this skill.\n\nWhen any clinical code is needed:\n\nFor clinical questions/observations: ALWAYS run python scripts/search_loinc.py \"search term\" FIRST\nFor clinical concepts/conditions: ALWAYS run python scripts/search_snomed.py \"search term\" FIRST\nONLY use codes returned by the scripts\nIf search fails or returns no results, DO NOT make up codes\n\nClinical codes from AI memory are highly unreliable and will cause incorrect clinical coding."
      },
      {
        "title": "Network Access Requirements",
        "body": "Requires whitelisted network access:\n\nclinicaltables.nlm.nih.gov (LOINC search)\ntx.fhir.org (FHIR terminology server for LOINC answer lists and SNOMED CT search)\n\nIf network access fails, STOP. Do not suggest codes."
      },
      {
        "title": "1. Search LOINC Codes",
        "body": "ALWAYS run this before suggesting any LOINC code (clinical questions/observations):\n\npython scripts/search_loinc.py \"depression screening\"\npython scripts/search_loinc.py \"blood pressure\" --format fhir"
      },
      {
        "title": "2. Search SNOMED CT Codes",
        "body": "ALWAYS run this before suggesting any SNOMED CT code (clinical concepts/conditions):\n\npython scripts/search_snomed.py \"diabetes\"\npython scripts/search_snomed.py \"hypertension\" --format fhir\npython scripts/search_snomed.py \"diabetes mellitus\" --semantic-tag \"disorder\"\n\nNote: The --semantic-tag filter works best when the semantic tag appears in the display name (e.g., \"Diabetes mellitus (disorder)\")."
      },
      {
        "title": "3. Find Answer Options",
        "body": "For questions with standardized answers:\n\npython scripts/query_valueset.py --loinc-code \"72166-2\"\npython scripts/query_valueset.py --loinc-code \"72166-2\" --format fhir"
      },
      {
        "title": "4. Validate Questionnaire",
        "body": "Before finalizing:\n\npython scripts/validate_questionnaire.py questionnaire.json"
      },
      {
        "title": "Templates",
        "body": "Start with assets/templates/:\n\nminimal.json - Bare bones structure\nbasic.json - Simple questionnaire\nadvanced.json - Complex with conditional logic"
      },
      {
        "title": "Standardized Clinical Instruments (PHQ-9, GAD-7, etc.)",
        "body": "# Step 1: Find panel code (NEVER skip this)\npython scripts/search_loinc.py \"PHQ-9 panel\"\n\n# Step 2: Find answer options\npython scripts/query_valueset.py --loinc-code \"FOUND-CODE\" --format fhir\n\n# Step 3: See examples/templates\n# Check references/examples.md for complete implementations"
      },
      {
        "title": "Custom Organizational Questionnaires",
        "body": "# Step 1: Start with template\ncp assets/templates/advanced.json my-questionnaire.json\n\n# Step 2: For any clinical questions, search LOINC\npython scripts/search_loinc.py \"body weight\"\n\n# Step 3: Add answer options if available\npython scripts/query_valueset.py --loinc-code \"FOUND-CODE\"\n\n# Step 4: For custom questions without LOINC results, use inline answerOptions\n# (no coding system needed - just code + display)\n\n# Step 5: Validate\npython scripts/validate_questionnaire.py my-questionnaire.json"
      },
      {
        "title": "Custom Answer Lists (When LOINC Has No Match)",
        "body": "When LOINC search returns no suitable answer list, use inline answerOption with system-less valueCoding by default. This is the simplest, spec-compliant approach for custom answer lists:\n\n{\n  \"linkId\": \"sleep-quality\",\n  \"type\": \"choice\",\n  \"text\": \"How would you rate your sleep quality?\",\n  \"answerOption\": [\n    {\"valueCoding\": {\"code\": \"good\", \"display\": \"Good\"}},\n    {\"valueCoding\": {\"code\": \"fair\", \"display\": \"Fair\"}},\n    {\"valueCoding\": {\"code\": \"poor\", \"display\": \"Poor\"}}\n  ]\n}\n\nDo NOT invent a coding system URI. Omitting system is valid FHIR and signals that these are local, questionnaire-scoped codes.\n\nOpt-in: Reusable Welshare Coding System\n\nIf the user explicitly requests reusable codes that can be shared across questionnaires, use the Welshare namespace (http://codes.welshare.app) via the helper script:\n\npython scripts/create_custom_codesystem.py --interactive\n\nThis creates a CodeSystem + ValueSet pair. To convert an inline answer list to the reusable format, add \"system\": \"http://codes.welshare.app/CodeSystem/<category>/<id>.json\" to each valueCoding and optionally reference the ValueSet via answerValueSet. See references/loinc_guide.md for details."
      },
      {
        "title": "Common Patterns",
        "body": "Conditional display: Use enableWhen to show/hide questions\nRepeating groups: Set \"repeats\": true for medications, allergies, etc.\nStandardized answers: Use query_valueset.py --loinc-code \"CODE\" for LOINC-backed answer lists\nCustom answers: Use inline answerOption with valueCoding (no system) for non-standardized choices\n\nSee references/examples.md for complete working examples."
      },
      {
        "title": "search_loinc.py - Find LOINC Codes",
        "body": "python scripts/search_loinc.py \"blood pressure\"\npython scripts/search_loinc.py \"depression\" --limit 10 --format fhir"
      },
      {
        "title": "search_snomed.py - Find SNOMED CT Codes",
        "body": "python scripts/search_snomed.py \"diabetes\"\npython scripts/search_snomed.py \"hypertension\" --limit 10 --format fhir\npython scripts/search_snomed.py \"asthma\" --format table\npython scripts/search_snomed.py \"diabetes mellitus\" --semantic-tag \"disorder\"\n\nFormats: json (default), table, fhir\nSemantic tags (when present in results): disorder, finding, procedure, body structure, substance, organism\nNote: Semantic tag filtering only works when tags are included in the display name from the terminology server."
      },
      {
        "title": "query_valueset.py - Find Answer Options",
        "body": "python scripts/query_valueset.py --loinc-code \"72166-2\"\npython scripts/query_valueset.py --loinc-code \"72166-2\" --format fhir\npython scripts/query_valueset.py --search \"smoking\"\n\nAlternative servers (if tx.fhir.org fails):\n\n--server https://hapi.fhir.org/baseR4\n--server https://r4.ontoserver.csiro.au/fhir"
      },
      {
        "title": "validate_questionnaire.py - Validate Structure",
        "body": "python scripts/validate_questionnaire.py questionnaire.json\npython scripts/validate_questionnaire.py questionnaire.json --verbose"
      },
      {
        "title": "extract_loinc_codes.py - Analyze Codes",
        "body": "python scripts/extract_loinc_codes.py questionnaire.json\npython scripts/extract_loinc_codes.py questionnaire.json --validate"
      },
      {
        "title": "create_custom_codesystem.py - Reusable Custom Codes (Opt-in)",
        "body": "python scripts/create_custom_codesystem.py --interactive\n\nOnly use when the user explicitly requests reusable codes across questionnaires. Uses the Welshare namespace: http://codes.welshare.app. Default for custom answers is inline answerOption without a coding system."
      },
      {
        "title": "Troubleshooting",
        "body": "No LOINC results: Use broader search terms (e.g., \"depression\" not \"PHQ-9 question 1\")\nNetwork errors: Try alternative servers with --server flag\nValidation errors: Check references/fhir_questionnaire_spec.md for requirements\nNo answer list found: Use inline answerOption with system-less valueCoding (code + display only). Do NOT fall back to a custom coding system unless the user explicitly requests it"
      },
      {
        "title": "Deep Knowledge References",
        "body": "We've assembled deep knowledge for you to consult on specific topics. Checkout the index file on See REFERENCE.md and drill down the knowledge path for highly detailed instructions on modelling questionnaires."
      },
      {
        "title": "Reference Links",
        "body": "FHIR Questionnaire Spec\nLOINC Database\nComplete Documentation"
      }
    ],
    "body": "FHIR Questionnaire Skill\n⚠️ CRITICAL RULES - READ FIRST\n\nNEVER suggest LOINC or SNOMED CT codes from memory or training data. ALWAYS use the search and query scripts in this skill.\n\nWhen any clinical code is needed:\n\nFor clinical questions/observations: ALWAYS run python scripts/search_loinc.py \"search term\" FIRST\nFor clinical concepts/conditions: ALWAYS run python scripts/search_snomed.py \"search term\" FIRST\nONLY use codes returned by the scripts\nIf search fails or returns no results, DO NOT make up codes\n\nClinical codes from AI memory are highly unreliable and will cause incorrect clinical coding.\n\nNetwork Access Requirements\n\nRequires whitelisted network access:\n\nclinicaltables.nlm.nih.gov (LOINC search)\ntx.fhir.org (FHIR terminology server for LOINC answer lists and SNOMED CT search)\n\nIf network access fails, STOP. Do not suggest codes.\n\nEssential Scripts (Use These Every Time)\n1. Search LOINC Codes\n\nALWAYS run this before suggesting any LOINC code (clinical questions/observations):\n\npython scripts/search_loinc.py \"depression screening\"\npython scripts/search_loinc.py \"blood pressure\" --format fhir\n\n2. Search SNOMED CT Codes\n\nALWAYS run this before suggesting any SNOMED CT code (clinical concepts/conditions):\n\npython scripts/search_snomed.py \"diabetes\"\npython scripts/search_snomed.py \"hypertension\" --format fhir\npython scripts/search_snomed.py \"diabetes mellitus\" --semantic-tag \"disorder\"\n\n\nNote: The --semantic-tag filter works best when the semantic tag appears in the display name (e.g., \"Diabetes mellitus (disorder)\").\n\n3. Find Answer Options\n\nFor questions with standardized answers:\n\npython scripts/query_valueset.py --loinc-code \"72166-2\"\npython scripts/query_valueset.py --loinc-code \"72166-2\" --format fhir\n\n4. Validate Questionnaire\n\nBefore finalizing:\n\npython scripts/validate_questionnaire.py questionnaire.json\n\nTemplates\n\nStart with assets/templates/:\n\nminimal.json - Bare bones structure\nbasic.json - Simple questionnaire\nadvanced.json - Complex with conditional logic\nWorkflows\nStandardized Clinical Instruments (PHQ-9, GAD-7, etc.)\n# Step 1: Find panel code (NEVER skip this)\npython scripts/search_loinc.py \"PHQ-9 panel\"\n\n# Step 2: Find answer options\npython scripts/query_valueset.py --loinc-code \"FOUND-CODE\" --format fhir\n\n# Step 3: See examples/templates\n# Check references/examples.md for complete implementations\n\nCustom Organizational Questionnaires\n# Step 1: Start with template\ncp assets/templates/advanced.json my-questionnaire.json\n\n# Step 2: For any clinical questions, search LOINC\npython scripts/search_loinc.py \"body weight\"\n\n# Step 3: Add answer options if available\npython scripts/query_valueset.py --loinc-code \"FOUND-CODE\"\n\n# Step 4: For custom questions without LOINC results, use inline answerOptions\n# (no coding system needed - just code + display)\n\n# Step 5: Validate\npython scripts/validate_questionnaire.py my-questionnaire.json\n\nCustom Answer Lists (When LOINC Has No Match)\n\nWhen LOINC search returns no suitable answer list, use inline answerOption with system-less valueCoding by default. This is the simplest, spec-compliant approach for custom answer lists:\n\n{\n  \"linkId\": \"sleep-quality\",\n  \"type\": \"choice\",\n  \"text\": \"How would you rate your sleep quality?\",\n  \"answerOption\": [\n    {\"valueCoding\": {\"code\": \"good\", \"display\": \"Good\"}},\n    {\"valueCoding\": {\"code\": \"fair\", \"display\": \"Fair\"}},\n    {\"valueCoding\": {\"code\": \"poor\", \"display\": \"Poor\"}}\n  ]\n}\n\n\nDo NOT invent a coding system URI. Omitting system is valid FHIR and signals that these are local, questionnaire-scoped codes.\n\nOpt-in: Reusable Welshare Coding System\n\nIf the user explicitly requests reusable codes that can be shared across questionnaires, use the Welshare namespace (http://codes.welshare.app) via the helper script:\n\npython scripts/create_custom_codesystem.py --interactive\n\n\nThis creates a CodeSystem + ValueSet pair. To convert an inline answer list to the reusable format, add \"system\": \"http://codes.welshare.app/CodeSystem/<category>/<id>.json\" to each valueCoding and optionally reference the ValueSet via answerValueSet. See references/loinc_guide.md for details.\n\nCommon Patterns\nConditional display: Use enableWhen to show/hide questions\nRepeating groups: Set \"repeats\": true for medications, allergies, etc.\nStandardized answers: Use query_valueset.py --loinc-code \"CODE\" for LOINC-backed answer lists\nCustom answers: Use inline answerOption with valueCoding (no system) for non-standardized choices\n\nSee references/examples.md for complete working examples.\n\nScript Reference\nsearch_loinc.py - Find LOINC Codes\npython scripts/search_loinc.py \"blood pressure\"\npython scripts/search_loinc.py \"depression\" --limit 10 --format fhir\n\nsearch_snomed.py - Find SNOMED CT Codes\npython scripts/search_snomed.py \"diabetes\"\npython scripts/search_snomed.py \"hypertension\" --limit 10 --format fhir\npython scripts/search_snomed.py \"asthma\" --format table\npython scripts/search_snomed.py \"diabetes mellitus\" --semantic-tag \"disorder\"\n\n\nFormats: json (default), table, fhir Semantic tags (when present in results): disorder, finding, procedure, body structure, substance, organism Note: Semantic tag filtering only works when tags are included in the display name from the terminology server.\n\nquery_valueset.py - Find Answer Options\npython scripts/query_valueset.py --loinc-code \"72166-2\"\npython scripts/query_valueset.py --loinc-code \"72166-2\" --format fhir\npython scripts/query_valueset.py --search \"smoking\"\n\n\nAlternative servers (if tx.fhir.org fails):\n\n--server https://hapi.fhir.org/baseR4\n--server https://r4.ontoserver.csiro.au/fhir\nvalidate_questionnaire.py - Validate Structure\npython scripts/validate_questionnaire.py questionnaire.json\npython scripts/validate_questionnaire.py questionnaire.json --verbose\n\nextract_loinc_codes.py - Analyze Codes\npython scripts/extract_loinc_codes.py questionnaire.json\npython scripts/extract_loinc_codes.py questionnaire.json --validate\n\ncreate_custom_codesystem.py - Reusable Custom Codes (Opt-in)\npython scripts/create_custom_codesystem.py --interactive\n\n\nOnly use when the user explicitly requests reusable codes across questionnaires. Uses the Welshare namespace: http://codes.welshare.app. Default for custom answers is inline answerOption without a coding system.\n\nTroubleshooting\nNo LOINC results: Use broader search terms (e.g., \"depression\" not \"PHQ-9 question 1\")\nNetwork errors: Try alternative servers with --server flag\nValidation errors: Check references/fhir_questionnaire_spec.md for requirements\nNo answer list found: Use inline answerOption with system-less valueCoding (code + display only). Do NOT fall back to a custom coding system unless the user explicitly requests it\nDeep Knowledge References\n\nWe've assembled deep knowledge for you to consult on specific topics. Checkout the index file on See REFERENCE.md and drill down the knowledge path for highly detailed instructions on modelling questionnaires.\n\nReference Links\nFHIR Questionnaire Spec\nLOINC Database\nComplete Documentation"
  },
  "trust": {
    "sourceLabel": "tencent",
    "provenanceUrl": "https://clawhub.ai/elmariachi111/fhir-questionnaire",
    "publisherUrl": "https://clawhub.ai/elmariachi111/fhir-questionnaire",
    "owner": "elmariachi111",
    "version": "0.2.4",
    "license": null,
    "verificationStatus": "Indexed source record"
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/fhir-questionnaire",
    "downloadUrl": "https://openagent3.xyz/downloads/fhir-questionnaire",
    "agentUrl": "https://openagent3.xyz/skills/fhir-questionnaire/agent",
    "manifestUrl": "https://openagent3.xyz/skills/fhir-questionnaire/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/fhir-questionnaire/agent.md"
  }
}