PackagesCanonicalsLogsProblems
    Packages
    hl7.fhir.us.nhsn-dqm@1.0.0-ballot
    http://hl7.org/fhir/us/nhsn-dqm/Library/NHSNdQMAcuteCareHospitalInitialPopulationLibrary
{
  "description": null,
  "_filename": "example/Library-NHSNdQMAcuteCareHospitalInitialPopulationLibrary.json",
  "package_name": "hl7.fhir.us.nhsn-dqm",
  "date": "2024-08-12T17:44:04+00:00",
  "dataRequirement": [ {
    "type": "Patient",
    "profile": [ "http://hl7.org/fhir/StructureDefinition/Patient" ],
    "mustSupport": [ "id", "identifier", "active", "name", "telecom", "gender", "birthDate", "deceased", "address", "maritalStatus", "multipleBirth", "photo", "contact", "communication", "generalPractitioner", "managingOrganization", "link" ]
  }, {
    "type": "Encounter",
    "profile": [ "http://hl7.org/fhir/StructureDefinition/Encounter" ],
    "codeFilter": [ {
      "path": "type",
      "valueSet": "http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.666.5.307"
    } ],
    "mustSupport": [ "type", "status", "period", "location", "id", "extension", "identifier", "statusHistory", "class", "classHistory", "serviceType", "priority", "subject", "length", "reasonCode", "reasonReference", "diagnosis", "account", "hospitalization", "partOf" ]
  }, {
    "type": "Encounter",
    "profile": [ "http://hl7.org/fhir/StructureDefinition/Encounter" ],
    "codeFilter": [ {
      "path": "type",
      "valueSet": "http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.117.1.7.1.292"
    } ],
    "mustSupport": [ "type", "status", "period", "location", "id", "extension", "identifier", "statusHistory", "class", "classHistory", "serviceType", "priority", "subject", "length", "reasonCode", "reasonReference", "diagnosis", "account", "hospitalization", "partOf" ]
  }, {
    "type": "Encounter",
    "profile": [ "http://hl7.org/fhir/StructureDefinition/Encounter" ],
    "codeFilter": [ {
      "path": "type",
      "valueSet": "http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1111.143"
    } ],
    "mustSupport": [ "type", "status", "period", "location", "id", "extension", "identifier", "statusHistory", "class", "classHistory", "serviceType", "priority", "subject", "length", "reasonCode", "reasonReference", "diagnosis", "account", "hospitalization", "partOf" ]
  }, {
    "type": "Encounter",
    "profile": [ "http://hl7.org/fhir/StructureDefinition/Encounter" ],
    "codeFilter": [ {
      "path": "class",
      "valueSet": "http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1046.274"
    } ],
    "mustSupport": [ "class", "status", "period", "location", "id", "extension", "identifier", "statusHistory", "classHistory", "type", "serviceType", "priority", "subject", "length", "reasonCode", "reasonReference", "diagnosis", "account", "hospitalization", "partOf" ]
  }, {
    "type": "Encounter",
    "profile": [ "http://hl7.org/fhir/StructureDefinition/Encounter" ],
    "mustSupport": [ "status", "period", "location", "id", "extension", "identifier", "statusHistory", "class", "classHistory", "type", "serviceType", "priority", "subject", "length", "reasonCode", "reasonReference", "diagnosis", "account", "hospitalization", "partOf" ]
  }, {
    "type": "Location",
    "profile": [ "http://hl7.org/fhir/StructureDefinition/Location" ],
    "mustSupport": [ "id", "extension", "status", "operationalStatus", "name", "alias", "description", "mode", "type", "telecom", "address", "physicalType", "position", "managingOrganization", "partOf", "hoursOfOperation", "availabilityExceptions", "endpoint" ]
  }, {
    "type": "DiagnosticReport",
    "profile": [ "http://hl7.org/fhir/StructureDefinition/DiagnosticReport" ],
    "mustSupport": [ "id", "extension", "basedOn", "status", "category", "code", "subject", "encounter", "effective", "issued", "performer", "resultsInterpreter", "specimen", "result", "conclusion", "conclusionCode" ]
  }, {
    "type": "Observation",
    "profile": [ "http://hl7.org/fhir/StructureDefinition/Observation" ],
    "mustSupport": [ "id", "extension", "basedOn", "partOf", "status", "category", "code", "subject", "focus", "encounter", "effective", "issued", "performer", "value", "dataAbsentReason", "interpretation", "note", "bodySite", "method", "specimen", "device", "referenceRange", "hasMember", "derivedFrom", "component" ]
  }, {
    "type": "Condition",
    "profile": [ "http://hl7.org/fhir/StructureDefinition/Condition" ],
    "mustSupport": [ "id", "extension", "clinicalStatus", "verificationStatus", "category", "severity", "code", "bodySite", "subject", "encounter", "onset", "abatement", "recordedDate", "stage", "evidence", "note" ]
  }, {
    "type": "Device",
    "profile": [ "http://hl7.org/fhir/StructureDefinition/Device" ],
    "mustSupport": [ "id", "extension", "definition", "udiCarrier", "status", "statusReason", "distinctIdentifier", "manufacturer", "manufactureDate", "expirationDate", "lotNumber", "serialNumber", "deviceName", "modelNumber", "partNumber", "type", "specialization", "version", "property", "patient", "owner", "contact", "location", "url", "note", "safety", "parent" ]
  }, {
    "type": "MedicationAdministration",
    "profile": [ "http://hl7.org/fhir/StructureDefinition/MedicationAdministration" ],
    "mustSupport": [ "effective", "id", "extension", "instantiates", "partOf", "status", "statusReason", "category", "medication", "subject", "context", "supportingInformation", "performer", "reasonCode", "reasonReference", "request", "device", "note", "dosage", "eventHistory" ]
  }, {
    "type": "MedicationRequest",
    "profile": [ "http://hl7.org/fhir/StructureDefinition/MedicationRequest" ],
    "mustSupport": [ "authoredOn", "id", "extension", "status", "statusReason", "intent", "category", "priority", "doNotPerform", "reported", "medication", "subject", "encounter", "requester", "recorder", "reasonCode", "reasonReference", "instantiatesCanonical", "instantiatesUri", "courseOfTherapyType", "dosageInstruction" ]
  }, {
    "type": "Medication",
    "profile": [ "http://hl7.org/fhir/StructureDefinition/Medication" ],
    "mustSupport": [ "id", "extension", "code", "status", "manufacturer", "form", "amount", "ingredient", "batch" ]
  }, {
    "type": "Coverage",
    "profile": [ "http://hl7.org/fhir/StructureDefinition/Coverage" ],
    "mustSupport": [ "period", "id", "extension", "status", "type", "policyHolder", "subscriber", "subscriberId", "beneficiary", "dependent", "relationship", "payor", "class", "order", "network", "subrogation", "contract" ]
  }, {
    "type": "Procedure",
    "profile": [ "http://hl7.org/fhir/StructureDefinition/Procedure" ],
    "mustSupport": [ "performed", "id", "extension", "instantiatesCanonical", "instantiatesUri", "basedOn", "partOf", "status", "statusReason", "category", "code", "subject", "encounter", "recorder", "asserter", "performer", "location", "reasonCode", "reasonReference", "bodySite", "outcome", "report", "complication", "complicationDetail", "followUp", "note", "focalDevice", "usedReference", "usedCode" ]
  }, {
    "type": "Specimen",
    "profile": [ "http://hl7.org/fhir/StructureDefinition/Specimen" ],
    "mustSupport": [ "collection", "collection.collected", "id", "extension", "identifier", "accessionIdentifier", "status", "type", "subject", "receivedTime", "parent", "request", "processing", "container", "condition", "note" ]
  }, {
    "type": "ServiceRequest",
    "profile": [ "http://hl7.org/fhir/StructureDefinition/ServiceRequest" ],
    "mustSupport": [ "authoredOn", "id", "extension", "instantiatesCanonical", "instantiatesUri", "basedOn", "replaces", "requisition", "status", "intent", "category", "priority", "doNotPerform", "code", "orderDetail", "quantity", "subject", "encounter", "occurrence", "asNeeded", "requester", "performerType", "performer", "locationCode", "locationReference", "reasonCode", "reasonReference", "insurance", "supportingInfo", "specimen", "bodySite", "note", "patientInstruction", "relevantHistory" ]
  } ],
  "publisher": "HL7 International / Public Health",
  "jurisdiction": [ {
    "coding": [ {
      "code": "US",
      "system": "urn:iso:std:iso:3166",
      "display": "United States of America"
    } ]
  } ],
  "content": [ {
    "data": "bGlicmFyeSBOSFNOZFFNQWN1dGVDYXJlSG9zcGl0YWxJbml0aWFsUG9wdWxhdGlvbiB2ZXJzaW9uICcwLjAuMDE0JwoKdXNpbmcgRkhJUiB2ZXJzaW9uICc0LjAuMScKCmluY2x1ZGUgRkhJUkhlbHBlcnMgdmVyc2lvbiAnNC4wLjEnIGNhbGxlZCBGSElSSGVscGVycwppbmNsdWRlIE1BVEdsb2JhbENvbW1vbkZ1bmN0aW9uc0ZISVI0IHZlcnNpb24gJzYuMS4wMDAnIGNhbGxlZCBHbG9iYWwKaW5jbHVkZSBTdXBwbGVtZW50YWxEYXRhRWxlbWVudHNGSElSNCB2ZXJzaW9uICcyLjAuMDAwJyBjYWxsZWQgU0RFCmluY2x1ZGUgU2hhcmVkUmVzb3VyY2VDcmVhdGlvbiB2ZXJzaW9uICcwLjEuMDA1JyBjYWxsZWQgU2hhcmVkUmVzb3VyY2UKCmNvZGVzeXN0ZW0gIkFjdENvZGUiOiAnaHR0cDovL3Rlcm1pbm9sb2d5LmhsNy5vcmcvQ29kZVN5c3RlbS92My1BY3RDb2RlJwpjb2Rlc3lzdGVtICJPYnNlcnZhdGlvbiBDYXRlZ29yeSI6ICdodHRwOi8vdGVybWlub2xvZ3kuaGw3Lm9yZy9Db2RlU3lzdGVtL29ic2VydmF0aW9uLWNhdGVnb3J5Jwpjb2Rlc3lzdGVtICJMT0lOQyI6ICdodHRwOi8vbG9pbmMub3JnJyAKY29kZXN5c3RlbSAiVjItMDA3NCI6ICdodHRwOi8vdGVybWlub2xvZ3kuaGw3Lm9yZy9Db2RlU3lzdGVtL3YyLTAwNzQnCgp2YWx1ZXNldCAiSW5wYXRpZW50LCBFbWVyZ2VuY3ksIGFuZCBPYnNlcnZhdGlvbiBMb2NhdGlvbnMiOiAnaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTEzNzYyLjEuNC4xMDQ2LjI2NScKdmFsdWVzZXQgIkVtZXJnZW5jeSBEZXBhcnRtZW50IFZpc2l0IjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzg4My4zLjExNy4xLjcuMS4yOTInCnZhbHVlc2V0ICJFbmNvdW50ZXIgSW5wYXRpZW50IjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzg4My4zLjY2Ni41LjMwNycKdmFsdWVzZXQgIk9ic2VydmF0aW9uIFNlcnZpY2VzIjogJ2h0dHA6Ly9jdHMubmxtLm5paC5nb3YvZmhpci9WYWx1ZVNldC8yLjE2Ljg0MC4xLjExMzc2Mi4xLjQuMTExMS4xNDMnCnZhbHVlc2V0ICJOSFNOIElucGF0aWVudCBFbmNvdW50ZXIgQ2xhc3MgQ29kZXMiOiAnaHR0cDovL2N0cy5ubG0ubmloLmdvdi9maGlyL1ZhbHVlU2V0LzIuMTYuODQwLjEuMTEzNzYyLjEuNC4xMDQ2LjI3NCcKCi8vY29kZSBmb3IgT2JzZXJ2YXRpb24gQ2F0ZWdvcnkKY29kZSAibGFib3JhdG9yeSI6ICdsYWJvcmF0b3J5JyBmcm9tICJPYnNlcnZhdGlvbiBDYXRlZ29yeSIgZGlzcGxheSAnTGFib3JhdG9yeScKY29kZSAic29jaWFsLWhpc3RvcnkiOiAnc29jaWFsLWhpc3RvcnknIGZyb20gIk9ic2VydmF0aW9uIENhdGVnb3J5IiBkaXNwbGF5ICdTb2NpYWwgSGlzdG9yeScKY29kZSAidml0YWwtc2lnbnMiOiAndml0YWwtc2lnbnMnIGZyb20gIk9ic2VydmF0aW9uIENhdGVnb3J5IiBkaXNwbGF5ICdWaXRhbCBTaWducycKY29kZSAiaW1hZ2luZyI6ICdpbWFnaW5nJyBmcm9tICJPYnNlcnZhdGlvbiBDYXRlZ29yeSIgZGlzcGxheSAnSW1hZ2luZycKY29kZSAicHJvY2VkdXJlIjogJ3Byb2NlZHVyZScgZnJvbSAiT2JzZXJ2YXRpb24gQ2F0ZWdvcnkiIGRpc3BsYXkgJ1Byb2NlZHVyZScKY29kZSAic3VydmV5IjogJ3N1cnZleScgZnJvbSAiT2JzZXJ2YXRpb24gQ2F0ZWdvcnkiIGRpc3BsYXkgJ1N1cnZleScKCi8vY29kZSBmb3IgRGlhZ25vc3RpYyBSZXBvcnQgQ2F0ZWdvcnkKY29kZSAiTEFCIjogJ0xBQicgZnJvbSAiVjItMDA3NCIgZGlzcGxheSAnTGFib3JhdG9yeScKY29kZSAiUmFkaW9sb2d5IjogJ0xQMjk2ODQtNScgZnJvbSAiTE9JTkMiIGRpc3BsYXkgJ1JhZGlvbG9neScKY29kZSAiUGF0aG9sb2d5IjogJ0xQNzgzOS02JyBmcm9tICJMT0lOQyIgZGlzcGxheSAnUGF0aG9sb2d5Jwpjb2RlICJDYXJkaW9sb2d5IjogJ0xQMjk3MDgtMicgZnJvbSAiTE9JTkMiIGRpc3BsYXkgJ0NhcmRpb2xvZ3knCgpwYXJhbWV0ZXIgIk1lYXN1cmVtZW50IFBlcmlvZCIgCiAgICBkZWZhdWx0IEludGVydmFsW0AyMDI0LTAxLTAxVDAwOjAwOjAwLjAsIEAyMDI0LTAxLTMxVDAwOjAwOjAwLjApCgpjb250ZXh0IFBhdGllbnQgCgpkZWZpbmUgIlF1YWxpZnlpbmcgRW5jb3VudGVycyBEdXJpbmcgTWVhc3VyZW1lbnQgUGVyaW9kIjoKICggW0VuY291bnRlcjogIkVuY291bnRlciBJbnBhdGllbnQiXQogIHVuaW9uIFtFbmNvdW50ZXI6ICJFbWVyZ2VuY3kgRGVwYXJ0bWVudCBWaXNpdCJdCiAgdW5pb24gW0VuY291bnRlcjogIk9ic2VydmF0aW9uIFNlcnZpY2VzIl0KICB1bmlvbiBbRW5jb3VudGVyOiBjbGFzcyBpbiAiTkhTTiBJbnBhdGllbnQgRW5jb3VudGVyIENsYXNzIENvZGVzIl0pIFF1YWxpZnlpbmdFbmNvdW50ZXJzCiAgd2hlcmUgUXVhbGlmeWluZ0VuY291bnRlcnMuc3RhdHVzIGluIHsnaW4tcHJvZ3Jlc3MnLCAnZmluaXNoZWQnLCAndHJpYWdlZCcsICdvbmxlYXZlJywgJ2VudGVyZWQtaW4tZXJyb3InfQogICAgYW5kIFF1YWxpZnlpbmdFbmNvdW50ZXJzLnBlcmlvZCBvdmVybGFwcyAiTWVhc3VyZW1lbnQgUGVyaW9kIiAKCmRlZmluZSAiRW5jb3VudGVycyB3aXRoIFBhdGllbnQgSG9zcGl0YWwgTG9jYXRpb25zIjoKICAiRW5jb3VudGVycyIgRW5jb3VudGVycwogIHdoZXJlIGV4aXN0cygKICAgIEVuY291bnRlcnMubG9jYXRpb24gRW5jb3VudGVyTG9jYXRpb24KICAgIHdoZXJlIEdsb2JhbC5HZXRMb2NhdGlvbihFbmNvdW50ZXJMb2NhdGlvbi5sb2NhdGlvbikudHlwZSBpbiAiSW5wYXRpZW50LCBFbWVyZ2VuY3ksIGFuZCBPYnNlcnZhdGlvbiBMb2NhdGlvbnMiCiAgICAgIGFuZCBFbmNvdW50ZXJMb2NhdGlvbi5wZXJpb2Qgb3ZlcmxhcHMgRW5jb3VudGVycy5wZXJpb2QKICApCiAgYW5kIEVuY291bnRlcnMuc3RhdHVzIGluIHsnaW4tcHJvZ3Jlc3MnLCAnZmluaXNoZWQnLCAndHJpYWdlZCcsICdvbmxlYXZlJywgJ2VudGVyZWQtaW4tZXJyb3InfQogIGFuZCBFbmNvdW50ZXJzLnBlcmlvZCBvdmVybGFwcyAiTWVhc3VyZW1lbnQgUGVyaW9kIgoKZGVmaW5lICJJbml0aWFsIFBvcHVsYXRpb24iOgogICJRdWFsaWZ5aW5nIEVuY291bnRlcnMgRHVyaW5nIE1lYXN1cmVtZW50IFBlcmlvZCIKICB1bmlvbiAiRW5jb3VudGVycyB3aXRoIFBhdGllbnQgSG9zcGl0YWwgTG9jYXRpb25zIgoKZGVmaW5lICJFbmNvdW50ZXJzIjoKICBbRW5jb3VudGVyXQoKZGVmaW5lICJEaWFnbm9zdGljUmVwb3J0cyI6CiAgW0RpYWdub3N0aWNSZXBvcnRdCgpkZWZpbmUgIk9ic2VydmF0aW9ucyI6CiAgW09ic2VydmF0aW9uXQoKLy9Eb3VibGUgY2hlY2tpbmcgZm9yIElQJ3MgcGVyaW9kIGR1cmluZyBNUCBhcyBJUCBpcyBjcmVhdGVkIG91dCBvZiBxdWFsaWZ5aW5nIGVuY291bnRlcnMsIHdoaWNoIGNoZWNrcyBmb3IgaXQsIAovL2FuZCBlbmNvdW50ZXIncyBsb2NhdGlvbnMsIHdoaWNoIGRvZXNuJ3QKZGVmaW5lICJJUCBFbmNvdW50ZXJzIE92ZXJsYXAgTWVhc3VyZW1lbnQgUGVyaW9kIjoKICAiSW5pdGlhbCBQb3B1bGF0aW9uIiBJUAogIHdoZXJlIElQLnBlcmlvZCBvdmVybGFwcyAiTWVhc3VyZW1lbnQgUGVyaW9kIgoKZGVmaW5lICJHZXQgTG9jYXRpb25zIGZyb20gSVAgRW5jb3VudGVycyBpbiBNZWFzdXJlbWVudCBQZXJpb2QiOgogIGZsYXR0ZW4oIklQIEVuY291bnRlcnMgT3ZlcmxhcCBNZWFzdXJlbWVudCBQZXJpb2QiIEVuY291bnRlcnMKICBsZXQgbG9jYXRpb25FbGVtZW50czogRW5jb3VudGVycy5sb2NhdGlvbgogIHJldHVybgogICAgbG9jYXRpb25FbGVtZW50cyBMRQogICAgbGV0IGxvY2F0aW9uUmVmZXJlbmNlOiBMRS5sb2NhdGlvbgogICAgcmV0dXJuIEdsb2JhbC5HZXRMb2NhdGlvbihsb2NhdGlvblJlZmVyZW5jZSkpCgovLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLy9TdXBwbGVtZW50YWwgRGF0YSBFbGVtZW50Ci8vV2hlbiBGSElSLmNhbm9uaWNhbCB2YWx1ZSBpcyBwcmVzZW50LCBVUyBDb3JlIDMuMS4xIHByb2ZpbGVzIGFyZSB1c2VkCi8vV2hlbiBGSElSLmNhbm9uaWNhbCB2YWx1ZSBpcyBub3QgcHJlc2VudCwgRkhJUiBCYXNlIHByb2ZpbGVzIGFyZSB1c2VkCi8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpkZWZpbmUgIlNERSBDb25kaXRpb24iOgogIFtDb25kaXRpb25dIENvbmRpdGlvbnMgCiAgd2hlcmUgZXhpc3RzKCJJbml0aWFsIFBvcHVsYXRpb24iKQogIHJldHVybiBTaGFyZWRSZXNvdXJjZS5Db25kaXRpb25SZXNvdXJjZShDb25kaXRpb25zLAogIHtGSElSLmNhbm9uaWNhbHt2YWx1ZTogJ2h0dHA6Ly9obDcub3JnL2ZoaXIvdXMvbmhzbi1kcW0vU3RydWN0dXJlRGVmaW5pdGlvbi9hY2gtY29uZGl0aW9uJ319KQoKZGVmaW5lICJTREUgRGV2aWNlIjoKICBbRGV2aWNlXSBEZXZpY2VzIAogIHdoZXJlIGV4aXN0cygiSW5pdGlhbCBQb3B1bGF0aW9uIikKICByZXR1cm4gRGV2aWNlUmVzb3VyY2UoRGV2aWNlcywKICB7RkhJUi5jYW5vbmljYWx7dmFsdWU6ICdodHRwOi8vaGw3Lm9yZy9maGlyL3VzL25oc24tZHFtL1N0cnVjdHVyZURlZmluaXRpb24vYWNoLWRldmljZSd9fSkKCmRlZmluZSAiU0RFIERpYWdub3N0aWNSZXBvcnQgTGFiIjoKICAiRGlhZ25vc3RpY1JlcG9ydHMiIERpYWdub3N0aWNSZXBvcnRzCiAgd2hlcmUgKGV4aXN0cyhEaWFnbm9zdGljUmVwb3J0cy5jYXRlZ29yeSBDYXRlZ29yeSB3aGVyZSBDYXRlZ29yeSB+ICJMQUIiKQogICAgYW5kIGV4aXN0cygKICAgICAgIkluaXRpYWwgUG9wdWxhdGlvbiIgSVAKICAgICAgd2hlcmUgR2xvYmFsLiJOb3JtYWxpemUgSW50ZXJ2YWwiKERpYWdub3N0aWNSZXBvcnRzLmVmZmVjdGl2ZSkgb3ZlcmxhcHMgSVAucGVyaW9kKSkKICByZXR1cm4gU2hhcmVkUmVzb3VyY2UuRGlhZ25vc3RpY1JlcG9ydExhYlJlc291cmNlKERpYWdub3N0aWNSZXBvcnRzLAogIHtGSElSLmNhbm9uaWNhbHt2YWx1ZTogJ2h0dHA6Ly9obDcub3JnL2ZoaXIvdXMvbmhzbi1kcW0vU3RydWN0dXJlRGVmaW5pdGlvbi9hY2gtZGlhZ25vc3RpY3JlcG9ydC1sYWInfX0pCiAKZGVmaW5lICJTREUgRGlhZ25vc3RpY1JlcG9ydCBOb3RlIjoKICAiRGlhZ25vc3RpY1JlcG9ydHMiIERpYWdub3N0aWNSZXBvcnRzCiAgd2hlcmUgKChleGlzdHMoRGlhZ25vc3RpY1JlcG9ydHMuY2F0ZWdvcnkgQ2F0ZWdvcnkgd2hlcmUgQ2F0ZWdvcnkgfiAiUmFkaW9sb2d5IikpCiAgICBvciBleGlzdHMoKERpYWdub3N0aWNSZXBvcnRzLmNhdGVnb3J5IENhdGVnb3J5IHdoZXJlIENhdGVnb3J5IH4gIlBhdGhvbG9neSIpKQogICAgb3IgZXhpc3RzKChEaWFnbm9zdGljUmVwb3J0cy5jYXRlZ29yeSBDYXRlZ29yeSB3aGVyZSBDYXRlZ29yeSB+ICJDYXJkaW9sb2d5IikpKQogICAgYW5kIGV4aXN0cygKICAgICAgIkluaXRpYWwgUG9wdWxhdGlvbiIgSVAKICAgICAgd2hlcmUgR2xvYmFsLiJOb3JtYWxpemUgSW50ZXJ2YWwiKERpYWdub3N0aWNSZXBvcnRzLmVmZmVjdGl2ZSkgb3ZlcmxhcHMgSVAucGVyaW9kKQogIHJldHVybiBEaWFnbm9zdGljUmVwb3J0UmVzb3VyY2UoRGlhZ25vc3RpY1JlcG9ydHMsCiAge0ZISVIuY2Fub25pY2Fse3ZhbHVlOiAnaHR0cDovL2hsNy5vcmcvZmhpci91cy9uaHNuLWRxbS9TdHJ1Y3R1cmVEZWZpbml0aW9uL2FjaC1kaWFnbm9zdGljcmVwb3J0LW5vdGUnfX0pCgpkZWZpbmUgIlNERSBEaWFnbm9zdGljUmVwb3J0IE90aGVycyI6CiAgW0RpYWdub3N0aWNSZXBvcnRdIERpYWdub3N0aWNSZXBvcnRzCiAgd2hlcmUgbm90ICgoZXhpc3RzKERpYWdub3N0aWNSZXBvcnRzLmNhdGVnb3J5IENhdGVnb3J5IHdoZXJlIENhdGVnb3J5IH4gIlJhZGlvbG9neSIpKQogICAgb3IgZXhpc3RzKChEaWFnbm9zdGljUmVwb3J0cy5jYXRlZ29yeSBDYXRlZ29yeSB3aGVyZSBDYXRlZ29yeSB+ICJQYXRob2xvZ3kiKSkKICAgIG9yIGV4aXN0cygoRGlhZ25vc3RpY1JlcG9ydHMuY2F0ZWdvcnkgQ2F0ZWdvcnkgd2hlcmUgQ2F0ZWdvcnkgfiAiQ2FyZGlvbG9neSIpKQogICAgb3IgZXhpc3RzKERpYWdub3N0aWNSZXBvcnRzLmNhdGVnb3J5IENhdGVnb3J5IHdoZXJlIENhdGVnb3J5IH4gIkxBQiIpKQogICAgYW5kIGV4aXN0cygiSW5pdGlhbCBQb3B1bGF0aW9uIiBJUAogICAgICB3aGVyZSBHbG9iYWwuIk5vcm1hbGl6ZSBJbnRlcnZhbCIoRGlhZ25vc3RpY1JlcG9ydHMuZWZmZWN0aXZlKSBvdmVybGFwcyBJUC5wZXJpb2QpCiAgcmV0dXJuIERpYWdub3N0aWNSZXBvcnRSZXNvdXJjZShEaWFnbm9zdGljUmVwb3J0cywKICB7RkhJUi5jYW5vbmljYWx7dmFsdWU6ICdodHRwOi8vaGw3Lm9yZy9maGlyL3VzL25oc24tZHFtL1N0cnVjdHVyZURlZmluaXRpb24vYWNoLWRpYWdub3N0aWNyZXBvcnQnfX0pCgpkZWZpbmUgIlNERSBFbmNvdW50ZXIiOiAKICAiRW5jb3VudGVycyIgRW5jb3VudGVycwogIHdoZXJlIGV4aXN0cygKICAgICJJbml0aWFsIFBvcHVsYXRpb24iIElQCiAgICB3aGVyZSBFbmNvdW50ZXJzLnBlcmlvZCBvdmVybGFwcyBJUC5wZXJpb2QpCiAgcmV0dXJuIEVuY291bnRlclJlc291cmNlKEVuY291bnRlcnMsCiAge0ZISVIuY2Fub25pY2Fse3ZhbHVlOiAnaHR0cDovL2hsNy5vcmcvZmhpci91cy9uaHNuLWRxbS9TdHJ1Y3R1cmVEZWZpbml0aW9uL2FjaC1lbmNvdW50ZXInfX0pCgpkZWZpbmUgIlNERSBMb2NhdGlvbiI6CiAgIkdldCBMb2NhdGlvbnMgZnJvbSBJUCBFbmNvdW50ZXJzIGluIE1lYXN1cmVtZW50IFBlcmlvZCIgTG9jYXRpb25zCiAgd2hlcmUgZXhpc3RzKCJJbml0aWFsIFBvcHVsYXRpb24iKQogIGFuZCBMb2NhdGlvbnMgaXMgbm90IG51bGwKICByZXR1cm4gU2hhcmVkUmVzb3VyY2UuTG9jYXRpb25SZXNvdXJjZShMb2NhdGlvbnMsCiAge0ZISVIuY2Fub25pY2Fse3ZhbHVlOiAnaHR0cDovL2hsNy5vcmcvZmhpci91cy9uaHNuLWRxbS9TdHJ1Y3R1cmVEZWZpbml0aW9uL2FjaC1sb2NhdGlvbid9fSkKIApkZWZpbmUgIlNERSBNZWRpY2F0aW9uIEFkbWluaXN0cmF0aW9uIjoKICBbTWVkaWNhdGlvbkFkbWluaXN0cmF0aW9uXSBNZWRpY2F0aW9uQWRtaW5pc3RyYXRpb25zIAogIHdoZXJlIGV4aXN0cygKICAgICJJbml0aWFsIFBvcHVsYXRpb24iIElQCiAgICB3aGVyZSBHbG9iYWwuIk5vcm1hbGl6ZSBJbnRlcnZhbCIoTWVkaWNhdGlvbkFkbWluaXN0cmF0aW9ucy5lZmZlY3RpdmUpIG92ZXJsYXBzIElQLnBlcmlvZCkKICByZXR1cm4gU2hhcmVkUmVzb3VyY2UuTWVkaWNhdGlvbkFkbWluaXN0cmF0aW9uUmVzb3VyY2UoTWVkaWNhdGlvbkFkbWluaXN0cmF0aW9ucywKICB7RkhJUi5jYW5vbmljYWx7dmFsdWU6ICdodHRwOi8vaGw3Lm9yZy9maGlyL3VzL25oc24tZHFtL1N0cnVjdHVyZURlZmluaXRpb24vYWNoLW1lZGljYXRpb25hZG1pbmlzdHJhdGlvbid9fSkKIApkZWZpbmUgIlNERSBNZWRpY2F0aW9uIFJlcXVlc3QiOgogIFtNZWRpY2F0aW9uUmVxdWVzdF0gTWVkaWNhdGlvblJlcXVlc3RzIAogIHdoZXJlIGV4aXN0cygKICAgICJJbml0aWFsIFBvcHVsYXRpb24iIElQCiAgICB3aGVyZSBNZWRpY2F0aW9uUmVxdWVzdHMuYXV0aG9yZWRPbiBkdXJpbmcgSVAucGVyaW9kKQogIHJldHVybiBTaGFyZWRSZXNvdXJjZS5NZWRpY2F0aW9uUmVxdWVzdFJlc291cmNlKE1lZGljYXRpb25SZXF1ZXN0cywKICB7RkhJUi5jYW5vbmljYWx7dmFsdWU6ICdodHRwOi8vaGw3Lm9yZy9maGlyL3VzL25oc24tZHFtL1N0cnVjdHVyZURlZmluaXRpb24vYWNoLW1lZGljYXRpb25yZXF1ZXN0J319KQoKZGVmaW5lICJTREUgTWVkaWNhdGlvbiI6CiAgKCJTREUgTWVkaWNhdGlvbiBSZXF1ZXN0IgogIHVuaW9uICJTREUgTWVkaWNhdGlvbiBBZG1pbmlzdHJhdGlvbiIpIE1lZFJlcU9yQWRtaW4KICB3aGVyZSBNZWRSZXFPckFkbWluLm1lZGljYXRpb24gaXMgRkhJUi5SZWZlcmVuY2UKICBhbmQgZXhpc3RzKCJJbml0aWFsIFBvcHVsYXRpb24iKSAvL05vIGxvbmdlciBuZWVkIHRvIGNoZWNrIGZvciB0aW1pbmcgaGVyZSBiZWNhdXNlIGl0J3MgY2hlY2tlZCBpbiBTREUgTWVkaWNhdGlvbiBSZXF1ZXN0L0FkbWluaXN0cmlhdGlvbgogIHJldHVybiBTaGFyZWRSZXNvdXJjZS5NZWRpY2F0aW9uUmVzb3VyY2UoR2V0TWVkaWNhdGlvbkZyb20oTWVkUmVxT3JBZG1pbi5tZWRpY2F0aW9uKSwKICB7RkhJUi5jYW5vbmljYWx7dmFsdWU6ICdodHRwOi8vaGw3Lm9yZy9maGlyL3VzL25oc24tZHFtL1N0cnVjdHVyZURlZmluaXRpb24vYWNoLW1lZGljYXRpb24nfX0pCgpkZWZpbmUgIlNERSBPYnNlcnZhdGlvbiBMYWIgQ2F0ZWdvcnkiOgogICJPYnNlcnZhdGlvbnMiIE9ic2VydmF0aW9ucyAKICB3aGVyZSAoZXhpc3RzKE9ic2VydmF0aW9ucy5jYXRlZ29yeSBDYXRlZ29yeSB3aGVyZSBDYXRlZ29yeSB+ICJsYWJvcmF0b3J5IikpCiAgICBhbmQgZXhpc3RzKAogICAgICAiSW5pdGlhbCBQb3B1bGF0aW9uIiBJUAogICAgICB3aGVyZSBHbG9iYWwuIk5vcm1hbGl6ZSBJbnRlcnZhbCIoT2JzZXJ2YXRpb25zLmVmZmVjdGl2ZSkgb3ZlcmxhcHMgSVAucGVyaW9kKQogIHJldHVybiBTaGFyZWRSZXNvdXJjZS5PYnNlcnZhdGlvbkxhYlJlc291cmNlKE9ic2VydmF0aW9ucywKICB7RkhJUi5jYW5vbmljYWx7dmFsdWU6ICdodHRwOi8vaGw3Lm9yZy9maGlyL3VzL25oc24tZHFtL1N0cnVjdHVyZURlZmluaXRpb24vYWNoLW9ic2VydmF0aW9uLWxhYid9fSkKCi8vVml0YWwgU2lnbnMgT2JzZXJ2YXRpb24gaGFzIGl0cyBvd24gcHJvZmlsZSBpbiBGSElSIEJhc2UKZGVmaW5lICJTREUgT2JzZXJ2YXRpb24gVml0YWwgU2lnbnMgQ2F0ZWdvcnkiOgogICJPYnNlcnZhdGlvbnMiIE9ic2VydmF0aW9ucyAKICB3aGVyZSAoZXhpc3RzKE9ic2VydmF0aW9ucy5jYXRlZ29yeSBDYXRlZ29yeSB3aGVyZSBDYXRlZ29yeSB+ICJ2aXRhbC1zaWducyIpKQogICAgYW5kIGV4aXN0cygKICAgICAgIkluaXRpYWwgUG9wdWxhdGlvbiIgSVAKICAgICAgd2hlcmUgR2xvYmFsLiJOb3JtYWxpemUgSW50ZXJ2YWwiKE9ic2VydmF0aW9ucy5lZmZlY3RpdmUpIG92ZXJsYXBzIElQLnBlcmlvZCkKICByZXR1cm4gT2JzZXJ2YXRpb25WaXRhbFNpZ25zUmVzb3VyY2UoT2JzZXJ2YXRpb25zLAogIHtGSElSLmNhbm9uaWNhbHt2YWx1ZTogJ2h0dHA6Ly9obDcub3JnL2ZoaXIvdXMvbmhzbi1kcW0vU3RydWN0dXJlRGVmaW5pdGlvbi9hY2gtb2JzZXJ2YXRpb24tdml0YWxzJ319KQoKLy9EZWZhdWx0aW5nIHRvIGJhc2UgRkhJUiBwcm9maWxlIGFzIHRoZXJlIGFyZSBubyBpbmRpdmlkdWFsIHByb2ZpbGVzIGluIFVTIENvcmUgMy4xLjEgdGhhdCBjb3ZlciB0aGVzZSBPYnNlcnZhdGlvbiBjYXRlZ29yaWVzCmRlZmluZSAiU0RFIE9ic2VydmF0aW9uIENhdGVnb3J5IjoKICAiT2JzZXJ2YXRpb25zIiBPYnNlcnZhdGlvbnMgCiAgd2hlcmUgKChleGlzdHMoT2JzZXJ2YXRpb25zLmNhdGVnb3J5IENhdGVnb3J5IHdoZXJlIENhdGVnb3J5IH4gInNvY2lhbC1oaXN0b3J5IikpCiAgICBvciAoZXhpc3RzKE9ic2VydmF0aW9ucy5jYXRlZ29yeSBDYXRlZ29yeSB3aGVyZSBDYXRlZ29yeSB+ICJzdXJ2ZXkiKSkKICAgIG9yIChleGlzdHMoT2JzZXJ2YXRpb25zLmNhdGVnb3J5IENhdGVnb3J5IHdoZXJlIENhdGVnb3J5IH4gImltYWdpbmciKSkKICAgIG9yIChleGlzdHMoT2JzZXJ2YXRpb25zLmNhdGVnb3J5IENhdGVnb3J5IHdoZXJlIENhdGVnb3J5IH4gInByb2NlZHVyZSIpKSkKICAgIGFuZCBleGlzdHMoCiAgICAgICJJbml0aWFsIFBvcHVsYXRpb24iIElQCiAgICAgIHdoZXJlIEdsb2JhbC4iTm9ybWFsaXplIEludGVydmFsIihPYnNlcnZhdGlvbnMuZWZmZWN0aXZlKSBvdmVybGFwcyBJUC5wZXJpb2QpCiAgcmV0dXJuIE9ic2VydmF0aW9uUmVzb3VyY2UoT2JzZXJ2YXRpb25zLAogIHtGSElSLmNhbm9uaWNhbHt2YWx1ZTogJ2h0dHA6Ly9obDcub3JnL2ZoaXIvdXMvbmhzbi1kcW0vU3RydWN0dXJlRGVmaW5pdGlvbi9hY2gtb2JzZXJ2YXRpb24nfX0pCgpkZWZpbmUgIlNERSBDb3ZlcmFnZSI6IAoJW0NvdmVyYWdlXSBDb3ZlcmFnZXMKICB3aGVyZSBleGlzdHMoCiAgICAiSW5pdGlhbCBQb3B1bGF0aW9uIiBJUAogICAgd2hlcmUgQ292ZXJhZ2VzLnBlcmlvZCBvdmVybGFwcyBJUC5wZXJpb2QpCiAgcmV0dXJuIFNoYXJlZFJlc291cmNlLkNvdmVyYWdlUmVzb3VyY2UoQ292ZXJhZ2VzLAogIHtGSElSLmNhbm9uaWNhbHt2YWx1ZTogJ2h0dHA6Ly9obDcub3JnL2ZoaXIvdXMvbmhzbi1kcW0vU3RydWN0dXJlRGVmaW5pdGlvbi9hY2gtY292ZXJhZ2UnfX0pCgpkZWZpbmUgIlNERSBQcm9jZWR1cmUiOgogIFtQcm9jZWR1cmVdIFByb2NlZHVyZXMgCiAgd2hlcmUgZXhpc3RzKAogICAgIkluaXRpYWwgUG9wdWxhdGlvbiIgSVAKICAgIHdoZXJlIEdsb2JhbC4iTm9ybWFsaXplIEludGVydmFsIihQcm9jZWR1cmVzLnBlcmZvcm1lZCkgb3ZlcmxhcHMgSVAucGVyaW9kKQogIHJldHVybiBTaGFyZWRSZXNvdXJjZS5Qcm9jZWR1cmVSZXNvdXJjZShQcm9jZWR1cmVzLAogIHtGSElSLmNhbm9uaWNhbHt2YWx1ZTogJ2h0dHA6Ly9obDcub3JnL2ZoaXIvdXMvbmhzbi1kcW0vU3RydWN0dXJlRGVmaW5pdGlvbi9hY2gtcHJvY2VkdXJlJ319KQoKZGVmaW5lICJTREUgU3BlY2ltZW4iOgogIFtTcGVjaW1lbl0gU3BlY2ltZW5zCiAgd2hlcmUgZXhpc3RzKAogICAgIkluaXRpYWwgUG9wdWxhdGlvbiIgSVAKICAgIHdoZXJlIEdsb2JhbC4iTm9ybWFsaXplIEludGVydmFsIihTcGVjaW1lbnMuY29sbGVjdGlvbi5jb2xsZWN0ZWQpIG92ZXJsYXBzIElQLnBlcmlvZAogICkKICByZXR1cm4gU2hhcmVkUmVzb3VyY2UuU3BlY2ltZW5SZXNvdXJjZShTcGVjaW1lbnMsCiAge0ZISVIuY2Fub25pY2Fse3ZhbHVlOiAnaHR0cDovL2hsNy5vcmcvZmhpci91cy9uaHNuLWRxbS9TdHJ1Y3R1cmVEZWZpbml0aW9uL2FjaC1zcGVjaW1lbid9fSkKCmRlZmluZSAiU0RFIFNlcnZpY2UgUmVxdWVzdCI6CiAgW1NlcnZpY2VSZXF1ZXN0XSBTZXJ2aWNlUmVxdWVzdHMKICB3aGVyZSBleGlzdHMoIkluaXRpYWwgUG9wdWxhdGlvbiIgSVAKICAgIHdoZXJlIFNlcnZpY2VSZXF1ZXN0cy5hdXRob3JlZE9uIGR1cmluZyBJUC5wZXJpb2QpCiAgcmV0dXJuIFNoYXJlZFJlc291cmNlLlNlcnZpY2VSZXF1ZXN0UmVzb3VyY2UoU2VydmljZVJlcXVlc3RzLAogIHtGSElSLmNhbm9uaWNhbHt2YWx1ZTogJ2h0dHA6Ly9obDcub3JnL2ZoaXIvdXMvbmhzbi1kcW0vU3RydWN0dXJlRGVmaW5pdGlvbi9hY2gtc2VydmljZXJlcXVlc3QnfX0pCgpkZWZpbmUgIlNERSBNaW5pbWFsIFBhdGllbnQiOgogIFBhdGllbnQgcAogIHJldHVybiBTaGFyZWRSZXNvdXJjZS5QYXRpZW50UmVzb3VyY2UocCwKICB7RkhJUi5jYW5vbmljYWx7dmFsdWU6ICdodHRwOi8vaGw3Lm9yZy9maGlyL3VzL25oc24tZHFtL1N0cnVjdHVyZURlZmluaXRpb24vY3Jvc3MtbWVhc3VyZS1wYXRpZW50J319KQoKLy8KLy9GdW5jdGlvbnMKLy8KZGVmaW5lIGZ1bmN0aW9uICJHZXRNZWRpY2F0aW9uRnJvbSIoY2hvaWNlIENob2ljZTxGSElSLkNvZGVhYmxlQ29uY2VwdCwgRkhJUi5SZWZlcmVuY2U+KToKICBjYXNlCiAgICB3aGVuIGNob2ljZSBpcyBGSElSLlJlZmVyZW5jZSB0aGVuCiAgICAgIEdldE1lZGljYXRpb24oY2hvaWNlIGFzIEZISVIuUmVmZXJlbmNlKQogICAgZWxzZQogICAgICBudWxsCiAgZW5kCgpkZWZpbmUgZnVuY3Rpb24gIkdldE1lZGljYXRpb24iKHJlZmVyZW5jZSBSZWZlcmVuY2UgKToKICBzaW5nbGV0b24gZnJvbSAoCiAgICBbTWVkaWNhdGlvbl0gTWVkaWNhdGlvbnMKICAgIHdoZXJlIE1lZGljYXRpb25zLmlkID0gR2xvYmFsLkdldElkKHJlZmVyZW5jZS5yZWZlcmVuY2UpCiAgKQoKLy8KLy9NZWFzdXJlIFNwZWNpZmljIFJlc291cmNlIENyZWF0aW9uIEZ1bmN0aW9ucwovLwpkZWZpbmUgZnVuY3Rpb24gRGV2aWNlVWRpQ2Fycmllcih1ZGlDYXJyaWVyIExpc3Q8RkhJUi5EZXZpY2UuVWRpQ2Fycmllcj4pOgogIHVkaUNhcnJpZXIgdQogIHJldHVybiBGSElSLkRldmljZS5VZGlDYXJyaWVyewogICAgZGV2aWNlSWRlbnRpZmllcjogdS5kZXZpY2VJZGVudGlmaWVyLAogICAgaXNzdWVyOiB1Lmlzc3VlciwKICAgIGp1cmlzZGljdGlvbjogdS5qdXJpc2RpY3Rpb24sCiAgICBjYXJyaWVyQUlEQzogdS5jYXJyaWVyQUlEQywKICAgIGNhcnJpZXJIUkY6IHUuY2FycmllckhSRiwKICAgIGVudHJ5VHlwZTogdS5lbnRyeVR5cGUKICB9CgpkZWZpbmUgZnVuY3Rpb24gRGV2aWNlRGV2aWNlTmFtZShkZXZpY2VOYW1lIExpc3Q8RkhJUi5EZXZpY2UuRGV2aWNlTmFtZT4pOgogIGRldmljZU5hbWUgZAogIHJldHVybiBGSElSLkRldmljZS5EZXZpY2VOYW1lewogICAgbmFtZTogZC5uYW1lLAogICAgdHlwZTogZC50eXBlCiAgfQoKZGVmaW5lIGZ1bmN0aW9uIERldmljZVNwZWNpYWxpemF0aW9uKHNwZWNpYWxpemF0aW9uIExpc3Q8RkhJUi5EZXZpY2UuU3BlY2lhbGl6YXRpb24+KToKICBzcGVjaWFsaXphdGlvbiBzCiAgcmV0dXJuIEZISVIuRGV2aWNlLlNwZWNpYWxpemF0aW9uewogICAgc3lzdGVtVHlwZTogcy5zeXN0ZW1UeXBlLAogICAgdmVyc2lvbjogcy52ZXJzaW9uCiAgfQoKZGVmaW5lIGZ1bmN0aW9uIERldmljZVZlcnNpb24odmVyc2lvbiBMaXN0PEZISVIuRGV2aWNlLlZlcnNpb24+KToKICB2ZXJzaW9uIHYKICByZXR1cm4gRkhJUi5EZXZpY2UuVmVyc2lvbnsKICAgIHR5cGU6IHYudHlwZSwKICAgIGNvbXBvbmVudDogdi5jb21wb25lbnQsCiAgICB2YWx1ZTogdi52YWx1ZQogIH0KCmRlZmluZSBmdW5jdGlvbiBEZXZpY2VQcm9wZXJ0eShkZXZpY2VQcm9wZXJ0eSBMaXN0PEZISVIuRGV2aWNlLlByb3BlcnR5Pik6CiAgZGV2aWNlUHJvcGVydHkgZAogIHJldHVybiBGSElSLkRldmljZS5Qcm9wZXJ0eXsKICAgIGlkOiBkLmlkLAogICAgdHlwZTogZC50eXBlLAogICAgdmFsdWVRdWFudGl0eTogZC52YWx1ZVF1YW50aXR5LAogICAgdmFsdWVDb2RlOiBkLnZhbHVlQ29kZQogIH0KCmRlZmluZSBmdW5jdGlvbiBEZXZpY2VSZXNvdXJjZShkZXZpY2UgRGV2aWNlLCBwcm9maWxlVVJMcyBMaXN0PEZISVIuY2Fub25pY2FsPik6CiAgZGV2aWNlIGQKICByZXR1cm4gRGV2aWNlewogICAgaWQ6IEZISVIuaWR7dmFsdWU6ICdMQ1ItJyArIGQuaWR9LAogICAgbWV0YTogU2hhcmVkUmVzb3VyY2UuTWV0YUVsZW1lbnQoZCwgcHJvZmlsZVVSTHMpLAogICAgZXh0ZW5zaW9uOiBkLmV4dGVuc2lvbiwKICAgIGRlZmluaXRpb246IGQuZGVmaW5pdGlvbiwKICAgIHVkaUNhcnJpZXI6IERldmljZVVkaUNhcnJpZXIoZC51ZGlDYXJyaWVyKSwKICAgIHN0YXR1czogZC5zdGF0dXMsCiAgICBzdGF0dXNSZWFzb246IGQuc3RhdHVzUmVhc29uLAogICAgZGlzdGluY3RJZGVudGlmaWVyOiBkLmRpc3RpbmN0SWRlbnRpZmllciwKICAgIG1hbnVmYWN0dXJlcjogZC5tYW51ZmFjdHVyZXIsCiAgICBtYW51ZmFjdHVyZURhdGU6IGQubWFudWZhY3R1cmVEYXRlLAogICAgZXhwaXJhdGlvbkRhdGU6IGQuZXhwaXJhdGlvbkRhdGUsCiAgICBsb3ROdW1iZXI6IGQubG90TnVtYmVyLAogICAgc2VyaWFsTnVtYmVyOiBkLnNlcmlhbE51bWJlciwKICAgIGRldmljZU5hbWU6IERldmljZURldmljZU5hbWUoZC5kZXZpY2VOYW1lKSwKICAgIG1vZGVsTnVtYmVyOiBkLm1vZGVsTnVtYmVyLAogICAgcGFydE51bWJlcjogZC5wYXJ0TnVtYmVyLAogICAgdHlwZTogZC50eXBlLAogICAgc3BlY2lhbGl6YXRpb246IERldmljZVNwZWNpYWxpemF0aW9uKGQuc3BlY2lhbGl6YXRpb24pLAogICAgdmVyc2lvbjogRGV2aWNlVmVyc2lvbihkLnZlcnNpb24pLAogICAgcHJvcGVydHk6IERldmljZVByb3BlcnR5KGQucHJvcGVydHkpLAogICAgcGF0aWVudDogZC5wYXRpZW50LAogICAgb3duZXI6IGQub3duZXIsCiAgICBjb250YWN0OiBkLmNvbnRhY3QsCiAgICBsb2NhdGlvbjogZC5sb2NhdGlvbiwKICAgIHVybDogZC51cmwsCiAgICBub3RlOiBkLm5vdGUsCiAgICBzYWZldHk6IGQuc2FmZXR5LAogICAgcGFyZW50OiBkLnBhcmVudAogIH0KCmRlZmluZSBmdW5jdGlvbiBEaWFnbm9zdGljUmVwb3J0UmVzb3VyY2UoZGlhZ25vc3RpY1JlcG9ydCBEaWFnbm9zdGljUmVwb3J0LCBwcm9maWxlVVJMcyBMaXN0PEZISVIuY2Fub25pY2FsPik6CiAgZGlhZ25vc3RpY1JlcG9ydCBkCiAgcmV0dXJuIERpYWdub3N0aWNSZXBvcnR7CiAgICBpZDogRkhJUi5pZHt2YWx1ZTogJ0xDUi0nICsgZC5pZH0sCiAgICBtZXRhOiBTaGFyZWRSZXNvdXJjZS5NZXRhRWxlbWVudChkLCBwcm9maWxlVVJMcyksCiAgICBleHRlbnNpb246IGQuZXh0ZW5zaW9uLAogICAgYmFzZWRPbjogZC5iYXNlZE9uLAogICAgc3RhdHVzOiBkLnN0YXR1cywKICAgIGNhdGVnb3J5OiBkLmNhdGVnb3J5LAogICAgY29kZTogZC5jb2RlLAogICAgc3ViamVjdDogZC5zdWJqZWN0LAogICAgZW5jb3VudGVyOiBkLmVuY291bnRlciwKICAgIGVmZmVjdGl2ZTogZC5lZmZlY3RpdmUsCiAgICBpc3N1ZWQ6IGQuaXNzdWVkLAogICAgcGVyZm9ybWVyOiBkLnBlcmZvcm1lciwKICAgIHJlc3VsdHNJbnRlcnByZXRlcjogZC5yZXN1bHRzSW50ZXJwcmV0ZXIsCiAgICBzcGVjaW1lbjogZC5zcGVjaW1lbiwKICAgIHJlc3VsdDogZC5yZXN1bHQsCiAgICBjb25jbHVzaW9uOiBkLmNvbmNsdXNpb24sCiAgICBjb25jbHVzaW9uQ29kZTogZC5jb25jbHVzaW9uQ29kZQogIH0KCmRlZmluZSBmdW5jdGlvbiBFbmNvdW50ZXJSZXNvdXJjZShlbmNvdW50ZXIgRW5jb3VudGVyLCBwcm9maWxlVVJMcyBMaXN0PEZISVIuY2Fub25pY2FsPik6CiAgZW5jb3VudGVyIGUKICByZXR1cm4gRW5jb3VudGVyewogICAgaWQ6IEZISVIuaWR7dmFsdWU6ICdMQ1ItJyArIGUuaWR9LAogICAgbWV0YTogU2hhcmVkUmVzb3VyY2UuTWV0YUVsZW1lbnQoZSwgcHJvZmlsZVVSTHMpLAogICAgZXh0ZW5zaW9uOiBlLmV4dGVuc2lvbiwKICAgIGlkZW50aWZpZXI6IFNoYXJlZFJlc291cmNlLkVuY291bnRlcklkZW50aWZpZXIoZS5pZGVudGlmaWVyKSwKICAgIHN0YXR1czogZS5zdGF0dXMsCiAgICBzdGF0dXNIaXN0b3J5OiBTaGFyZWRSZXNvdXJjZS5FbmNvdW50ZXJTdGF0dXNIaXN0b3J5KGUuc3RhdHVzSGlzdG9yeSksCiAgICBjbGFzczogZS5jbGFzcywKICAgIGNsYXNzSGlzdG9yeTogU2hhcmVkUmVzb3VyY2UuRW5jb3VudGVyQ2xhc3NIaXN0b3J5KGUuY2xhc3NIaXN0b3J5KSwKICAgIHR5cGU6IGUudHlwZSwKICAgIHNlcnZpY2VUeXBlOiBlLnNlcnZpY2VUeXBlLAogICAgcHJpb3JpdHk6IGUucHJpb3JpdHksCiAgICBzdWJqZWN0OiBlLnN1YmplY3QsCiAgICBwZXJpb2Q6IGUucGVyaW9kLAogICAgbGVuZ3RoOiBlLmxlbmd0aCwKICAgIHJlYXNvbkNvZGU6IGUucmVhc29uQ29kZSwKICAgIHJlYXNvblJlZmVyZW5jZTogZS5yZWFzb25SZWZlcmVuY2UsCiAgICBkaWFnbm9zaXM6IFNoYXJlZFJlc291cmNlLkVuY291bnRlckRpYWdub3NpcyhlLmRpYWdub3NpcyksCiAgICBhY2NvdW50OiBlLmFjY291bnQsCiAgICBob3NwaXRhbGl6YXRpb246IFNoYXJlZFJlc291cmNlLkVuY291bnRlckhvc3BpdGFsaXphdGlvbihlLmhvc3BpdGFsaXphdGlvbiksCiAgICBsb2NhdGlvbjogU2hhcmVkUmVzb3VyY2UuRW5jb3VudGVyTG9jYXRpb24oZS5sb2NhdGlvbiksCiAgICBwYXJ0T2Y6IGUucGFydE9mCiAgfQoKZGVmaW5lIGZ1bmN0aW9uIE9ic2VydmF0aW9uUmVzb3VyY2Uob2JzZXJ2YXRpb24gT2JzZXJ2YXRpb24sIHByb2ZpbGVVUkxzIExpc3Q8RkhJUi5jYW5vbmljYWw+KToKICBvYnNlcnZhdGlvbiBvCiAgcmV0dXJuIE9ic2VydmF0aW9uewogICAgaWQ6IEZISVIuaWQge3ZhbHVlOiAnTENSLScgKyBvLmlkfSwKICAgIG1ldGE6IFNoYXJlZFJlc291cmNlLk1ldGFFbGVtZW50KG8sIHByb2ZpbGVVUkxzKSwKICAgIGV4dGVuc2lvbjogby5leHRlbnNpb24sCiAgICBwYXJ0T2Y6IG8ucGFydE9mLAogICAgc3RhdHVzOiBvLnN0YXR1cywKICAgIGNhdGVnb3J5OiBvLmNhdGVnb3J5LAogICAgY29kZTogby5jb2RlLAogICAgc3ViamVjdDogby5zdWJqZWN0LAogICAgZm9jdXM6IG8uZm9jdXMsCiAgICBlbmNvdW50ZXI6IG8uZW5jb3VudGVyLAogICAgZWZmZWN0aXZlOiBvLmVmZmVjdGl2ZSwKICAgIGlzc3VlZDogby5pc3N1ZWQsCiAgICBwZXJmb3JtZXI6IG8ucGVyZm9ybWVyLAogICAgdmFsdWU6IG8udmFsdWUsCiAgICBkYXRhQWJzZW50UmVhc29uOiBvLmRhdGFBYnNlbnRSZWFzb24sCiAgICBpbnRlcnByZXRhdGlvbjogby5pbnRlcnByZXRhdGlvbiwKICAgIG5vdGU6IG8ubm90ZSwKICAgIGJvZHlTaXRlOiBvLmJvZHlTaXRlLAogICAgbWV0aG9kOiBvLm1ldGhvZCwKICAgIHNwZWNpbWVuOiBvLnNwZWNpbWVuLAogICAgZGV2aWNlOiBvLmRldmljZSwKICAgIHJlZmVyZW5jZVJhbmdlOiBTaGFyZWRSZXNvdXJjZS5PYnNlcnZhdGlvblJlZmVyZW5jZVJhbmdlKG8ucmVmZXJlbmNlUmFuZ2UpLAogICAgaGFzTWVtYmVyOiBvLmhhc01lbWJlciwKICAgIGRlcml2ZWRGcm9tOiBvLmRlcml2ZWRGcm9tLAogICAgY29tcG9uZW50OiBTaGFyZWRSZXNvdXJjZS5PYnNlcnZhdGlvbkNvbXBvbmVudChvLmNvbXBvbmVudCkKICB9CgpkZWZpbmUgZnVuY3Rpb24gT2JzZXJ2YXRpb25WaXRhbFNpZ25zQ29kaW5nKGNvZGluZyBMaXN0PENvZGluZz4pOgogIGNvZGluZyBjCiAgcmV0dXJuIENvZGluZ3sKICAgIHN5c3RlbTogYy5zeXN0ZW0sCiAgICB2ZXJzaW9uOiBjLnZlcnNpb24sCiAgICBjb2RlOiBjLmNvZGUsCiAgICBkaXNwbGF5OiBjLmRpc3BsYXksCiAgICB1c2VyU2VsZWN0ZWQ6IGMudXNlclNlbGVjdGVkCiAgfQoKZGVmaW5lIGZ1bmN0aW9uIE9ic2VydmF0aW9uVml0YWxTaWduc0NhdGVnb3J5KGNhdGVnb3J5IExpc3Q8Q29kZWFibGVDb25jZXB0Pik6CiAgY2F0ZWdvcnkgYwogIHJldHVybiBDb2RlYWJsZUNvbmNlcHR7CiAgICBjb2Rpbmc6IE9ic2VydmF0aW9uVml0YWxTaWduc0NvZGluZyhjLmNvZGluZyksCiAgICB0ZXh0OiBjLnRleHQKICB9CgpkZWZpbmUgZnVuY3Rpb24gT2JzZXJ2YXRpb25WaXRhbFNpZ25zQ29tcG9uZW50KGNvbXBvbmVudCBMaXN0PEZISVIuT2JzZXJ2YXRpb24uQ29tcG9uZW50Pik6CiAgY29tcG9uZW50IGMKICByZXR1cm4gRkhJUi5PYnNlcnZhdGlvbi5Db21wb25lbnR7CiAgICBjb2RlOiBjLmNvZGUsCiAgICB2YWx1ZTogYy52YWx1ZSwKICAgIGRhdGFBYnNlbnRSZWFzb246IGMuZGF0YUFic2VudFJlYXNvbiwKICAgIGludGVycHJldGF0aW9uOiBjLmludGVycHJldGF0aW9uLAogICAgcmVmZXJlbmNlUmFuZ2U6IFNoYXJlZFJlc291cmNlLk9ic2VydmF0aW9uUmVmZXJlbmNlUmFuZ2UoYy5yZWZlcmVuY2VSYW5nZSkKICB9CgpkZWZpbmUgZnVuY3Rpb24gT2JzZXJ2YXRpb25WaXRhbFNpZ25zUmVzb3VyY2Uob2JzZXJ2YXRpb24gT2JzZXJ2YXRpb24sIHByb2ZpbGVVUkxzIExpc3Q8RkhJUi5jYW5vbmljYWw+KToKICBvYnNlcnZhdGlvbiBvCiAgcmV0dXJuIE9ic2VydmF0aW9uewogICAgaWQ6IEZISVIuaWQge3ZhbHVlOiAnTENSLScgKyBvLmlkfSwKICAgIG1ldGE6IFNoYXJlZFJlc291cmNlLk1ldGFFbGVtZW50KG8sIHByb2ZpbGVVUkxzKSwKICAgIGV4dGVuc2lvbjogby5leHRlbnNpb24sCiAgICBwYXJ0T2Y6IG8ucGFydE9mLAogICAgc3RhdHVzOiBvLnN0YXR1cywKICAgIGNhdGVnb3J5OiBPYnNlcnZhdGlvblZpdGFsU2lnbnNDYXRlZ29yeShvLmNhdGVnb3J5KSwKICAgIGNvZGU6IG8uY29kZSwKICAgIHN1YmplY3Q6IG8uc3ViamVjdCwKICAgIGZvY3VzOiBvLmZvY3VzLAogICAgZW5jb3VudGVyOiBvLmVuY291bnRlciwKICAgIGVmZmVjdGl2ZTogby5lZmZlY3RpdmUsCiAgICBpc3N1ZWQ6IG8uaXNzdWVkLAogICAgcGVyZm9ybWVyOiBvLnBlcmZvcm1lciwKICAgIHZhbHVlOiBvLnZhbHVlLAogICAgZGF0YUFic2VudFJlYXNvbjogby5kYXRhQWJzZW50UmVhc29uLAogICAgaW50ZXJwcmV0YXRpb246IG8uaW50ZXJwcmV0YXRpb24sCiAgICBub3RlOiBvLm5vdGUsCiAgICBib2R5U2l0ZTogby5ib2R5U2l0ZSwKICAgIG1ldGhvZDogby5tZXRob2QsCiAgICBzcGVjaW1lbjogby5zcGVjaW1lbiwKICAgIGRldmljZTogby5kZXZpY2UsCiAgICByZWZlcmVuY2VSYW5nZTogU2hhcmVkUmVzb3VyY2UuT2JzZXJ2YXRpb25SZWZlcmVuY2VSYW5nZShvLnJlZmVyZW5jZVJhbmdlKSwKICAgIGhhc01lbWJlcjogby5oYXNNZW1iZXIsCiAgICBkZXJpdmVkRnJvbTogby5kZXJpdmVkRnJvbSwKICAgIGNvbXBvbmVudDogT2JzZXJ2YXRpb25WaXRhbFNpZ25zQ29tcG9uZW50KG8uY29tcG9uZW50KQogIH0=",
    "contentType": "text/cql"
  } ],
  "name": "NHSNdQMAcuteCareHospitalInitialPopulation",
  "type": "{:coding [{:system \\\"http://terminology.hl7.org/CodeSystem/library-type\\\", :code \\\"logic-library\\\"}]}",
  "experimental": null,
  "resourceType": "Library",
  "title": null,
  "package_version": "1.0.0-ballot",
  "extension": [ {
    "url": "http://hl7.org/fhir/StructureDefinition/cqf-cqlOptions",
    "valueReference": {
      "reference": "#ach-options"
    }
  } ],
  "contained": [ {
    "id": "ach-options",
    "parameter": [ {
      "name": "translatorVersion",
      "valueString": "3.5.1"
    }, {
      "name": "option",
      "valueString": "EnableDateRangeOptimization"
    }, {
      "name": "option",
      "valueString": "EnableAnnotations"
    }, {
      "name": "option",
      "valueString": "EnableLocators"
    }, {
      "name": "option",
      "valueString": "DisableListDemotion"
    }, {
      "name": "option",
      "valueString": "DisableListPromotion"
    }, {
      "name": "analyzeDataRequirements",
      "valueBoolean": false
    }, {
      "name": "collapseDataRequirements",
      "valueBoolean": true
    }, {
      "name": "compatibilityLevel",
      "valueString": "1.5"
    }, {
      "name": "enableCqlOnly",
      "valueBoolean": false
    }, {
      "name": "errorLevel",
      "valueString": "Info"
    }, {
      "name": "signatureLevel",
      "valueString": "None"
    }, {
      "name": "validateUnits",
      "valueBoolean": true
    }, {
      "name": "verifyOnly",
      "valueBoolean": false
    } ],
    "resourceType": "Parameters"
  } ],
  "status": "active",
  "id": "de1543d8-6814-4e0a-8f1f-4cccbb913a22",
  "kind": null,
  "url": "http://hl7.org/fhir/us/nhsn-dqm/Library/NHSNdQMAcuteCareHospitalInitialPopulationLibrary",
  "identifier": [ {
    "value": "urn:oid:2.25.316204395913842452684237438142819890580.28.2",
    "system": "urn:ietf:rfc:3986"
  } ],
  "version": "1.0.0-ballot",
  "relatedArtifact": [ {
    "type": "depends-on",
    "display": "FHIR model information",
    "resource": "http://fhir.org/guides/cqf/common/Library/FHIR-ModelInfo|4.0.1"
  }, {
    "type": "depends-on",
    "display": "Library FHIRHelpers",
    "resource": "http://fhir.org/guides/cqf/common/Library/FHIRHelpers|4.0.1"
  }, {
    "type": "depends-on",
    "display": "Library Global",
    "resource": "http://hl7.org/fhir/us/cqfmeasures/Library/MATGlobalCommonFunctions"
  }, {
    "type": "depends-on",
    "display": "Library SDE",
    "resource": "http://hl7.org/fhir/us/cqfmeasures/Library/SupplementalDataElements"
  }, {
    "type": "depends-on",
    "display": "Code system ActCode",
    "resource": "http://terminology.hl7.org/CodeSystem/v3-ActCode"
  }, {
    "type": "depends-on",
    "display": "Code system Observation Category",
    "resource": "http://terminology.hl7.org/CodeSystem/observation-category"
  }, {
    "type": "depends-on",
    "display": "Code system LOINC",
    "resource": "http://loinc.org"
  }, {
    "type": "depends-on",
    "display": "Code system V2-0074",
    "resource": "http://terminology.hl7.org/CodeSystem/v2-0074"
  }, {
    "type": "depends-on",
    "display": "Value set Inpatient, Emergency, and Observation Locations",
    "resource": "http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1046.265"
  }, {
    "type": "depends-on",
    "display": "Value set Emergency Department Visit",
    "resource": "http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.117.1.7.1.292"
  }, {
    "type": "depends-on",
    "display": "Value set Encounter Inpatient",
    "resource": "http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.666.5.307"
  }, {
    "type": "depends-on",
    "display": "Value set Observation Services",
    "resource": "http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1111.143"
  }, {
    "type": "depends-on",
    "display": "Value set NHSN Inpatient Encounter Class Codes",
    "resource": "http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1046.274"
  } ],
  "contact": [ {
    "name": "HL7 International / Public Health",
    "telecom": [ {
      "value": "http://www.hl7.org/Special/committees/pher",
      "system": "url"
    } ]
  } ],
  "parameter": [ {
    "max": "1",
    "min": 0,
    "use": "in",
    "name": "Measurement Period",
    "type": "Period"
  }, {
    "max": "1",
    "min": 0,
    "use": "out",
    "name": "Patient",
    "type": "Patient"
  }, {
    "max": "*",
    "min": 0,
    "use": "out",
    "name": "Qualifying Encounters During Measurement Period",
    "type": "Encounter"
  }, {
    "max": "*",
    "min": 0,
    "use": "out",
    "name": "Encounters",
    "type": "Encounter"
  }, {
    "max": "*",
    "min": 0,
    "use": "out",
    "name": "Encounters with Patient Hospital Locations",
    "type": "Encounter"
  }, {
    "max": "*",
    "min": 0,
    "use": "out",
    "name": "Initial Population",
    "type": "Encounter"
  }, {
    "max": "*",
    "min": 0,
    "use": "out",
    "name": "DiagnosticReports",
    "type": "DiagnosticReport"
  }, {
    "max": "*",
    "min": 0,
    "use": "out",
    "name": "Observations",
    "type": "Observation"
  }, {
    "max": "*",
    "min": 0,
    "use": "out",
    "name": "IP Encounters Overlap Measurement Period",
    "type": "Encounter"
  }, {
    "max": "*",
    "min": 0,
    "use": "out",
    "name": "Get Locations from IP Encounters in Measurement Period",
    "type": "Location"
  }, {
    "max": "*",
    "min": 0,
    "use": "out",
    "name": "SDE Condition",
    "type": "Condition"
  }, {
    "max": "*",
    "min": 0,
    "use": "out",
    "name": "SDE Device",
    "type": "Device"
  }, {
    "max": "*",
    "min": 0,
    "use": "out",
    "name": "SDE DiagnosticReport Lab",
    "type": "DiagnosticReport"
  }, {
    "max": "*",
    "min": 0,
    "use": "out",
    "name": "SDE DiagnosticReport Note",
    "type": "DiagnosticReport"
  }, {
    "max": "*",
    "min": 0,
    "use": "out",
    "name": "SDE DiagnosticReport Others",
    "type": "DiagnosticReport"
  }, {
    "max": "*",
    "min": 0,
    "use": "out",
    "name": "SDE Encounter",
    "type": "Encounter"
  }, {
    "max": "*",
    "min": 0,
    "use": "out",
    "name": "SDE Location",
    "type": "Location"
  }, {
    "max": "*",
    "min": 0,
    "use": "out",
    "name": "SDE Medication Administration",
    "type": "MedicationAdministration"
  }, {
    "max": "*",
    "min": 0,
    "use": "out",
    "name": "SDE Medication Request",
    "type": "MedicationRequest"
  }, {
    "max": "*",
    "min": 0,
    "use": "out",
    "name": "SDE Medication",
    "type": "Medication"
  }, {
    "max": "*",
    "min": 0,
    "use": "out",
    "name": "SDE Observation Lab Category",
    "type": "Observation"
  }, {
    "max": "*",
    "min": 0,
    "use": "out",
    "name": "SDE Observation Vital Signs Category",
    "type": "Observation"
  }, {
    "max": "*",
    "min": 0,
    "use": "out",
    "name": "SDE Observation Category",
    "type": "Observation"
  }, {
    "max": "*",
    "min": 0,
    "use": "out",
    "name": "SDE Coverage",
    "type": "Coverage"
  }, {
    "max": "*",
    "min": 0,
    "use": "out",
    "name": "SDE Procedure",
    "type": "Procedure"
  }, {
    "max": "*",
    "min": 0,
    "use": "out",
    "name": "SDE Specimen",
    "type": "Specimen"
  }, {
    "max": "*",
    "min": 0,
    "use": "out",
    "name": "SDE Service Request",
    "type": "ServiceRequest"
  }, {
    "max": "1",
    "min": 0,
    "use": "out",
    "name": "SDE Minimal Patient",
    "type": "Patient"
  } ]
}