tukpdq

package module
v1.3.22 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 16, 2023 License: GPL-3.0 Imports: 13 Imported by: 2

README

tukpdq

tukpdq provides a golang implementtion of IHE PIXm, IHE PIXv3 and IHE PDQv3 Consumer clients

There is currently no authentication implemented. The github.com/ipthomas/tukhttp package is used to handle the http request/response and should be amended according to your authentication requirements

Struct PDQQuery implements the tukpdq.PDQ interface

type PDQQuery struct {
	Server       string
	Server_URL   string
	NHS_ID       string
	NHS_OID      string
	MRN_ID       string
	MRN_OID      string
	REG_ID       string
	REG_OID      string
	Timeout      int64
	Cache        bool
	RspType      string
	Used_PID     string
	Used_PID_OID string
	Request      []byte
	Response     []byte
	StatusCode   int
	Count        int
	Patients     []PIXPatient
}
Server must be set to either "pixm" to perform a IHE PIXm query or "pixv3" to perform an IHE PIXv3 query or "pdqv3" to perform an IHE PDQv3 query. The github.com/ipthomas/tukcnst provides constants for each of the valid Server values i.e. tukcnst.PIXm, tukcnst.PIXv3, tukcnst.PDQv3, or you can just use strings!


A patient identifier is required for use in the PDQ. Only one id needs to be provided, not all id's are needed!!
	i.e. This can be either the MRN id along with the associated MRN OID or the NHS ID or the XDS regional ID. The default nhs oid will be used if not provided. The regional oid is always reguired even if not using the reg id in the pdq because when parsing the pdq response the reg oid is needed to identify the patient reg id.

 The REG_OID is the Regional/XDS OID and is required
 
 Server_URL is the IHE (PIXm or PIXv3 or PDQv3) compliant server WS end point and is required.

 Timeout is the http context timeout in seconds and is optional. Default is 5 secs

 Cache = "true" enables the caching of found patients for the lifetime of the lambda function. Default is false

 RspType sets the response type sent to the PDQ. 
 	If set to "bool" the response will be either true or false.
	If set to "code" the response will be empty and the StatusCode will be either 200 if patient exists or 204 if not
	Default is the reponse is empty if patient not found or the patient details if patient is found

 Used_ID will be set to the ID used for the query

 Used_OID will be set to the OID used for the query
 
 Request will be set with the bytes of the request message

 Response will be set as determined by the RspType param. Descibed above 

 StatusCode will be set according to the RspType param.
 
 Count will equal the number of patients found matching the query. Hopefully just 1 !!

 []Patients will contain an array of PIXPatient structs containing all matched patients. Hopefully just 1 !!

type PIXPatient struct {
	PIDOID     string `json:"pidoid"`
	PID        string `json:"pid"`
	REGOID     string `json:"regoid"`
	REGID      string `json:"regid"`
	NHSOID     string `json:"nhsoid"`
	NHSID      string `json:"nhsid"`
	GivenName  string `json:"givenname"`
	FamilyName string `json:"familyname"`
	Gender     string `json:"gender"`
	BirthDate  string `json:"birthdate"`
	Street     string `json:"street"`
	Town       string `json:"town"`
	City       string `json:"city"`
	State      string `json:"state"`
	Country    string `json:"country"`
	Zip        string `json:"zip"`
}

Example usage as AWS Lambda function:
	pdq := tukpdq.PDQQuery{
		Server:     os.Getenv(tukcnst.AWS_ENV_PDQ_SERVER_TYPE),
		MRN_ID:     req.QueryStringParameters[tukcnst.QUERY_PARAM_MRN_ID],
		MRN_OID:    req.QueryStringParameters[tukcnst.QUERY_PARAM_MRN_OID],
		NHS_ID:     req.QueryStringParameters[tukcnst.QUERY_PARAM_NHS_ID],
		NHS_OID:    os.Getenv(tukcnst.AWS_ENV_REG_OID),
		REG_ID:     req.QueryStringParameters[tukcnst.QUERY_PARAM_REG_ID],
		REG_OID:    os.Getenv(tukcnst.AWS_ENV_REG_OID),
		Server_URL: os.Getenv(tukcnst.AWS_ENV_PDQ_SERVER_URL),
		Timeout:    2,
	}
err = tukpdq.New_Transaction(&pdq)

Running the above example produces the following Log output:

2022/09/12 14:02:55.510679 tukpdq.go:188: HTTP GET Request Headers

2022/09/12 14:02:55.510834 tukpdq.go:190: {
  "Accept": [
    "*/*"
  ],
  "Connection": [
    "keep-alive"
  ],
  "Content-Type": [
    "application/json"
  ]
}

2022/09/12 14:02:55.510860 tukpdq.go:191: HTTP Request URL = http://spirit-test-01.tianispirit.co.uk:8081/SpiritPIXFhir/r4/Patient?identifier=2.16.840.1.113883.2.1.4.1%7C9999999468&_format=json&_pretty=true 2022/09/12 14:02:55.851605 tukpdq.go:194: HTML Response - Status Code = 200

