Protocol schema with example

The protocol schema with dummy Care Administration Network example. The JSON represents all the components mention in the protocol_specification document.

Protocol Specification for BMI

{
    "name": "CAN",
    "description": "Care Administration Network",
    "version": 6,
    "certificates": "CERT-001",
    "publishDate": "29-06-2021",
    "effectiveDate": "01-07-201",
    "protocolVersionNumber": 13,
    "networkSettings": {
        "solveTokenUsage": {
            "solveGasSettings": {
                "eventWiseCost": [
                    {
                        "event": "04001"
                    },
                    {
                        "event": "04002"
                    }
                ]
            }
        }
    },
    "roles": [
        {
            "id": "01001",
            "name": "Patient",
            "description": "Patient role for the CAN",
            "status": "Active",
            "version": 1,
            "network": "Patient role for the CAN",
            "allowEventsWithRole": [
                "01002"
            ]
        },
        {
            "id": "01002",
            "name": "Doctor",
            "description": "Patient role for the CAN",
            "status": "Active",
            "version": 1,
            "network": "Patient role for the CAN",
            "allowEventsWithRole": [
                "01001"
            ]
        }
    ],
    "journeys": [
        {
            "id": "02002",
            "name": "BMI Logs",
            "description": "BMI logs of the Patient",
            "status": "Active",
            "version": 1,
            "startCardRefId": "03003",
            "roles": [
                "01001",
                "01002"
            ]
        },
        {
            "id": "02001",
            "name": "Calculate BMI",
            "description": "Calculate BMI for the Patient",
            "status": "Active",
            "version": 1,
            "startCardRefId": "03002",
            "roles": [
                "01002",
                "01001"
            ]
        }
    ],
    "cards": [
        {
            "id": "03002",
            "name": "BMI Calculate",
            "description": "Submit the details require to Calculate BMI, wallet card for the Patient ",
            "status": "Active",
            "version": 1,
            "cardDefinitionRef": "card/03002.json",
            "transactionDataRef": "td/06001.json",
            "journey": "02001",
            "role": "01001",
            "walletEvents": [
                "04001"
            ],
            "nodeEvents": [
                "04002"
            ]
        },
        {
            "id": "03001",
            "name": "BMI Journey",
            "description": "BMI Journey landing wallet card for the Patient (Dummy Card)",
            "status": "Active",
            "version": 1,
            "cardDefinitionRef": "card/03001.json",
            "journey": "02001",
            "role": "01001",
            "walletEvents": [
                "04001"
            ],
            "nodeEvents": []
        },
        {
            "id": "03004",
            "name": "My BMI Report",
            "description": "Generate My BMI Report, wallet card for the Patient ",
            "status": "Active",
            "version": 1,
            "cardDefinitionRef": "card/03004.json",
            "transactionDataRef": "td/06001.json",
            "journey": "02002",
            "role": "01001",
            "walletEvents": [
                "04001"
            ],
            "nodeEvents": []
        },
        {
            "id": "03003",
            "name": "BMI Report",
            "description": "BMI Report, wallet card for the Patient ",
            "status": "Active",
            "version": 1,
            "cardDefinitionRef": "card/03003.json",
            "transactionDataRef": "td/06001.json",
            "journey": "02002",
            "role": "01001",
            "walletEvents": [
                "04001"
            ],
            "nodeEvents": [
                "04002"
            ]
        }
    ],
    "events": [
        {
            "id": "04001",
            "name": "Wallet.BMI.Events",
            "description": "Wallet event to open the BMI Input Card in BMI Details Journey ",
            "status": "Active",
            "version": 1,
            "type": "Wallet_Event",
            "code": "WALLET.BMI.INPUT.CARD",
            "walletEventHandlers": [
                "05001"
            ],
            "nodeEventHandlers": []
        },
        {
            "id": "04002",
            "name": "Patient.BMI.Submitted",
            "description": "Submit Patient's BMI data for BMI calcuation.",
            "status": "Active",
            "version": 2,
            "type": "Node_Event",
            "code": "PT.BMI.SUBMITTED",
            "fromRole": "01001",
            "toRole": "01001",
            "eventDefinitionRef": "event/04002.json",
            "walletEventHandlers": [
                "05001"
            ],
            "nodeEventHandlers": [
                "05002"
            ]
        }
    ],
    "eventHandlers": [
        {
            "id": "05002",
            "name": "BMI.Calculate",
            "description": "Event handler to Calculate BMI on node.",
            "status": "Active",
            "version": 2,
            "type": "Node_Event_Handler",
            "eventHandlerDefinitionRef": "event-handler/05002.json",
            "event": "04002"
        },
        {
            "id": "05001",
            "name": "BMI.Input.Card",
            "description": "Event handler for BMI Journeys Cards",
            "status": "Active",
            "version": 2,
            "type": "Wallet_Event_Handler",
            "eventHandlerDefinitionRef": "event-handler/05001.json",
            "event": "04001"
        }
    ],
    "careTags": [
        {}
    ],
    "solveToken": {
        "transferFromOtherNetwork": {},
        "transferWithinNetwork": {
            "transferMapping": []
        },
        "withdrawalTokensFromNetwork": {}
    },
    "careLedger": {
        "excludedJourneys": [],
        "journeyWiseEvents": []
    }
}

