packages feed

casa-reoc-0.1.0.0: src/ReOC/Help.hs

{-# LANGUAGE LambdaCase #-}
{-# LANGUAGE OverloadedStrings #-}
{-# OPTIONS_GHC -Wall #-}

-- | The help text and label of each field of the form types.
module ReOC.Help (
  fieldHelp,
  fieldLabel,
  fieldOf,
) where

import Data.Text (Text)
import ReOC.Data.Field (Field (..))

-- | The help text of a field: what to enter.
fieldHelp :: Field -> Text
fieldHelp = \case
  PersonFullName -> "The person’s full name, as on their identification."
  PersonArn -> "The person’s CASA aviation reference number (ARN)."
  PersonPhoneNumber -> "The person’s Australian phone number."
  PersonEmailAddress -> "The person’s email address."
  AddressStreetAddress -> "The lines of the street address, such as unit and street; one or more."
  AddressSuburb -> "The suburb or town."
  AddressStateOrTerritory -> "The state or territory."
  AddressPostcode -> "The four-digit postcode."
  OperationalHeadquartersAtRegisteredOffice -> "The operational headquarters is at the registered office."
  OperationalHeadquartersOperationalHeadquartersAddress -> "The operational headquarters is at another address."
  CompanyCompanyName -> "The company’s name, without “Pty Ltd” (CASA Form 101-02, question 1)."
  CompanyAbn -> "The company’s Australian business number (ABN)."
  CompanyArn -> "The company’s CASA aviation reference number (ARN)."
  CompanyRegisteredOffice -> "The address of the company’s registered office."
  CompanyOperationalHeadquarters -> "Where the operational headquarters is: at the registered office, or at another address."
  CompanyPhoneNumber -> "The phone number of the operational headquarters."
  CompanyEmailAddress -> "The email address of the operational headquarters."
  CompanyBusinessName -> "A registered business name that the company trades under, if any."
  FlightTerminationNoFlightTerminationSystem -> "The RPA has no dedicated flight termination system."
  FlightTerminationFlightTerminationSystem -> "A description of the RPA’s flight termination system, such as a parachute and how it is deployed."
  EmergencyActionSituation -> "The emergency, such as loss of command link."
  EmergencyActionResponse -> "What the RPA does in the emergency, and what the remote pilot must do."
  EmergencyActionActionSteps -> "Further steps the remote pilot takes, one for each item; may be none."
  RPATypeRpaMake -> "The manufacturer of the RPA, such as DJI."
  RPATypeRpaModel -> "The model of the RPA, such as Matrice 350 RTK."
  RPATypeShortName -> "A short name for the type, such as DJI M350 RTK, which must fit the make and model cell of question 27."
  RPATypeCategory -> "The category of the RPA: aeroplane, helicopter, multirotor or powered-lift."
  RPATypeMaximumGrossWeight -> "The maximum gross (take-off) weight in grams, from 1 g to 25 kg."
  RPATypeUserManual -> "The title of the manufacturer’s manual that the RPA is operated in accordance with."
  RPATypeTransponderCarriage -> "Whether the RPA is fitted with a transponder or ADS-B (out)."
  RPATypeFlightTermination -> "Whether the RPA has a dedicated flight termination system."
  RPATypeInspectionItems -> "What the periodic inspection of the RPA covers; one or more items."
  RPATypeBeforeFlight -> "Requirements before flight that supplement the manufacturer’s instructions; may be none."
  RPATypeBatteryWarnings -> "How the RPA warns of and responds to low battery, if it does."
  RPATypeEmergencyActions -> "The emergency actions for the type; may be none."
  EquipmentEquipmentDescription -> "What the equipment is, such as a remote controller."
  EquipmentSerialNumber -> "The serial number of the equipment."
  AircraftSerialNumber -> "The serial number of the RPA."
  AircraftAssociatedEquipment -> "Equipment used with the RPA, such as cameras and remote controllers; may be none."
  OperatedTypeRpaType -> "The type of RPA."
  OperatedTypeAirframes -> "Each RPA of the type; one or more."
  RePLOriginPplTheory -> "The initial RePL was obtained through private pilot licence theory."
  RePLOriginRePLTrainingOrganisation -> "The name of the RePL training organisation where the initial RePL was obtained."
  OtherReOCRolesNoOtherReOCRoles -> "The person holds no such position for another ReOC holder."
  OtherReOCRolesOtherReOCRolesHeld -> "The positions held for other ReOC holders, and how the person will fulfil the duties of each."
  NomineePerson -> "The person nominated."
  NomineeOtherQualifications -> "Qualifications other than a RePL, such as licences and certificates; may be none."
  NomineeAviationExperience -> "A summary of the person’s aviation experience, for the manual’s list of key personnel."
  ChiefExecutiveNominee -> "The person nominated as CEO."
  ChiefExecutiveDirectorStatus -> "Whether the CEO is the sole director, a director, or not a director of the company."
  ChiefExecutiveManagementExperience -> "The CEO’s management experience (question 7), if given."
  CRPNomineeCrpIsCEO -> "The CEO is also the chief remote pilot."
  CRPNomineeCrpNominated -> "Another person is nominated as chief remote pilot."
  ChiefPilotCrpNominee -> "Who is the chief remote pilot: the CEO, or another person (question 8)."
  ChiefPilotRePLOrigin -> "How the chief remote pilot obtained their initial RePL (question 9)."
  ChiefPilotRpaHistory -> "The chief remote pilot’s RPA history and experience, including total RPA flying time, RPA operated and relevant qualifications (question 10)."
  ChiefPilotOtherReOCRoles -> "Whether the chief remote pilot is also chief remote pilot or chief RePL instructor for other ReOC holders (question 11)."
  ChiefPilotRadio -> "The chief remote pilot’s qualification to use an aeronautical radio."
  MCNomineeMcIsCEO -> "The CEO is also the maintenance controller."
  MCNomineeMcIsCRP -> "The chief remote pilot is also the maintenance controller."
  MCNomineeMcNominated -> "Another person is nominated as maintenance controller."
  KeyPersonnelChiefExecutive -> "The chief executive officer (CEO)."
  KeyPersonnelChiefPilot -> "The chief remote pilot (CRP)."
  KeyPersonnelMcNominee -> "Who is the maintenance controller (MC)."
  OperatorCompany -> "The company that applies for the ReOC."
  OperatorKeyPersonnel -> "The key personnel."
  OperatorFleet -> "The types of RPA operated, with each RPA of each type; one to eight types."
  ContactPersonFullName -> "The contact person’s full name."
  ContactPersonPosition -> "The contact person’s position in the company."
  ContactPersonPhoneNumber -> "The contact person’s phone number."
  ContactPersonEmailAddress -> "The contact person’s email address."
  PrimaryContactApplicantIsPrimaryContact -> "The applicant is the primary contact (question 2)."
  PrimaryContactPrimaryContactPerson -> "Another person is the primary contact (question 3)."
  HistoryAnswerNoHistory -> "No."
  HistoryAnswerHistoryDisclosed -> "Yes, with the details, including dates, actions, charges, convictions and imprisonment (question 23)."
  PersonnelHistoryActionTaken -> "Whether any action has been taken, or is being taken, against the applicant or any nominated personnel, or they have been refused an aviation-related licence, certificate or authority (question 19)."
  PersonnelHistoryTransportLicenceRefused -> "Whether the applicant or any nominated personnel has been refused, or had suspended, a transport-related licence or certificate (question 20)."
  PersonnelHistoryCriminalConviction -> "Whether the applicant or any nominated personnel has a criminal conviction or finding of guilt less than ten years old (question 21)."
  PersonnelHistorySuspensionPending -> "Whether suspension or cancellation action is pending on any aviation licence the applicant or any nominated personnel holds (question 22)."
  RegulatoryActionReocSuspendedOrCancelled -> "Whether the applicant or any nominated personnel has had a ReOC, or equivalent, suspended or cancelled (question 25)."
  RegulatoryActionTypeOfAction -> "The type of action taken (question 26)."
  RegulatoryActionAuthorisationAction -> "The action taken against an authorisation, if any (question 26)."
  RegulatoryActionActionDate -> "The date the action was taken (question 26)."
  RegulatoryActionActionDetails -> "The details of the regulatory action (question 26)."
  RegulatoryHistoryNoRegulatoryAction -> "No regulatory action by CASA or a foreign authority in the last ten years."
  RegulatoryHistoryRegulatoryActionTaken -> "Regulatory action has been taken in the last ten years, with its details."
  DeclarantFullName -> "The full name of the person making the declaration."
  DeclarantRole -> "The capacity in which they make it, such as director."
  DeclarationDeclaredByCEO -> "The CEO makes the declaration."
  DeclarationDeclaredByResponsibleManager -> "The full name of the responsible manager who makes the declaration."
  DeclarationDeclaredByAgent -> "The full name of the agent, under a power of attorney, who makes the declaration."
  DeclarationDeclaredByOther -> "Another person makes the declaration, in the capacity given."
  WrittenSignatureWrittenSignatureImage -> "The contents of a PNG image of the signature."
  WrittenSignatureWrittenSignatureFile -> "The path of a PNG image of the signature, read when the documents are written."
  ApplicationFormPrimaryContact -> "Who is the primary contact for the application (questions 2 and 3)."
  ApplicationFormPersonnelHistory -> "The history of the applicant and nominated personnel (questions 19 to 23)."
  ApplicationFormRegulatoryHistory -> "Regulatory action in the last ten years (questions 24 to 26)."
  ApplicationFormProceduresLibrary -> "Whether a procedures library is submitted with the application (question 30, item 2)."
  ApplicationFormOtherDocuments -> "Other documents submitted, one line each; at most six (question 30)."
  ApplicationFormDeclaration -> "Who makes the declaration (questions 31 and 32)."
  ApplicationFormSignature -> "The written signature of the declarant, if the form is to be signed."
  VersionMajorVersion -> "The major version, such as 1 in version 1.0."
  VersionMinorVersion -> "The minor version, such as 0 in version 1.0."
  FirstIssueVersion -> "The version of the first issue, usually 1.0."
  FirstIssueIssueDate -> "The month of the first issue."
  FirstIssueEffective -> "When the first issue takes effect, such as on issue of the ReOC."
  FirstIssueParts -> "The parts of the manual issued, usually all."
  FirstIssueDetails -> "A description of the issue."
  RevisionVersionIncrement -> "Whether the revision is a major or a minor revision."
  RevisionMonthsAfter -> "The number of months after the entry before it."
  RevisionEffective -> "When the revision takes effect."
  RevisionParts -> "The parts of the manual revised."
  RevisionDetails -> "A description of the revision."
  PoliciesRecencyFlights -> "The number of flights a remote pilot must have made in the recency period."
  PoliciesRecencyDays -> "The recency period, in days."
  PoliciesRefresherMonths -> "The longest interval between refresher training, in months."
  PoliciesAlcoholHours -> "The number of hours without alcohol before duty."
  PoliciesRestHours -> "The number of consecutive hours of rest before duty."
  PoliciesDutyHours -> "The longest duty period, in hours."
  PoliciesInspectionMonths -> "The longest interval between periodic inspections, in months."
  PoliciesInspectionHours -> "The longest interval between periodic inspections, in flight hours."
  PoliciesBatteryReserve -> "The battery remaining, as a percentage, that each flight is planned to land with."
  PoliciesBackupFrequency -> "The longest interval between backups of records."
  PoliciesIndependentReviewYears -> "The longest interval between independent reviews, in years."
  PoliciesCheckingMonths -> "The longest interval between checking events of a remote pilot, in months."
  RiskAssessmentRiskLikelihood -> "The likelihood of the risk."
  RiskAssessmentRiskConsequence -> "The consequence of the risk."
  RiskHazard -> "The hazard."
  RiskRiskDescription -> "What could happen because of the hazard."
  RiskExistingControls -> "The controls already in place, with the manual sections that set them out."
  RiskInitialRisk -> "The risk with the existing controls."
  RiskAdditionalControls -> "The additional controls."
  RiskResidualRisk -> "The risk with the additional controls."
  RiskRiskOwner -> "The key position that owns the risk."
  RiskDateEntered -> "The month the risk was entered in the register."
  RiskReviewMonths -> "The number of months after entry that the risk is reviewed, at most 12."
  OperationsManualFirstIssue -> "The first entry in the amendment record."
  OperationsManualRevisions -> "Later entries in the amendment record, in order; may be none."
  OperationsManualServices -> "The services the operator provides; one or more."
  OperationsManualPolicies -> "The limits that the operator sets."
  OperationsManualRiskRegister -> "The entries of the risk register; one or more."
  OperationsManualCrew -> "Whether the operator conducts only solo operations, or multi-crew operations as well."
  OperationsManualPilots -> "Whether the chief remote pilot is the operator’s only remote pilot."
  CRINomineeCriIsCEO -> "The CEO is also the chief RePL instructor."
  CRINomineeCriIsCRP -> "The chief remote pilot is also the chief RePL instructor."
  CRINomineeCriIsMC -> "The maintenance controller is also the chief RePL instructor."
  CRINomineeCriNominated -> "Another person is nominated as chief RePL instructor."
  RePLHoldingHoldsRePLForEachType -> "The chief RePL instructor holds a RePL for each type of RPA used in training (question 14)."
  RePLHoldingRePLHoldingIntent -> "How and when the chief RePL instructor will hold a RePL for each type (question 17)."
  TeachingQualificationTeachingQualificationHeld -> "The details of the teaching qualification held, such as a Certificate IV in Training and Assessment (question 15)."
  TeachingQualificationTeachingQualificationIntent -> "How and when the chief RePL instructor will obtain a teaching qualification (question 17)."
  OperationalExperienceHasOperationalExperience -> "The chief RePL instructor has 20 hours of non-training operational experience for each category trained (question 16)."
  OperationalExperienceOperationalExperienceIntent -> "How and when the chief RePL instructor will gain the experience (question 17)."
  OperationalExperienceOperationalExperienceNotApplicable -> "The chief RePL instructor does not provide practical instruction (question 16)."
  TrainingCourseCourseKind -> "The type of course: initial, upgrade in the same category, or upgrade to a different category."
  TrainingCourseTrainingRPA -> "The type of RPA used in the course, with each RPA of that type."
  TrainingCourseComplexities -> "The complexities of the course; one or more."
  TrainingArrangementsTheoryVenues -> "Where theory training is conducted; one or more."
  TrainingArrangementsPracticalAreas -> "Where practical training is conducted; one or more."
  TrainingArrangementsMaxStudentsPerCourse -> "The most students in a course."
  TrainingArrangementsMaxStudentsPerInstructor -> "The most students flying at once for each instructor."
  TrainingArrangementsTakeover -> "How an instructor takes immediate control of a training RPA."
  TrainingArrangementsTheory -> "How theory lessons are delivered."
  TrainingArrangementsExam -> "How the supervised theory examination is sat."
  TrainingArrangementsExamPassMark -> "The pass mark of the theory examination, as a percentage, at least 70."
  TrainingArrangementsExaminer -> "Who conducts flight tests."
  TrainingArrangementsSimulator -> "The simulator used in training, if one is used."
  TrainingMaterialCriNominee -> "Who is the chief RePL instructor (question 13)."
  TrainingMaterialRePLHolding -> "Whether the chief RePL instructor holds a RePL for each type of RPA used in training (question 14)."
  TrainingMaterialTeachingQualification -> "The chief RePL instructor’s teaching qualification (question 15)."
  TrainingMaterialOperationalExperience -> "The chief RePL instructor’s non-training operational experience (question 16)."
  TrainingMaterialCriOtherReOCRoles -> "Whether the chief RePL instructor holds positions for other ReOC holders (question 18)."
  TrainingMaterialTrainingCourses -> "The RePL training courses; one to nine."
  TrainingMaterialTrainingArrangements -> "How RePL training is conducted."
  ReOCOperator -> "The operator: the company, its key personnel and its RPA."
  ReOCApplicationForm -> "The answers to the application form that are not part of the operator."
  ReOCOperationsManual -> "The parts of the operations manual that are not part of the operator."
  ReOCMaybeTrainingMaterial -> "RePL training, if it is applied for."

-- | The label of a field, from its name.
fieldLabel :: Field -> Text
fieldLabel = \case
  PersonFullName -> "full name"
  PersonArn -> "ARN"
  PersonPhoneNumber -> "phone number"
  PersonEmailAddress -> "email address"
  AddressStreetAddress -> "street address"
  AddressSuburb -> "suburb"
  AddressStateOrTerritory -> "state or territory"
  AddressPostcode -> "postcode"
  OperationalHeadquartersAtRegisteredOffice -> "at registered office"
  OperationalHeadquartersOperationalHeadquartersAddress -> "operational headquarters address"
  CompanyCompanyName -> "company name"
  CompanyAbn -> "ABN"
  CompanyArn -> "ARN"
  CompanyRegisteredOffice -> "registered office"
  CompanyOperationalHeadquarters -> "operational headquarters"
  CompanyPhoneNumber -> "phone number"
  CompanyEmailAddress -> "email address"
  CompanyBusinessName -> "business name"
  FlightTerminationNoFlightTerminationSystem -> "no flight termination system"
  FlightTerminationFlightTerminationSystem -> "flight termination system"
  EmergencyActionSituation -> "situation"
  EmergencyActionResponse -> "response"
  EmergencyActionActionSteps -> "action steps"
  RPATypeRpaMake -> "RPA make"
  RPATypeRpaModel -> "RPA model"
  RPATypeShortName -> "short name"
  RPATypeCategory -> "category"
  RPATypeMaximumGrossWeight -> "maximum gross weight"
  RPATypeUserManual -> "user manual"
  RPATypeTransponderCarriage -> "transponder carriage"
  RPATypeFlightTermination -> "flight termination"
  RPATypeInspectionItems -> "inspection items"
  RPATypeBeforeFlight -> "before flight"
  RPATypeBatteryWarnings -> "battery warnings"
  RPATypeEmergencyActions -> "emergency actions"
  EquipmentEquipmentDescription -> "equipment description"
  EquipmentSerialNumber -> "serial number"
  AircraftSerialNumber -> "serial number"
  AircraftAssociatedEquipment -> "associated equipment"
  OperatedTypeRpaType -> "RPA type"
  OperatedTypeAirframes -> "airframes"
  RePLOriginPplTheory -> "PPL theory"
  RePLOriginRePLTrainingOrganisation -> "RePL training organisation"
  OtherReOCRolesNoOtherReOCRoles -> "no other ReOC roles"
  OtherReOCRolesOtherReOCRolesHeld -> "other ReOC roles held"
  NomineePerson -> "person"
  NomineeOtherQualifications -> "other qualifications"
  NomineeAviationExperience -> "aviation experience"
  ChiefExecutiveNominee -> "nominee"
  ChiefExecutiveDirectorStatus -> "director status"
  ChiefExecutiveManagementExperience -> "management experience"
  CRPNomineeCrpIsCEO -> "CRP is CEO"
  CRPNomineeCrpNominated -> "CRP nominated"
  ChiefPilotCrpNominee -> "CRP nominee"
  ChiefPilotRePLOrigin -> "RePL origin"
  ChiefPilotRpaHistory -> "RPA history"
  ChiefPilotOtherReOCRoles -> "other ReOC roles"
  ChiefPilotRadio -> "radio"
  MCNomineeMcIsCEO -> "MC is CEO"
  MCNomineeMcIsCRP -> "MC is CRP"
  MCNomineeMcNominated -> "MC nominated"
  KeyPersonnelChiefExecutive -> "chief executive"
  KeyPersonnelChiefPilot -> "chief pilot"
  KeyPersonnelMcNominee -> "MC nominee"
  OperatorCompany -> "company"
  OperatorKeyPersonnel -> "key personnel"
  OperatorFleet -> "fleet"
  ContactPersonFullName -> "full name"
  ContactPersonPosition -> "position"
  ContactPersonPhoneNumber -> "phone number"
  ContactPersonEmailAddress -> "email address"
  PrimaryContactApplicantIsPrimaryContact -> "applicant is primary contact"
  PrimaryContactPrimaryContactPerson -> "primary contact person"
  HistoryAnswerNoHistory -> "no history"
  HistoryAnswerHistoryDisclosed -> "history disclosed"
  PersonnelHistoryActionTaken -> "action taken"
  PersonnelHistoryTransportLicenceRefused -> "transport licence refused"
  PersonnelHistoryCriminalConviction -> "criminal conviction"
  PersonnelHistorySuspensionPending -> "suspension pending"
  RegulatoryActionReocSuspendedOrCancelled -> "ReOC suspended or cancelled"
  RegulatoryActionTypeOfAction -> "type of action"
  RegulatoryActionAuthorisationAction -> "authorisation action"
  RegulatoryActionActionDate -> "action date"
  RegulatoryActionActionDetails -> "action details"
  RegulatoryHistoryNoRegulatoryAction -> "no regulatory action"
  RegulatoryHistoryRegulatoryActionTaken -> "regulatory action taken"
  DeclarantFullName -> "full name"
  DeclarantRole -> "role"
  DeclarationDeclaredByCEO -> "declared by CEO"
  DeclarationDeclaredByResponsibleManager -> "declared by responsible manager"
  DeclarationDeclaredByAgent -> "declared by agent"
  DeclarationDeclaredByOther -> "declared by other"
  WrittenSignatureWrittenSignatureImage -> "written signature image"
  WrittenSignatureWrittenSignatureFile -> "written signature file"
  ApplicationFormPrimaryContact -> "primary contact"
  ApplicationFormPersonnelHistory -> "personnel history"
  ApplicationFormRegulatoryHistory -> "regulatory history"
  ApplicationFormProceduresLibrary -> "procedures library"
  ApplicationFormOtherDocuments -> "other documents"
  ApplicationFormDeclaration -> "declaration"
  ApplicationFormSignature -> "signature"
  VersionMajorVersion -> "major version"
  VersionMinorVersion -> "minor version"
  FirstIssueVersion -> "version"
  FirstIssueIssueDate -> "issue date"
  FirstIssueEffective -> "effective"
  FirstIssueParts -> "parts"
  FirstIssueDetails -> "details"
  RevisionVersionIncrement -> "version increment"
  RevisionMonthsAfter -> "months after"
  RevisionEffective -> "effective"
  RevisionParts -> "parts"
  RevisionDetails -> "details"
  PoliciesRecencyFlights -> "recency flights"
  PoliciesRecencyDays -> "recency days"
  PoliciesRefresherMonths -> "refresher months"
  PoliciesAlcoholHours -> "alcohol hours"
  PoliciesRestHours -> "rest hours"
  PoliciesDutyHours -> "duty hours"
  PoliciesInspectionMonths -> "inspection months"
  PoliciesInspectionHours -> "inspection hours"
  PoliciesBatteryReserve -> "battery reserve"
  PoliciesBackupFrequency -> "backup frequency"
  PoliciesIndependentReviewYears -> "independent review years"
  PoliciesCheckingMonths -> "checking months"
  RiskAssessmentRiskLikelihood -> "risk likelihood"
  RiskAssessmentRiskConsequence -> "risk consequence"
  RiskHazard -> "hazard"
  RiskRiskDescription -> "risk description"
  RiskExistingControls -> "existing controls"
  RiskInitialRisk -> "initial risk"
  RiskAdditionalControls -> "additional controls"
  RiskResidualRisk -> "residual risk"
  RiskRiskOwner -> "risk owner"
  RiskDateEntered -> "date entered"
  RiskReviewMonths -> "review months"
  OperationsManualFirstIssue -> "first issue"
  OperationsManualRevisions -> "revisions"
  OperationsManualServices -> "services"
  OperationsManualPolicies -> "policies"
  OperationsManualRiskRegister -> "risk register"
  OperationsManualCrew -> "crew"
  OperationsManualPilots -> "pilots"
  CRINomineeCriIsCEO -> "CRI is CEO"
  CRINomineeCriIsCRP -> "CRI is CRP"
  CRINomineeCriIsMC -> "CRI is MC"
  CRINomineeCriNominated -> "CRI nominated"
  RePLHoldingHoldsRePLForEachType -> "holds RePL for each type"
  RePLHoldingRePLHoldingIntent -> "RePL holding intent"
  TeachingQualificationTeachingQualificationHeld -> "teaching qualification held"
  TeachingQualificationTeachingQualificationIntent -> "teaching qualification intent"
  OperationalExperienceHasOperationalExperience -> "has operational experience"
  OperationalExperienceOperationalExperienceIntent -> "operational experience intent"
  OperationalExperienceOperationalExperienceNotApplicable -> "operational experience not applicable"
  TrainingCourseCourseKind -> "course kind"
  TrainingCourseTrainingRPA -> "training RPA"
  TrainingCourseComplexities -> "complexities"
  TrainingArrangementsTheoryVenues -> "theory venues"
  TrainingArrangementsPracticalAreas -> "practical areas"
  TrainingArrangementsMaxStudentsPerCourse -> "max students per course"
  TrainingArrangementsMaxStudentsPerInstructor -> "max students per instructor"
  TrainingArrangementsTakeover -> "takeover"
  TrainingArrangementsTheory -> "theory"
  TrainingArrangementsExam -> "exam"
  TrainingArrangementsExamPassMark -> "exam pass mark"
  TrainingArrangementsExaminer -> "examiner"
  TrainingArrangementsSimulator -> "simulator"
  TrainingMaterialCriNominee -> "CRI nominee"
  TrainingMaterialRePLHolding -> "RePL holding"
  TrainingMaterialTeachingQualification -> "teaching qualification"
  TrainingMaterialOperationalExperience -> "operational experience"
  TrainingMaterialCriOtherReOCRoles -> "CRI other ReOC roles"
  TrainingMaterialTrainingCourses -> "training courses"
  TrainingMaterialTrainingArrangements -> "training arrangements"
  ReOCOperator -> "operator"
  ReOCApplicationForm -> "application form"
  ReOCOperationsManual -> "operations manual"
  ReOCMaybeTrainingMaterial -> "maybe training material"

-- | The data type of a field: the form type that it is a field or constructor of.
fieldOf :: Field -> Text
fieldOf = \case
  PersonFullName -> "Person'"
  PersonArn -> "Person'"
  PersonPhoneNumber -> "Person'"
  PersonEmailAddress -> "Person'"
  AddressStreetAddress -> "Address'"
  AddressSuburb -> "Address'"
  AddressStateOrTerritory -> "Address'"
  AddressPostcode -> "Address'"
  OperationalHeadquartersAtRegisteredOffice -> "OperationalHeadquarters'"
  OperationalHeadquartersOperationalHeadquartersAddress -> "OperationalHeadquarters'"
  CompanyCompanyName -> "Company'"
  CompanyAbn -> "Company'"
  CompanyArn -> "Company'"
  CompanyRegisteredOffice -> "Company'"
  CompanyOperationalHeadquarters -> "Company'"
  CompanyPhoneNumber -> "Company'"
  CompanyEmailAddress -> "Company'"
  CompanyBusinessName -> "Company'"
  FlightTerminationNoFlightTerminationSystem -> "FlightTermination'"
  FlightTerminationFlightTerminationSystem -> "FlightTermination'"
  EmergencyActionSituation -> "EmergencyAction'"
  EmergencyActionResponse -> "EmergencyAction'"
  EmergencyActionActionSteps -> "EmergencyAction'"
  RPATypeRpaMake -> "RPAType'"
  RPATypeRpaModel -> "RPAType'"
  RPATypeShortName -> "RPAType'"
  RPATypeCategory -> "RPAType'"
  RPATypeMaximumGrossWeight -> "RPAType'"
  RPATypeUserManual -> "RPAType'"
  RPATypeTransponderCarriage -> "RPAType'"
  RPATypeFlightTermination -> "RPAType'"
  RPATypeInspectionItems -> "RPAType'"
  RPATypeBeforeFlight -> "RPAType'"
  RPATypeBatteryWarnings -> "RPAType'"
  RPATypeEmergencyActions -> "RPAType'"
  EquipmentEquipmentDescription -> "Equipment'"
  EquipmentSerialNumber -> "Equipment'"
  AircraftSerialNumber -> "Aircraft'"
  AircraftAssociatedEquipment -> "Aircraft'"
  OperatedTypeRpaType -> "OperatedType'"
  OperatedTypeAirframes -> "OperatedType'"
  RePLOriginPplTheory -> "RePLOrigin'"
  RePLOriginRePLTrainingOrganisation -> "RePLOrigin'"
  OtherReOCRolesNoOtherReOCRoles -> "OtherReOCRoles'"
  OtherReOCRolesOtherReOCRolesHeld -> "OtherReOCRoles'"
  NomineePerson -> "Nominee'"
  NomineeOtherQualifications -> "Nominee'"
  NomineeAviationExperience -> "Nominee'"
  ChiefExecutiveNominee -> "ChiefExecutive'"
  ChiefExecutiveDirectorStatus -> "ChiefExecutive'"
  ChiefExecutiveManagementExperience -> "ChiefExecutive'"
  CRPNomineeCrpIsCEO -> "CRPNominee'"
  CRPNomineeCrpNominated -> "CRPNominee'"
  ChiefPilotCrpNominee -> "ChiefPilot'"
  ChiefPilotRePLOrigin -> "ChiefPilot'"
  ChiefPilotRpaHistory -> "ChiefPilot'"
  ChiefPilotOtherReOCRoles -> "ChiefPilot'"
  ChiefPilotRadio -> "ChiefPilot'"
  MCNomineeMcIsCEO -> "MCNominee'"
  MCNomineeMcIsCRP -> "MCNominee'"
  MCNomineeMcNominated -> "MCNominee'"
  KeyPersonnelChiefExecutive -> "KeyPersonnel'"
  KeyPersonnelChiefPilot -> "KeyPersonnel'"
  KeyPersonnelMcNominee -> "KeyPersonnel'"
  OperatorCompany -> "Operator'"
  OperatorKeyPersonnel -> "Operator'"
  OperatorFleet -> "Operator'"
  ContactPersonFullName -> "ContactPerson'"
  ContactPersonPosition -> "ContactPerson'"
  ContactPersonPhoneNumber -> "ContactPerson'"
  ContactPersonEmailAddress -> "ContactPerson'"
  PrimaryContactApplicantIsPrimaryContact -> "PrimaryContact'"
  PrimaryContactPrimaryContactPerson -> "PrimaryContact'"
  HistoryAnswerNoHistory -> "HistoryAnswer'"
  HistoryAnswerHistoryDisclosed -> "HistoryAnswer'"
  PersonnelHistoryActionTaken -> "PersonnelHistory'"
  PersonnelHistoryTransportLicenceRefused -> "PersonnelHistory'"
  PersonnelHistoryCriminalConviction -> "PersonnelHistory'"
  PersonnelHistorySuspensionPending -> "PersonnelHistory'"
  RegulatoryActionReocSuspendedOrCancelled -> "RegulatoryAction'"
  RegulatoryActionTypeOfAction -> "RegulatoryAction'"
  RegulatoryActionAuthorisationAction -> "RegulatoryAction'"
  RegulatoryActionActionDate -> "RegulatoryAction'"
  RegulatoryActionActionDetails -> "RegulatoryAction'"
  RegulatoryHistoryNoRegulatoryAction -> "RegulatoryHistory'"
  RegulatoryHistoryRegulatoryActionTaken -> "RegulatoryHistory'"
  DeclarantFullName -> "Declarant'"
  DeclarantRole -> "Declarant'"
  DeclarationDeclaredByCEO -> "Declaration'"
  DeclarationDeclaredByResponsibleManager -> "Declaration'"
  DeclarationDeclaredByAgent -> "Declaration'"
  DeclarationDeclaredByOther -> "Declaration'"
  WrittenSignatureWrittenSignatureImage -> "WrittenSignature'"
  WrittenSignatureWrittenSignatureFile -> "WrittenSignature'"
  ApplicationFormPrimaryContact -> "ApplicationForm'"
  ApplicationFormPersonnelHistory -> "ApplicationForm'"
  ApplicationFormRegulatoryHistory -> "ApplicationForm'"
  ApplicationFormProceduresLibrary -> "ApplicationForm'"
  ApplicationFormOtherDocuments -> "ApplicationForm'"
  ApplicationFormDeclaration -> "ApplicationForm'"
  ApplicationFormSignature -> "ApplicationForm'"
  VersionMajorVersion -> "Version'"
  VersionMinorVersion -> "Version'"
  FirstIssueVersion -> "FirstIssue'"
  FirstIssueIssueDate -> "FirstIssue'"
  FirstIssueEffective -> "FirstIssue'"
  FirstIssueParts -> "FirstIssue'"
  FirstIssueDetails -> "FirstIssue'"
  RevisionVersionIncrement -> "Revision'"
  RevisionMonthsAfter -> "Revision'"
  RevisionEffective -> "Revision'"
  RevisionParts -> "Revision'"
  RevisionDetails -> "Revision'"
  PoliciesRecencyFlights -> "Policies'"
  PoliciesRecencyDays -> "Policies'"
  PoliciesRefresherMonths -> "Policies'"
  PoliciesAlcoholHours -> "Policies'"
  PoliciesRestHours -> "Policies'"
  PoliciesDutyHours -> "Policies'"
  PoliciesInspectionMonths -> "Policies'"
  PoliciesInspectionHours -> "Policies'"
  PoliciesBatteryReserve -> "Policies'"
  PoliciesBackupFrequency -> "Policies'"
  PoliciesIndependentReviewYears -> "Policies'"
  PoliciesCheckingMonths -> "Policies'"
  RiskAssessmentRiskLikelihood -> "RiskAssessment'"
  RiskAssessmentRiskConsequence -> "RiskAssessment'"
  RiskHazard -> "Risk'"
  RiskRiskDescription -> "Risk'"
  RiskExistingControls -> "Risk'"
  RiskInitialRisk -> "Risk'"
  RiskAdditionalControls -> "Risk'"
  RiskResidualRisk -> "Risk'"
  RiskRiskOwner -> "Risk'"
  RiskDateEntered -> "Risk'"
  RiskReviewMonths -> "Risk'"
  OperationsManualFirstIssue -> "OperationsManual'"
  OperationsManualRevisions -> "OperationsManual'"
  OperationsManualServices -> "OperationsManual'"
  OperationsManualPolicies -> "OperationsManual'"
  OperationsManualRiskRegister -> "OperationsManual'"
  OperationsManualCrew -> "OperationsManual'"
  OperationsManualPilots -> "OperationsManual'"
  CRINomineeCriIsCEO -> "CRINominee'"
  CRINomineeCriIsCRP -> "CRINominee'"
  CRINomineeCriIsMC -> "CRINominee'"
  CRINomineeCriNominated -> "CRINominee'"
  RePLHoldingHoldsRePLForEachType -> "RePLHolding'"
  RePLHoldingRePLHoldingIntent -> "RePLHolding'"
  TeachingQualificationTeachingQualificationHeld -> "TeachingQualification'"
  TeachingQualificationTeachingQualificationIntent -> "TeachingQualification'"
  OperationalExperienceHasOperationalExperience -> "OperationalExperience'"
  OperationalExperienceOperationalExperienceIntent -> "OperationalExperience'"
  OperationalExperienceOperationalExperienceNotApplicable -> "OperationalExperience'"
  TrainingCourseCourseKind -> "TrainingCourse'"
  TrainingCourseTrainingRPA -> "TrainingCourse'"
  TrainingCourseComplexities -> "TrainingCourse'"
  TrainingArrangementsTheoryVenues -> "TrainingArrangements'"
  TrainingArrangementsPracticalAreas -> "TrainingArrangements'"
  TrainingArrangementsMaxStudentsPerCourse -> "TrainingArrangements'"
  TrainingArrangementsMaxStudentsPerInstructor -> "TrainingArrangements'"
  TrainingArrangementsTakeover -> "TrainingArrangements'"
  TrainingArrangementsTheory -> "TrainingArrangements'"
  TrainingArrangementsExam -> "TrainingArrangements'"
  TrainingArrangementsExamPassMark -> "TrainingArrangements'"
  TrainingArrangementsExaminer -> "TrainingArrangements'"
  TrainingArrangementsSimulator -> "TrainingArrangements'"
  TrainingMaterialCriNominee -> "TrainingMaterial'"
  TrainingMaterialRePLHolding -> "TrainingMaterial'"
  TrainingMaterialTeachingQualification -> "TrainingMaterial'"
  TrainingMaterialOperationalExperience -> "TrainingMaterial'"
  TrainingMaterialCriOtherReOCRoles -> "TrainingMaterial'"
  TrainingMaterialTrainingCourses -> "TrainingMaterial'"
  TrainingMaterialTrainingArrangements -> "TrainingMaterial'"
  ReOCOperator -> "ReOC'"
  ReOCApplicationForm -> "ReOC'"
  ReOCOperationsManual -> "ReOC'"
  ReOCMaybeTrainingMaterial -> "ReOC'"