{
  "resourceType": "Bundle",
  "id": "53c44d32-fb2c-4dfb-b819-db2150e6fa87",
  "type": "searchset",
  "total": 1,
  "link": [ {
    "relation": "self",
    "url": "http://spirit-test-01.tianispirit.co.uk:8081/SpiritPIXFhir/r4/Patient?_format=json&_pretty=true&identifier=2.16.840.1.113883.2.1.4.1%7C9999999468"
  } ],
  "entry": [ {
    "fullUrl": "http://spirit-test-01.tianispirit.co.uk:8081/SpiritPIXFhir/r4/Patient/VFNVSy4xNjYxOTc2MjMwMjYxMSYyLjE2Ljg0MC4xLjExMzg4My4yLjEuMy4zMS4yLjEuMS4xLjMuMS4x",
    "resource": {
      "resourceType": "Patient",
      "id": "VFNVSy4xNjYxOTc2MjMwMjYxMSYyLjE2Ljg0MC4xLjExMzg4My4yLjEuMy4zMS4yLjEuMS4xLjMuMS4x",
      "extension": [ {
        "url": "http://hl7.org/fhir/StructureDefinition/patient-citizenship",
        "valueCodeableConcept": {
          "coding": [ {
            "code": "GBR"
          } ]
        }
      }, {
        "url": "http://hl7.org/fhir/StructureDefinition/patient-nationality",
        "valueCodeableConcept": {
          "coding": [ {
            "code": "GBR"
          } ]
        }
      } ],
      "identifier": [ {
        "system": "urn:oid:2.16.840.1.113883.2.1.4.1",
        "value": "9999999468"
      }, {
        "use": "usual",
        "system": "urn:oid:2.16.840.1.113883.2.1.3.31.2.1.1.1.3.1.1",
        "value": "TSUK.16619762302611"
      }, {
        "system": "urn:oid:2.16.840.1.113883.2.1.3.31.2.1.1",
        "value": "REG.1MWU5C92M2"
      } ],
      "active": true,
      "name": [ {
        "use": "official",
        "family": "Testpatient",
        "given": [ "Nhs" ]
      } ],
      "telecom": [ {
        "system": "phone",
        "value": "07777661324",
        "use": "work"
      }, {
        "system": "email",
        "value": "nhs.testpatient@nhs.net",
        "use": "work"
      } ],
      "gender": "male",
      "birthDate": "1962-04-04",
      "address": [ {
        "line": [ "Preston Road" ],
        "city": "Preston",
        "state": "Lancashire",
        "postalCode": "PR1 1PR",
        "country": "GBR"
      } ],
      "maritalStatus": {
        "coding": [ {
          "code": "D"
        } ]
      },
      "multipleBirthBoolean": false
    }
  } ]
}

2022/09/12 14:02:55.852334 tukpdq.go:102: 1 Patient Entries in Response
2022/09/12 14:02:55.852392 tukpdq.go:122: Set NHS ID 9999999468 2.16.840.1.113883.2.1.4.1
2022/09/12 14:02:55.852427 tukpdq.go:117: Set PID TSUK.16619762302611 2.16.840.1.113883.2.1.3.31.2.1.1.1.3.1.1
2022/09/12 14:02:55.852455 tukpdq.go:112: Set Reg ID REG.1MWU5C92M2 2.16.840.1.113883.2.1.3.31.2.1.1
2022/09/12 14:02:55.852546 tukpdq.go:149: Added Patient 9999999468 to response
2022/09/12 14:02:55.852569 main.go:84: Patient Nhs Testpatient is registered

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func New_Transaction added in v1.2.6

func New_Transaction(i PDQInterface) error

Types

type CGLUserResponse added in v1.2.23