Protocol_Schema.json

{
  "care_protocol": {
    "name": "CAN",
    "description": "Care Administration Network",
    "version": "1.0",
    "certificates": "CERT-001",
    "publish_date": "25-03-2021",
    "effective_date": "01-04-201",
    "protocol_version_number": 1.0,
    "network_settings": {
      "solve_token_usage": {
        "deposit_value": "Market",
        "redemption_value": "Deposit",
        "solve_gas_setting": {
          "event_wise_cost": [
            {
              "event": "04001",
              "cost": 10
            },
            {
              "event": "04002",
              "cost": 20
            },
            {
              "event": "04003",
              "cost": 10
            },
            {
              "event": "04004",
              "cost": 20
            },
            {
              "event": "04005",
              "cost": 21
            },
            {
              "event": "04006",
              "cost": 10.5
            }
          ]
        }
      }
    },
    "roles": [
      {
        "id": "01001",
        "name": "Patient",
        "description": "Patient role for the CAN",
        "type": "Wallet",
        "status": "Active",
        "version": 1.0,
        "network": "CAN",
        "allow_events_with_role": [
          "01002"
        ]
      },
      {
        "id": "01002",
        "name": "Doctor",
        "description": "Patient role for the CAN",
        "type": "Wallet",
        "status": "Active",
        "version": 1.0,
        "network": "CAN",
        "allow_events_with_role": [
          "01001"
        ]
      }
    ],
    "journeys": [
      {
        "id": "02001",
        "name": "Appointment",
        "description": "Appointment Journey",
        "status": "Active",
        "version": 1.0,
        "start_card_ref_id": "03101",
        "roles": [
          "01001",
          "01002"
        ]
      },
      {
        "id": "02003",
        "name": "Find Doctor",
        "description": "Find a doctor Journey for patient",
        "status": "Active",
        "version": 1.0,
        "start_card_ref_id": "03201",
        "roles": [
          "01001",
          "01002"
        ]
      }
    ],
    "cards": [
      {
        "id": "03101",
        "name": "Request_Appointment",
        "description": "Request an appointment wallet card for the Patient ",
        "status": "Active",
        "version": 1.0,
        "role": "01001",
        "journey": "02001",
        "card_definition_ref": "03101.json",
        "wallet_events": [
          "04101"
        ],
        "node_events": [
          "04102"
        ]
      },
      {
        "id": "03102",
        "name": "Complete_Appointment",
        "description": "Appointment complete wallet card for the Doctor ",
        "status": "Active",
        "version": 1.0,
        "role": "01002",
        "journey": "02001",
        "care_tag_id": 2928839,
        "card_definition_ref": "03102.json",
        "wallet_events": [
          "04103"
        ],
        "node_events": [
          "04104"
        ]
      },
      {
        "id": "03103",
        "name": "Find_Doctor_Request",
        "description": "Find a doctor wallet card for the Patient ",
        "status": "Active",
        "version": 1.0,
        "role": "01001",
        "journey": "02002",
        "card_Definition_Ref": "03103.json",
        "wallet_Events": [
          "04106",
          "04107"
        ],
        "node_events": [
          "04108"
        ]
      },
      {
        "id": "03104",
        "name": "Doctor_Available",
        "description": "Doctor wallet card to shared the profile, availability appointment type and cost",
        "status": "Active",
        "version": 1.0,
        "role": "01002",
        "journey": "02002",
        "card_definition_ref": "03104.json",
        "node_events": [
          "04109"
        ]
      }
    ],
    "care_tags": [
      {
        "id": "2928839",
        "allowed_networks": "global",
        "data_tags": [
          "Referred speciality",
          "Pre-authorization",
          "Urgency",
          "Reason"
        ]
      }
    ],
    "events": [
      {
        "id": "04101",
        "name": "Available.Doctors",
        "code": "PT.AVAILABLE.DOCTORS",
        "description": "GET available doctors from the wallet node",
        "status": "Active",
        "version": 1.0,
        "type": "Wallet_Event",
        "card": "03101",
        "event_definition_ref": "04101.json",
        "wallet_event_handlers": [
          "05001"
        ],
        "next_event": "04102"
      },
      {
        "id": "04102",
        "name": "Appointment.Request",
        "description": "Book an appointment with Doctor",
        "code": "PT.APPOINTMENT.REQUEST",
        "status": "Active",
        "version": 1.0,
        "type": "Node_Event",
        "event_definition_ref": "04102.json",
        "distribution_type": "node_to_node",
        "from_role": "01001",
        "to_role": "01002",
        "wallet_event_handlers": [
          "05002"
        ],
        "node_event_handlers": [
          "05003"
        ],
        "next_event": "04103"
      },
      {
        "id": "04103",
        "name": "Appointment_Requests",
        "code": "DC.APPOINTMENT.REQUESTS",
        "description": "Get patient appointment requests from doctor node",
        "status": "Active",
        "version": 1.0,
        "type": "Wallet_Event",
        "event_definition_ref": "04103.json",
        "wallet_event_handlers": [
          "05004"
        ],
        "next_event": "04104"
      },
      {
        "id": "04104",
        "name": "Appointment_Completed",
        "code": "DC.APPOINTMENT.COMPLETED",
        "description": "Appointment completed event for patient node",
        "status": "Active",
        "version": 1.0,
        "type": "Node_Event",
        "event_definition_ref": "04104.json",
        "distribution_type": "node_to_node",
        "from_role": "01001",
        "to_role": "01002",
        "wallet_event_handlers": [
          "05005"
        ],
        "node_event_handlers": [
          "05006"
        ],
        "next_event": "04110"
      },
      {
        "id": "04105",
        "name": "Find_Doctor_Request",
        "code": "PT.FIND.DOCTOR",
        "description": "Find a doctor event for wallet card",
        "status": "Active",
        "version": 1.0,
        "type": "Wallet_Event",
        "event_Definition_Ref": "04105.json",
        "wallet_event_handlers": [
          "05007"
        ],
        "next_event": "04106"
      },
      {
        "id": "04106",
        "name": "Find_Doctor_Request",
        "code": "PT.FIND.DOCTOR",
        "description": "Find a doctor event to search doctors on the network. ",
        "status": "Active",
        "version": 1.0,
        "type": "Node_Event",
        "event_definition_ref": "04106.json",
        "distribution_type": "node_to_node",
        "from_role": "01001",
        "to_role": "01002",
        "wallet_event_handlers": [
          "05008"
        ],
        "node_event_handlers": [
          "05009"
        ],
        "next_event": "04112"
      }
    ],
    "event_handlers": [
      {
        "id": "05001",
        "name": "Available.Doctors.Event.Handler",
        "description": "Get available doctors from the wallet node",
        "status": "Active",
        "version": 1.0,
        "event": "04101",
        "type": "Wallet_Event_Handler",
        "event_handler_definition_ref": "05001.json"
      },
      {
        "id": "05002",
        "name": "Appointment.Request",
        "description": "Create an appointment event",
        "status": "Active",
        "version": 1.0,
        "event": "04102",
        "type": "Wallet_Event_Handler",
        "event_handler_definition_ref": "05001.json"
      },
      {
        "id": "05003",
        "name": "Appointment.Request.Create",
        "description": "Send an appointment event",
        "status": "Active",
        "version": 1.0,
        "event": "04103",
        "type": "Node_Event_Handler",
        "event_handler_definition_ref": "05003.json"
      },
      {
        "id": "05004",
        "name": "Appointment.Completed",
        "description": "Appointment Completed",
        "status": "Active",
        "version": 1.0,
        "event": "04104",
        "type": "Wallet_Event_Handler",
        "event_handler_definition_ref": "05004.json"
      },
      {
        "id": "05005",
        "name": "Appointment.Completed",
        "description": "Appointment Completed",
        "status": "Active",
        "version": 1.0,
        "event": "04105",
        "type": "Node_Event_Handler",
        "event_handler_definition_ref": "05005.json"
      }
    ],
    "solve_token": {
      "transfer_from_other_network": {
        "allow": "Yes",
        "payment_options": [
          "CC",
          "PayTM",
          "Transferwise"
        ]
      },
      "transfer_within_network": {
        "allow": "Yes",
        "transfer_mapping": [
          {
            "from_role": "01001",
            "to_role": "01002"
          },
          {
            "from_role": "01001",
            "to_role": "01003"
          }
        ]
      },
      "withdrawn_tokens_from_network": {
        "allow": "Yes"
      }
    },
    "care_circle": {
      "role_allow": [
        "01001",
        "01002",
        "01003"
      ],
      "journeys_allow": [
        "02001",
        "02002"
      ]
    },
    "care_ledger": {
      "journeys_allow_to_publish": "All",
      "excluded_journeys": [
        "02003",
        "02009"
      ],
      "journey_wise_events": [
        {
          "journey": "02001",
          "events": [
            "04002",
            "04003"
          ]
        },
        {
          "journey": "02002",
          "events": [
            "04005",
            "04006"
          ]
        }
      ]
    },
    "vault": {
      "backup_options": {
        "free": "yes",
        "upgrade": "Yes"
      },
      "upgrade_options": {
        "tier_1": {
          "backup_size": "100GB",
          "upgrade_cost": "100 SOLVE/MONTH"
        },
        "tier_2": {
          "backup_size": "200GB",
          "upgrade_cost": "200 SOLVE/MONTH"
        }
      }
    },
    "geographic_availability": {
      "countries": [
        "India",
        "USA"
      ],
      "countries_excluded": [
        "Australia",
        "UK"
      ]
    }
  }
}