type CGLUserResponse struct {
	Data struct {
		Client struct {
			BasicDetails struct {
				Address struct {
					AddressLine1 string `json:"addressLine1,omitempty"`
					AddressLine2 string `json:"addressLine2,omitempty"`
					AddressLine3 string `json:"addressLine3,omitempty"`
					AddressLine4 string `json:"addressLine4,omitempty"`
					AddressLine5 string `json:"addressLine5,omitempty"`
					PostCode     string `json:"postCode,omitempty"`
				} `json:"address,omitempty"`
				BirthDate                    string `json:"birthDate,omitempty"`
				Disability                   string `json:"disability,omitempty"`
				LastEngagementByCGLDate      string `json:"lastEngagementByCGLDate,omitempty"`
				LastFaceToFaceEngagementDate string `json:"lastFaceToFaceEngagementDate,omitempty"`
				LocalIdentifier              int    `json:"localIdentifier,omitempty"`
				Name                         struct {
					Family string `json:"family,omitempty"`
					Given  string `json:"given,omitempty"`
				} `json:"name,omitempty"`
				NextCGLAppointmentDate string `json:"nextCGLAppointmentDate,omitempty"`
				NhsNumber              string `json:"nhsNumber,omitempty"`
				SexAtBirth             string `json:"sexAtBirth,omitempty"`
			} `json:"basicDetails,omitempty"`
			BbvInformation struct {
				BbvTested        string `json:"bbvTested,omitempty"`
				HepCLastTestDate string `json:"hepCLastTestDate,omitempty"`
				HepCResult       string `json:"hepCResult,omitempty"`
				HivPositive      string `json:"hivPositive,omitempty"`
			} `json:"bbvInformation,omitempty"`
			DrugTestResults struct {
				DrugTestDate          string `json:"drugTestDate,omitempty"`
				DrugTestSample        string `json:"drugTestSample,omitempty"`
				DrugTestStatus        string `json:"drugTestStatus,omitempty"`
				InstantOrConfirmation string `json:"instantOrConfirmation,omitempty"`
				Results               struct {
					Amphetamine     string `json:"amphetamine,omitempty"`
					Benzodiazepine  string `json:"benzodiazepine,omitempty"`
					Buprenorphine   string `json:"buprenorphine,omitempty"`
					Cannabis        string `json:"cannabis,omitempty"`
					Cocaine         string `json:"cocaine,omitempty"`
					Eddp            string `json:"eddp,omitempty"`
					Fentanyl        string `json:"fentanyl,omitempty"`
					Ketamine        string `json:"ketamine,omitempty"`
					Methadone       string `json:"methadone,omitempty"`
					Methamphetamine string `json:"methamphetamine,omitempty"`
					Morphine        string `json:"morphine,omitempty"`
					Opiates         string `json:"opiates,omitempty"`
					SixMam          string `json:"sixMam,omitempty"`
					Tramadol        string `json:"tramadol,omitempty"`
				} `json:"results,omitempty"`
			} `json:"drugTestResults,omitempty"`
			PrescribingInformation []string `json:"prescribingInformation,omitempty"`
			RiskInformation        struct {
				LastSelfReportedDate string `json:"lastSelfReportedDate,omitempty"`
				MentalHealthDomain   struct {
					AttemptedSuicide                            string `json:"attemptedSuicide,omitempty"`
					CurrentOrPreviousSelfHarm                   string `json:"currentOrPreviousSelfHarm,omitempty"`
					DiagnosedMentalHealthCondition              string `json:"diagnosedMentalHealthCondition,omitempty"`
					FrequentLifeThreateningSelfHarm             string `json:"frequentLifeThreateningSelfHarm,omitempty"`
					Hallucinations                              string `json:"hallucinations,omitempty"`
					HospitalAdmissionsForMentalHealth           string `json:"hospitalAdmissionsForMentalHealth,omitempty"`
					NoIdentifiedRisk                            string `json:"noIdentifiedRisk,omitempty"`
					NotEngagingWithSupport                      string `json:"notEngagingWithSupport,omitempty"`
					NotTakingPrescribedMedicationAsInstructed   string `json:"notTakingPrescribedMedicationAsInstructed,omitempty"`
					PsychiatricOrPreviousCrisisTeamIntervention string `json:"psychiatricOrPreviousCrisisTeamIntervention,omitempty"`
					Psychosis                                   string `json:"psychosis,omitempty"`
					SelfReportedMentalHealthConcerns            string `json:"selfReportedMentalHealthConcerns,omitempty"`
					ThoughtsOfSuicideOrSelfHarm                 string `json:"thoughtsOfSuicideOrSelfHarm,omitempty"`
				} `json:"mentalHealthDomain,omitempty"`
				RiskOfHarmToSelfDomain struct {
					AssessedAsNotHavingMentalCapacity  string `json:"assessedAsNotHavingMentalCapacity,omitempty"`
					BeliefTheyAreWorthless             string `json:"beliefTheyAreWorthless,omitempty"`
					Hoarding                           string `json:"hoarding,omitempty"`
					LearningDisability                 string `json:"learningDisability,omitempty"`
					MeetsSafeguardingAdultsThreshold   string `json:"meetsSafeguardingAdultsThreshold,omitempty"`
					NoIdentifiedRisk                   string `json:"noIdentifiedRisk,omitempty"`
					OngoingConcernsRelatingToOwnSafety string `json:"ongoingConcernsRelatingToOwnSafety,omitempty"`
					ProblemsMaintainingPersonalHygiene string `json:"problemsMaintainingPersonalHygiene,omitempty"`
					ProblemsMeetingNutritionalNeeds    string `json:"problemsMeetingNutritionalNeeds,omitempty"`
					RequiresIndependentAdvocacy        string `json:"requiresIndependentAdvocacy,omitempty"`
					SelfNeglect                        string `json:"selfNeglect,omitempty"`
				} `json:"riskOfHarmToSelfDomain,omitempty"`
				SocialDomain struct {
					FinancialProblems         string `json:"financialProblems,omitempty"`
					HomelessRoughSleepingNFA  string `json:"homelessRoughSleepingNFA,omitempty"`
					HousingAtRisk             string `json:"housingAtRisk,omitempty"`
					NoIdentifiedRisk          string `json:"noIdentifiedRisk,omitempty"`
					SociallyIsolatedNoSupport string `json:"sociallyIsolatedNoSupport,omitempty"`
				} `json:"socialDomain,omitempty"`
				SubstanceMisuseDomain struct {
					ConfusionOrDisorientation string `json:"ConfusionOrDisorientation,omitempty"`
					AdmissionToAandE          string `json:"admissionToAandE,omitempty"`
					BlackoutOrSeizures        string `json:"blackoutOrSeizures,omitempty"`
					ConcurrentUse             string `json:"concurrentUse,omitempty"`
					HigherRiskDrinking        string `json:"higherRiskDrinking,omitempty"`
					InjectedByOthers          string `json:"injectedByOthers,omitempty"`
					Injecting                 string `json:"injecting,omitempty"`
					InjectingInNeckOrGroin    string `json:"injectingInNeckOrGroin,omitempty"`
					NoIdentifiedRisk          string `json:"noIdentifiedRisk,omitempty"`
					PolyDrugUse               string `json:"polyDrugUse,omitempty"`
					PreviousOverDose          string `json:"previousOverDose,omitempty"`
					RecentPrisonRelease       string `json:"recentPrisonRelease,omitempty"`
					ReducedTolerance          string `json:"reducedTolerance,omitempty"`
					SharingWorks              string `json:"sharingWorks,omitempty"`
					Speedballing              string `json:"speedballing,omitempty"`
					UsingOnTop                string `json:"usingOnTop,omitempty"`
				} `json:"substanceMisuseDomain,omitempty"`
			} `json:"riskInformation,omitempty"`
			SafeguardingInformation struct {
				LastReviewDate     string `json:"lastReviewDate,omitempty"`
				RiskHarmFromOthers string `json:"riskHarmFromOthers,omitempty"`
				RiskToAdults       string `json:"riskToAdults,omitempty"`
				RiskToChildrenOrYP string `json:"riskToChildrenOrYP,omitempty"`
				RiskToSelf         string `json:"riskToSelf,omitempty"`
			} `json:"safeguardingInformation,omitempty"`
		} `json:"client,omitempty"`
		KeyWorker struct {
			LocalIdentifier int `json:"localIdentifier,omitempty"`
			Name            struct {
				Family string `json:"family,omitempty"`
				Given  string `json:"given,omitempty"`
			} `json:"name"`
			Telecom string `json:"telecom,omitempty"`
		} `json:"keyWorker,omitempty"`
	} `json:"data,omitempty"`
}

type Delphi added in v1.3.13

type Delphi struct {
	Data struct {
		LocalIdentifier int    `json:"LocalIdentifier,omitempty"`
		Status          string `json:"Status,omitempty"`
		Title           string `json:"Title,omitempty"`
		Forename        string `json:"Forename,omitempty"`
		Surname         string `json:"Surname,omitempty"`
		GenderAtBirth   string `json:"GenderAtBirth,omitempty"`
		DateOfBirth     string `json:"DateOfBirth,omitempty"`
		Address         struct {
			LocalIdentifier int    `json:"LocalIdentifier,omitempty"`
			AddressLine1    string `json:"AddressLine1,omitempty"`
			AddressLine2    string `json:"AddressLine2,omitempty"`
			AddressLine3    string `json:"AddressLine3,omitempty"`
			AddressLine4    string `json:"AddressLine4,omitempty"`
			PostCode1       string `json:"PostCode1,omitempty"`
			PostCode2       string `json:"PostCode2,omitempty"`
		} `json:"Address,omitempty"`
		Keyworker               string `json:"Keyworker,omitempty"`
		LastAttendedAppointment string `json:"LastAttendedAppointment,omitempty"`
		DrugScreening           []any  `json:"DrugScreening,omitempty"`
		Prescriptions           []any  `json:"Prescriptions,omitempty"`
		Risks                   []any  `json:"Risks,omitempty"`
		Careplans               []struct {
			LocalIdentifier          int    `json:"LocalIdentifier,omitempty"`
			AlcohoUse                bool   `json:"AlcohoUse,omitempty"`
			DrugUse                  bool   `json:"DrugUse,omitempty"`
			EffectsOfAlcoholAndDrugs bool   `json:"EffectsOfAlcoholAndDrugs,omitempty"`
			PreventingRelapse        bool   `json:"PreventingRelapse,omitempty"`
			PreventingOverdose       bool   `json:"PreventingOverdose,omitempty"`
			PersonalCare             bool   `json:"PersonalCare,omitempty"`
			FindingThingsIEnjoy      bool   `json:"FindingThingsIEnjoy,omitempty"`
			ManagingMoney            bool   `json:"ManagingMoney,omitempty"`
			SupportForMyChildren     bool   `json:"SupportForMyChildren,omitempty"`
			EducationOrTraining      bool   `json:"EducationOrTraining,omitempty"`
			Other                    bool   `json:"Other,omitempty"`
			AlcoholDrugUse           bool   `json:"AlcoholDrugUse,omitempty"`
			ManagingCravings         bool   `json:"ManagingCravings,omitempty"`
			MentalEmotionalHealth    bool   `json:"MentalEmotionalHealth,omitempty"`
			AccommodationHousing     bool   `json:"AccommodationHousing,omitempty"`
			LegalProblems            bool   `json:"LegalProblems,omitempty"`
			ParentingHelpSupport     bool   `json:"ParentingHelpSupport,omitempty"`
			PhyscialHealth           bool   `json:"PhyscialHealth,omitempty"`
			ImmediateProblem         string `json:"ImmediateProblem,omitempty"`
			LongTermGoal             string `json:"LongTermGoal,omitempty"`
			StepsToAchievingGoal     string `json:"StepsToAchievingGoal,omitempty"`
			HowDidItGo               string `json:"HowDidItGo,omitempty"`
			NextStepForGoal          string `json:"NextStepForGoal,omitempty"`
			CommunityDetox           bool   `json:"CommunityDetox,omitempty"`
			InpatientDetox           bool   `json:"InpatientDetox,omitempty"`
			OverdoseInformation      bool   `json:"OverdoseInformation,omitempty"`
			NutritionalAdvice        bool   `json:"NutritionalAdvice,omitempty"`
			HepCScreening            bool   `json:"HepCScreening,omitempty"`
			HepAAndBVaccination      bool   `json:"HepAAndBVaccination,omitempty"`
			GroupWork                bool   `json:"GroupWork,omitempty"`
			OneToOneSupport          bool   `json:"OneToOneSupport,omitempty"`
			SupportWorker            bool   `json:"SupportWorker,omitempty"`
			PrescribedMedication     bool   `json:"PrescribedMedication,omitempty"`
			Stabilisation            bool   `json:"Stabilisation,omitempty"`
			MedicalReview            bool   `json:"MedicalReview,omitempty"`
			OtherClinical            bool   `json:"OtherClinical,omitempty"`
			CarePlanGivenToClient    string `json:"CarePlanGivenToClient,omitempty"`
			CareplanStartDate        string `json:"CareplanStartDate,omitempty"`
			CarePlanReviewDate       string `json:"CarePlanReviewDate,omitempty"`
		} `json:"Careplans,omitempty"`
		Discharge any `json:"Discharge,omitempty"`
	} `json:"Data,omitempty"`
}

type PDQInterface added in v1.2.6

type PDQInterface interface {
	// contains filtered or unexported methods
}

type PDQQuery

type PDQQuery struct {
	Server_Mode      string           `json:",omitempty"`
	Server_URL       string           `json:",omitempty"`
	CGL_X_Api_Key    string           `json:",omitempty"`
	CGL_X_Api_Secret string           `json:",omitempty"`
	NHS_ID           string           `json:",omitempty"`
	NHS_OID          string           `json:",omitempty"`
	MRN_ID           string           `json:",omitempty"`
	MRN_OID          string           `json:",omitempty"`
	REG_ID           string           `json:",omitempty"`
	REG_OID          string           `json:",omitempty"`
	GivenName        string           `json:"givenname"`
	FamilyName       string           `json:"familyname"`
	BirthDate        string           `json:"birthdate"`
	Gender           string           `json:"gender"`
	Zip              string           `json:"zip"`
	Street           string           `json:"street"`
	Town             string           `json:"town"`
	City             string           `json:"city"`
	Country          string           `json:"country"`
	Timeout          int              `json:",omitempty"`
	Used_PID         string           `json:",omitempty"`
	Used_PID_OID     string           `json:",omitempty"`
	Request          []byte           `json:",omitempty"`
	Response         []byte           `json:",omitempty"`
	StatusCode       int              `json:",omitempty"`
	Count            int              `json:",omitempty"`
	DebugMode        bool             `json:",omitempty"`
	PDQv3Response    *PDQv3Response   `json:",omitempty"`
	PIXv3Response    *PIXv3Response   `json:",omitempty"`
	PIXmResponse     *PIXmResponse    `json:",omitempty"`
	Patients         *[]TUKPatient    `json:",omitempty"`
	CGLUserResponse  *CGLUserResponse `json:",omitempty"`
}

type PDQv3Response

type PDQv3Response struct {
	XMLName xml.Name `xml:"Envelope"`
	Text    string   `xml:",chardata"`
	S       string   `xml:"S,attr"`
	Env     string   `xml:"env,attr"`
	Header  struct {
		Text   string `xml:",chardata"`
		Action struct {
			Text  string `xml:",chardata"`
			Xmlns string `xml:"xmlns,attr"`
		} `xml:"Action"`
		MessageID struct {
			Text  string `xml:",chardata"`
			Xmlns string `xml:"xmlns,attr"`
		} `xml:"MessageID"`
		RelatesTo struct {
			Text  string `xml:",chardata"`
			Xmlns string `xml:"xmlns,attr"`
		} `xml:"RelatesTo"`
		To struct {
			Text  string `xml:",chardata"`
			Xmlns string `xml:"xmlns,attr"`
		} `xml:"To"`
	} `xml:"Header"`
	Body struct {
		Text             string `xml:",chardata"`
		PRPAIN201306UV02 struct {
			Text       string `xml:",chardata"`
			Xmlns      string `xml:"xmlns,attr"`
			ITSVersion string `xml:"ITSVersion,attr"`
			ID         struct {
				Text      string `xml:",chardata"`
				Extension string `xml:"extension,attr"`
				Root      string `xml:"root,attr"`
			} `xml:"id"`
			CreationTime struct {
				Text  string `xml:",chardata"`
				Value string `xml:"value,attr"`
			} `xml:"creationTime"`
			VersionCode struct {
				Text string `xml:",chardata"`
				Code string `xml:"code,attr"`
			} `xml:"versionCode"`
			InteractionId struct {
				Text      string `xml:",chardata"`
				Extension string `xml:"extension,attr"`
				Root      string `xml:"root,attr"`
			} `xml:"interactionId"`
			ProcessingCode struct {
				Text string `xml:",chardata"`
				Code string `xml:"code,attr"`
			} `xml:"processingCode"`
			ProcessingModeCode struct {
				Text string `xml:",chardata"`
				Code string `xml:"code,attr"`
			} `xml:"processingModeCode"`
			AcceptAckCode struct {
				Text string `xml:",chardata"`
				Code string `xml:"code,attr"`
			} `xml:"acceptAckCode"`
			Receiver struct {
				Text     string `xml:",chardata"`
				TypeCode string `xml:"typeCode,attr"`
				Device   struct {
					Text           string `xml:",chardata"`
					ClassCode      string `xml:"classCode,attr"`
					DeterminerCode string `xml:"determinerCode,attr"`
					ID             struct {
						Text                   string `xml:",chardata"`
						AssigningAuthorityName string `xml:"assigningAuthorityName,attr"`
						Root                   string `xml:"root,attr"`
					} `xml:"id"`
					AsAgent struct {
						Text                    string `xml:",chardata"`
						ClassCode               string `xml:"classCode,attr"`
						RepresentedOrganization struct {
							Text           string `xml:",chardata"`
							ClassCode      string `xml:"classCode,attr"`
							DeterminerCode string `xml:"determinerCode,attr"`
							ID             struct {
								Text                   string `xml:",chardata"`
								AssigningAuthorityName string `xml:"assigningAuthorityName,attr"`
								Root                   string `xml:"root,attr"`
							} `xml:"id"`
						} `xml:"representedOrganization"`
					} `xml:"asAgent"`
				} `xml:"device"`
			} `xml:"receiver"`
			Sender struct {
				Text     string `xml:",chardata"`
				TypeCode string `xml:"typeCode,attr"`
				Device   struct {
					Text           string `xml:",chardata"`
					ClassCode      string `xml:"classCode,attr"`
					DeterminerCode string `xml:"determinerCode,attr"`
					ID             struct {
						Text string `xml:",chardata"`
						Root string `xml:"root,attr"`
					} `xml:"id"`
					AsAgent struct {
						Text                    string `xml:",chardata"`
						ClassCode               string `xml:"classCode,attr"`
						RepresentedOrganization struct {
							Text           string `xml:",chardata"`
							ClassCode      string `xml:"classCode,attr"`
							DeterminerCode string `xml:"determinerCode,attr"`
							ID             struct {
								Text string `xml:",chardata"`
								Root string `xml:"root,attr"`
							} `xml:"id"`
						} `xml:"representedOrganization"`
					} `xml:"asAgent"`
				} `xml:"device"`
			} `xml:"sender"`
			Acknowledgement struct {
				Text     string `xml:",chardata"`
				TypeCode struct {
					Text string `xml:",chardata"`
					Code string `xml:"code,attr"`
				} `xml:"typeCode"`
				TargetMessage struct {
					Text string `xml:",chardata"`
					ID   struct {
						Text      string `xml:",chardata"`
						Extension string `xml:"extension,attr"`
						Root      string `xml:"root,attr"`
					} `xml:"id"`
				} `xml:"targetMessage"`
			} `xml:"acknowledgement"`
			ControlActProcess struct {
				Text      string `xml:",chardata"`
				ClassCode string `xml:"classCode,attr"`
				MoodCode  string `xml:"moodCode,attr"`
				Code      struct {
					Text       string `xml:",chardata"`
					Code       string `xml:"code,attr"`
					CodeSystem string `xml:"codeSystem,attr"`
				} `xml:"code"`
				Subject struct {
					Text                 string `xml:",chardata"`
					ContextConductionInd string `xml:"contextConductionInd,attr"`
					TypeCode             string `xml:"typeCode,attr"`
					RegistrationEvent    struct {
						Text      string `xml:",chardata"`
						ClassCode string `xml:"classCode,attr"`
						MoodCode  string `xml:"moodCode,attr"`
						ID        struct {
							Text       string `xml:",chardata"`
							NullFlavor string `xml:"nullFlavor,attr"`
						} `xml:"id"`
						StatusCode struct {
							Text string `xml:",chardata"`
							Code string `xml:"code,attr"`
						} `xml:"statusCode"`
						Subject1 struct {
							Text     string `xml:",chardata"`
							TypeCode string `xml:"typeCode,attr"`
							Patient  struct {
								Text      string `xml:",chardata"`
								ClassCode string `xml:"classCode,attr"`
								ID        []struct {
									Text                   string `xml:",chardata"`
									AssigningAuthorityName string `xml:"assigningAuthorityName,attr"`
									Extension              string `xml:"extension,attr"`
									Root                   string `xml:"root,attr"`
								} `xml:"id"`
								StatusCode struct {
									Text string `xml:",chardata"`
									Code string `xml:"code,attr"`
								} `xml:"statusCode"`
								EffectiveTime struct {
									Text  string `xml:",chardata"`
									Value string `xml:"value,attr"`
								} `xml:"effectiveTime"`
								PatientPerson struct {
									Text           string `xml:",chardata"`
									ClassCode      string `xml:"classCode,attr"`
									DeterminerCode string `xml:"determinerCode,attr"`
									Name           struct {
										Text   string `xml:",chardata"`
										Use    string `xml:"use,attr"`
										Given  string `xml:"given"`
										Family string `xml:"family"`
									} `xml:"name"`
									Telecom []struct {
										Text  string `xml:",chardata"`
										Use   string `xml:"use,attr"`
										Value string `xml:"value,attr"`
									} `xml:"telecom"`
									AdministrativeGenderCode struct {
										Text           string `xml:",chardata"`
										Code           string `xml:"code,attr"`
										CodeSystem     string `xml:"codeSystem,attr"`
										CodeSystemName string `xml:"codeSystemName,attr"`
									} `xml:"administrativeGenderCode"`
									BirthTime struct {
										Text  string `xml:",chardata"`
										Value string `xml:"value,attr"`
									} `xml:"birthTime"`
									DeceasedInd struct {
										Text  string `xml:",chardata"`
										Value string `xml:"value,attr"`
									} `xml:"deceasedInd"`
									MultipleBirthInd struct {
										Text  string `xml:",chardata"`
										Value string `xml:"value,attr"`
									} `xml:"multipleBirthInd"`
									Addr struct {
										Text              string `xml:",chardata"`
										StreetAddressLine string `xml:"streetAddressLine"`
										City              string `xml:"city"`
										State             string `xml:"state"`
										PostalCode        string `xml:"postalCode"`
										Country           string `xml:"country"`
									} `xml:"addr"`
									MaritalStatusCode struct {
										Text           string `xml:",chardata"`
										Code           string `xml:"code,attr"`
										CodeSystem     string `xml:"codeSystem,attr"`
										CodeSystemName string `xml:"codeSystemName,attr"`
									} `xml:"maritalStatusCode"`
									AsCitizen struct {
										Text            string `xml:",chardata"`
										ClassCode       string `xml:"classCode,attr"`
										PoliticalNation struct {
											Text           string `xml:",chardata"`
											ClassCode      string `xml:"classCode,attr"`
											DeterminerCode string `xml:"determinerCode,attr"`
											Code           struct {
												Text string `xml:",chardata"`
												Code string `xml:"code,attr"`
											} `xml:"code"`
										} `xml:"politicalNation"`
									} `xml:"asCitizen"`
									AsMember struct {
										Text      string `xml:",chardata"`
										ClassCode string `xml:"classCode,attr"`
										Group     struct {
											Text           string `xml:",chardata"`
											ClassCode      string `xml:"classCode,attr"`
											DeterminerCode string `xml:"determinerCode,attr"`
											Code           struct {
												Text           string `xml:",chardata"`
												Code           string `xml:"code,attr"`
												CodeSystem     string `xml:"codeSystem,attr"`
												CodeSystemName string `xml:"codeSystemName,attr"`
											} `xml:"code"`
										} `xml:"group"`
									} `xml:"asMember"`
									BirthPlace struct {
										Text string `xml:",chardata"`
										Addr struct {
											Text string `xml:",chardata"`
											City string `xml:"city"`
										} `xml:"addr"`
									} `xml:"birthPlace"`
								} `xml:"patientPerson"`
								ProviderOrganization struct {
									Text           string `xml:",chardata"`
									ClassCode      string `xml:"classCode,attr"`
									DeterminerCode string `xml:"determinerCode,attr"`
									ID             struct {
										Text       string `xml:",chardata"`
										NullFlavor string `xml:"nullFlavor,attr"`
									} `xml:"id"`
									ContactParty struct {
										Text      string `xml:",chardata"`
										ClassCode string `xml:"classCode,attr"`
									} `xml:"contactParty"`
								} `xml:"providerOrganization"`
								SubjectOf1 struct {
									Text                  string `xml:",chardata"`
									TypeCode              string `xml:"typeCode,attr"`
									QueryMatchObservation struct {
										Text      string `xml:",chardata"`
										ClassCode string `xml:"classCode,attr"`
										MoodCode  string `xml:"moodCode,attr"`
										Code      struct {
											Text       string `xml:",chardata"`
											Code       string `xml:"code,attr"`
											CodeSystem string `xml:"codeSystem,attr"`
										} `xml:"code"`
										Value struct {
											Text  string `xml:",chardata"`
											Xsi   string `xml:"xsi,attr"`
											Value string `xml:"value,attr"`
											Type  string `xml:"type,attr"`
										} `xml:"value"`
									} `xml:"queryMatchObservation"`
								} `xml:"subjectOf1"`
							} `xml:"patient"`
						} `xml:"subject1"`
						Custodian struct {
							Text           string `xml:",chardata"`
							TypeCode       string `xml:"typeCode,attr"`
							AssignedEntity struct {
								Text      string `xml:",chardata"`
								ClassCode string `xml:"classCode,attr"`
								ID        struct {
									Text       string `xml:",chardata"`
									NullFlavor string `xml:"nullFlavor,attr"`
								} `xml:"id"`
							} `xml:"assignedEntity"`
						} `xml:"custodian"`
					} `xml:"registrationEvent"`
				} `xml:"subject"`
				QueryAck struct {
					Text    string `xml:",chardata"`
					QueryId struct {
						Text      string `xml:",chardata"`
						Extension string `xml:"extension,attr"`
						Root      string `xml:"root,attr"`
					} `xml:"queryId"`
					StatusCode struct {
						Text string `xml:",chardata"`
						Code string `xml:"code,attr"`
					} `xml:"statusCode"`
					QueryResponseCode struct {
						Text string `xml:",chardata"`
						Code string `xml:"code,attr"`
					} `xml:"queryResponseCode"`
					ResultTotalQuantity struct {
						Text  string `xml:",chardata"`
						Value string `xml:"value,attr"`
					} `xml:"resultTotalQuantity"`
					ResultCurrentQuantity struct {
						Text  string `xml:",chardata"`
						Value string `xml:"value,attr"`
					} `xml:"resultCurrentQuantity"`
					ResultRemainingQuantity struct {
						Text  string `xml:",chardata"`
						Value string `xml:"value,attr"`
					} `xml:"resultRemainingQuantity"`
				} `xml:"queryAck"`
				QueryByParameter struct {
					Text    string `xml:",chardata"`
					QueryId struct {
						Text      string `xml:",chardata"`
						Extension string `xml:"extension,attr"`
						Root      string `xml:"root,attr"`
					} `xml:"queryId"`
					StatusCode struct {
						Text string `xml:",chardata"`
						Code string `xml:"code,attr"`
					} `xml:"statusCode"`
					ResponseModalityCode struct {
						Text string `xml:",chardata"`
						Code string `xml:"code,attr"`
					} `xml:"responseModalityCode"`
					ResponsePriorityCode struct {
						Text string `xml:",chardata"`
						Code string `xml:"code,attr"`
					} `xml:"responsePriorityCode"`
					MatchCriterionList string `xml:"matchCriterionList"`
					ParameterList      struct {
						Text            string `xml:",chardata"`
						LivingSubjectId struct {
							Text  string `xml:",chardata"`
							Value struct {
								Text      string `xml:",chardata"`
								Extension string `xml:"extension,attr"`
							} `xml:"value"`
							SemanticsText string `xml:"semanticsText"`
						} `xml:"livingSubjectId"`
					} `xml:"parameterList"`
				} `xml:"queryByParameter"`
			} `xml:"controlActProcess"`
		} `xml:"PRPA_IN201306UV02"`
	} `xml:"Body"`
}

type PIXmResponse

type PIXmResponse struct {
	ResourceType string `json:"resourceType"`
	ID           string `json:"id"`
	Type         string `json:"type"`
	Total        int    `json:"total"`
	Link         []struct {
		Relation string `json:"relation"`
		URL      string `json:"url"`
	} `json:"link"`
	Entry []struct {
		FullURL  string `json:"fullUrl"`
		Resource struct {
			ResourceType string `json:"resourceType"`
			ID           string `json:"id"`
			Identifier   []struct {
				Use    string `json:"use,omitempty"`
				System string `json:"system"`
				Value  string `json:"value"`
			} `json:"identifier"`
			Active bool `json:"active"`
			Name   []struct {
				Use    string   `json:"use"`
				Family string   `json:"family"`
				Given  []string `json:"given"`
			} `json:"name"`
			Gender    string `json:"gender"`
			BirthDate string `json:"birthDate"`
			Address   []struct {
				Use        string   `json:"use"`
				Line       []string `json:"line"`
				City       string   `json:"city"`
				PostalCode string   `json:"postalCode"`
				Country    string   `json:"country"`
			} `json:"address"`
		} `json:"resource"`
	} `json:"entry"`
}

type PIXv3Response

type PIXv3Response struct {
	XMLName xml.Name `xml:"Envelope"`
	S       string   `xml:"S,attr"`
	Env     string   `xml:"env,attr"`
	Header  struct {
		Action struct {
			Xmlns string `xml:"xmlns,attr"`
			S     string `xml:"S,attr"`
			Env   string `xml:"env,attr"`
		} `xml:"Action"`
		MessageID struct {
			Xmlns string `xml:"xmlns,attr"`
			S     string `xml:"S,attr"`
			Env   string `xml:"env,attr"`
		} `xml:"MessageID"`
		RelatesTo struct {
			Xmlns string `xml:"xmlns,attr"`
			S     string `xml:"S,attr"`
			Env   string `xml:"env,attr"`
		} `xml:"RelatesTo"`
		To struct {
			Xmlns string `xml:"xmlns,attr"`
			S     string `xml:"S,attr"`
			Env   string `xml:"env,attr"`
		} `xml:"To"`
	} `xml:"Header"`
	Body struct {
		PRPAIN201310UV02 struct {
			Xmlns      string `xml:"xmlns,attr"`
			ITSVersion string `xml:"ITSVersion,attr"`
			ID         struct {
				Extension string `xml:"extension,attr"`
				Root      string `xml:"root,attr"`
			} `xml:"id"`
			CreationTime struct {
				Value string `xml:"value,attr"`
			} `xml:"creationTime"`
			VersionCode struct {
				Code string `xml:"code,attr"`
			} `xml:"versionCode"`
			InteractionId struct {
				Extension string `xml:"extension,attr"`
				Root      string `xml:"root,attr"`
			} `xml:"interactionId"`
			ProcessingCode struct {
				Code string `xml:"code,attr"`
			} `xml:"processingCode"`
			ProcessingModeCode struct {
				Code string `xml:"code,attr"`
			} `xml:"processingModeCode"`
			AcceptAckCode struct {
				Code string `xml:"code,attr"`
			} `xml:"acceptAckCode"`
			Receiver struct {
				TypeCode string `xml:"typeCode,attr"`
				Device   struct {
					ClassCode      string `xml:"classCode,attr"`
					DeterminerCode string `xml:"determinerCode,attr"`
					ID             struct {
						AssigningAuthorityName string `xml:"assigningAuthorityName,attr"`
						Root                   string `xml:"root,attr"`
					} `xml:"id"`
					AsAgent struct {
						ClassCode               string `xml:"classCode,attr"`
						RepresentedOrganization struct {
							ClassCode      string `xml:"classCode,attr"`
							DeterminerCode string `xml:"determinerCode,attr"`
							ID             struct {
								AssigningAuthorityName string `xml:"assigningAuthorityName,attr"`
								Root                   string `xml:"root,attr"`
							} `xml:"id"`
						} `xml:"representedOrganization"`
					} `xml:"asAgent"`
				} `xml:"device"`
			} `xml:"receiver"`
			Sender struct {
				TypeCode string `xml:"typeCode,attr"`
				Device   struct {
					ClassCode      string `xml:"classCode,attr"`
					DeterminerCode string `xml:"determinerCode,attr"`
					ID             struct {
						Root string `xml:"root,attr"`
					} `xml:"id"`
					AsAgent struct {
						ClassCode               string `xml:"classCode,attr"`
						RepresentedOrganization struct {
							ClassCode      string `xml:"classCode,attr"`
							DeterminerCode string `xml:"determinerCode,attr"`
							ID             struct {
								Root string `xml:"root,attr"`
							} `xml:"id"`
						} `xml:"representedOrganization"`
					} `xml:"asAgent"`
				} `xml:"device"`
			} `xml:"sender"`
			Acknowledgement struct {
				TypeCode struct {
					Code string `xml:"code,attr"`
				} `xml:"typeCode"`
				TargetMessage struct {
					ID struct {
						Extension string `xml:"extension,attr"`
						Root      string `xml:"root,attr"`
					} `xml:"id"`
				} `xml:"targetMessage"`
			} `xml:"acknowledgement"`
			ControlActProcess struct {
				ClassCode string `xml:"classCode,attr"`
				MoodCode  string `xml:"moodCode,attr"`
				Code      struct {
					Code       string `xml:"code,attr"`
					CodeSystem string `xml:"codeSystem,attr"`
				} `xml:"code"`
				Subject struct {
					TypeCode          string `xml:"typeCode,attr"`
					RegistrationEvent struct {
						ClassCode string `xml:"classCode,attr"`
						MoodCode  string `xml:"moodCode,attr"`
						ID        struct {
							NullFlavor string `xml:"nullFlavor,attr"`
						} `xml:"id"`
						StatusCode struct {
							Code string `xml:"code,attr"`
						} `xml:"statusCode"`
						Subject1 struct {
							TypeCode string `xml:"typeCode,attr"`
							Patient  struct {
								ClassCode string `xml:"classCode,attr"`
								ID        []struct {
									Extension              string `xml:"extension,attr"`
									Root                   string `xml:"root,attr"`
									AssigningAuthorityName string `xml:"assigningAuthorityName,attr"`
								} `xml:"id"`
								StatusCode struct {
									Code string `xml:"code,attr"`
								} `xml:"statusCode"`
								PatientPerson struct {
									ClassCode      string `xml:"classCode,attr"`
									DeterminerCode string `xml:"determinerCode,attr"`
									Name           struct {
										Given  string `xml:"given"`
										Family string `xml:"family"`
									} `xml:"name"`
								} `xml:"patientPerson"`
							} `xml:"patient"`
						} `xml:"subject1"`
						Custodian struct {
							TypeCode       string `xml:"typeCode,attr"`
							AssignedEntity struct {
								ClassCode string `xml:"classCode,attr"`
								ID        struct {
									Root string `xml:"root,attr"`
								} `xml:"id"`
							} `xml:"assignedEntity"`
						} `xml:"custodian"`
					} `xml:"registrationEvent"`
				} `xml:"subject"`
				QueryAck struct {
					QueryId struct {
						Extension string `xml:"extension,attr"`
						Root      string `xml:"root,attr"`
					} `xml:"queryId"`
					StatusCode struct {
						Code string `xml:"code,attr"`
					} `xml:"statusCode"`
					QueryResponseCode struct {
						Code string `xml:"code,attr"`
					} `xml:"queryResponseCode"`
					ResultTotalQuantity struct {
						Value string `xml:"value,attr"`
					} `xml:"resultTotalQuantity"`
					ResultCurrentQuantity struct {
						Value string `xml:"value,attr"`
					} `xml:"resultCurrentQuantity"`
					ResultRemainingQuantity struct {
						Value string `xml:"value,attr"`
					} `xml:"resultRemainingQuantity"`
				} `xml:"queryAck"`
				QueryByParameter struct {
					QueryId struct {
						Extension string `xml:"extension,attr"`
						Root      string `xml:"root,attr"`
					} `xml:"queryId"`
					StatusCode struct {
						Code string `xml:"code,attr"`
					} `xml:"statusCode"`
					ResponsePriorityCode struct {
						Code string `xml:"code,attr"`
					} `xml:"responsePriorityCode"`
					ParameterList struct {
						PatientIdentifier struct {
							Value struct {
								AssigningAuthorityName string `xml:"assigningAuthorityName,attr"`
								Extension              string `xml:"extension,attr"`
								Root                   string `xml:"root,attr"`
							} `xml:"value"`
							SemanticsText string `xml:"semanticsText"`
						} `xml:"patientIdentifier"`
					} `xml:"parameterList"`
				} `xml:"queryByParameter"`
			} `xml:"controlActProcess"`
		} `xml:"PRPA_IN201310UV02"`
	} `xml:"Body"`
}

type TUKPatient added in v1.2.23

type TUKPatient struct {
	PIDOID     string `json:"pidoid"`
	PID        string `json:"pid"`
	REGOID     string `json:"regoid"`
	REGID      string `json:"regid"`
	NHSOID     string `json:"nhsoid"`
	NHSID      string `json:"nhsid"`
	GivenName  string `json:"givenname"`
	FamilyName string `json:"familyname"`
	Gender     string `json:"gender"`
	BirthDate  string `json:"birthdate"`
	Street     string `json:"street"`
	Town       string `json:"town"`
	City       string `json:"city"`
	State      string `json:"state"`
	Country    string `json:"country"`
	Zip        string `json:"zip"`
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL