File Coverage

blib/lib/Business/EDI/CodeList.pm
Criterion Covered Total %
statement 65 76 85.5
branch 24 42 57.1
condition 3 3 100.0
subroutine 14 15 93.3
pod 4 10 40.0
total 110 146 75.3


line stmt bran cond sub pod time code
1             package Business::EDI::CodeList;
2              
3 15     15   105 use base qw/Business::EDI/;
  15         34  
  15         1796  
4              
5 15     15   97 use strict;
  15         29  
  15         708  
6 15     15   86 use warnings;
  15         26  
  15         1629  
7 15     15   87 use Carp;
  15         24  
  15         1151  
8 15     15   122 use UNIVERSAL::require;
  15         31  
  15         125  
9              
10             =head1 Business::EDI::CodeList
11              
12             Abstract object class for UN/EDIFACT objects that do not have further descendant objects and
13             do have a defined list of legal values.
14              
15             =cut
16              
17             our $VERSION = 0.01;
18             our $verbose = 0;
19             our %codemap;
20             my @fields = qw/ code value label desc /;
21              
22             sub new_codelist { # constructor: NOT to be overridden, first argument is string name like 'ResponseTypeCode'
23 2965     2965 0 5755 my $class = shift; # note: we don't return objects of this class, we return an object from the subclasses
24 2965 50       8041 my $type = shift or carp "No CodeList object type specified";
25 2965 50       6106 $type or return;
26 2965 100       11997 if ($type =~ /^\d{4}$/) {
27 2955         7695 my $map = $class->codemap();
28 2955 50       7020 if (exists $map->{$type}) {
29 2955 50       6819 $verbose and warn "Numerical CodeList $type => " . $map->{$type};
30 2955         7150 $type = $map->{$type}; # replace 4-digit code w/ name, e.g. 1049 => 'MessageSectionCode'
31             } else {
32 0         0 carp "Numerical CodeList '$type' is not recognized. Maybe you wanted a DataElement? Constructor failure likely.";
33             }
34             }
35 2965 50       9669 my $realtype = ($type =~ /^Business::EDI::CodeList::./) ? $type : "Business::EDI::CodeList::$type";
36 2965 50       17813 unless ($realtype->require()) {
37 0         0 carp "require failed! Unrecognized class $realtype: $@";
38 0         0 return;
39             }
40 2965         107452 return $realtype->new(@_);
41             }
42              
43             # this is the default constructor for subclasses, e.g. Business::EDI::CodeList::InventoryTypeCode->new()
44             sub new { # override me if you want,
45 2966     2966 1 5111 my $class = shift;
46 2966         4527 my $code = shift; # or carp "No code argument for CodeList type '$class' specified";
47             # $code or return;
48 2966         14129 my $self = bless({}, $class);
49 2966 50       8481 unless ($self->init($code, @_)) {
50 0 0       0 carp $class . "->init('" . (defined($code) ? $code : '') . "', " . join(", ",@_), ") FAILED\n";
51 0         0 return;
52             }
53 2966         92260 return $self;
54             }
55              
56             sub init {
57 2966     2966 0 4241 my $self = shift;
58 2966         3828 my $value = shift; # or return;
59 2966 100       6854 defined($value) or $value = '';
60 2966         16518 my $codes = $self->get_codes(); # from subobject
61 2966 50       6720 $verbose and warn ref($self) . "->get_codes got " . scalar(keys %$codes) . ", setting value '$value'";
62 2966         13862 $self->{value} = $value;
63 2966 50       15556 $self->{code } = @_ ? shift : $self->list_number;
64 2966         5515 $self->{_permitted} = {(map {$_ => 1} @fields)};
  11864         33604  
65 2966 100 100     21643 unless (length($value) and $codes->{$value}) {
66 284 50       776 $verbose and carp "Value '$value' is not an authorized value";
67 284         595 $self->{label} = '';
68 284         821 $self->{desc} = '';
69 284         832 return $self;
70             }
71 2682         8077 $self->{label} = $codes->{$value}->[0];
72 2682         5903 $self->{desc} = $codes->{$value}->[1];
73 2682         8420 return $self;
74             }
75              
76             # sub get_codes {
77             # my $self = shift;
78             # my $class = ref($self) || $self;
79             # warn "trying to get_codes for class $class";
80             # no strict 'refs';
81             # return \%{$class . "::code_hash"};
82             # }
83              
84 4     4 1 10 sub code { my $self = shift; return $self->listnumber(@_); }
  4         22  
85 4 50   4 0 7 sub listnumber { my $self = shift; @_ and $self->{code } = shift; return $self->{code }; }
  4         14  
  4         21  
86 136 100   136 0 2059 sub label { my $self = shift; @_ and $self->{label} = shift; return $self->{label}; }
  136         301  
  136         781  
87 24 100   24 1 46 sub desc { my $self = shift; @_ and $self->{desc } = shift; return $self->{desc }; }
  24         125  
  24         137  
88 313 50   313 1 23404 sub value { my $self = shift; @_ and $self->{value} = shift; return $self->{value}; }
  313         6128  
  313         2487  
89              
90             sub name2number {
91 0     0 0 0 my $self = shift;
92 0 0       0 my $name = shift or return;
93 0         0 my $map = $self->codemap;
94 0         0 foreach (keys %$map) {
95 0 0       0 $map->{$_} eq $name and return $_;
96             }
97 0         0 return; # undef, no match
98             }
99              
100             sub codemap {
101 2968     2968 0 3923 my $self = shift;
102 2968 100       18086 %codemap or %codemap = (
103             # These (0xxx) are from SYNTAX spec
104             '0001' => q(SyntaxIdentifier),
105             '0002' => q(SyntaxVersionNumber),
106             '0004' => q(InterchangeSenderIdentification),
107             '0007' => q(IdentificationCodeQualifier),
108             '0008' => q(InterchangeSenderInternalIdentification),
109             '0010' => q(InterchangeRecipientIdentification),
110             '0014' => q(InterchangeRecipientInternalIdentification),
111             '0017' => q(Date),
112             '0019' => q(Time),
113             '0020' => q(InterchangeControlReference),
114             '0022' => q(RecipientReferencePassword),
115             '0025' => q(RecipientReferencePasswordQualifier),
116             '0026' => q(ApplicationReference),
117             '0029' => q(ProcessingPriorityCode),
118             '0031' => q(AcknowledgementRequest),
119             '0032' => q(InterchangeAgreementIdentifier),
120             '0035' => q(TestIndicator),
121             '0036' => q(InterchangeControlCount),
122             '0038' => q(MessageGroupIdentification),
123             '0040' => q(ApplicationSenderIdentification),
124             '0042' => q(InterchangeSenderInternalSubidentification),
125             '0044' => q(ApplicationRecipientIdentification),
126             '0046' => q(InterchangeRecipientInternalSubidentification),
127             '0048' => q(GroupReferenceNumber),
128             '0051' => q(ControllingAgencyCoded),
129             '0052' => q(MessageVersionNumber),
130             '0054' => q(MessageReleaseNumber),
131             '0057' => q(AssociationAssignedCode),
132             '0058' => q(ApplicationPassword),
133             '0060' => q(GroupControlCount),
134             '0062' => q(MessageReferenceNumber),
135             '0065' => q(MessageType),
136             '0068' => q(CommonAccessReference),
137             '0070' => q(SequenceOfTransfers),
138             '0073' => q(FirstAndLastTransfer),
139             '0074' => q(NumberOfSegmentsInAMessage),
140             '0076' => q(SyntaxReleaseNumber),
141             '0080' => q(ServiceCodeListDirectoryVersionNumber),
142             '0081' => q(SectionIdentification),
143             '0083' => q(ActionCoded),
144             '0085' => q(SyntaxErrorCoded),
145             '0087' => q(AnticollisionSegmentGroupIdentification),
146             '0096' => q(SegmentPositionInMessageBody),
147             '0098' => q(ErroneousDataElementPositionInSegment),
148             '0104' => q(ErroneousComponentDataElementPosition),
149             '0110' => q(CodeListDirectoryVersionNumber),
150             '0113' => q(MessageTypeSubfunctionIdentification),
151             '0115' => q(MessageSubsetIdentification),
152             '0116' => q(MessageSubsetVersionNumber),
153             '0118' => q(MessageSubsetReleaseNumber),
154             '0121' => q(MessageImplementationGuidelineIdentification),
155             '0122' => q(MessageImplementationGuidelineVersionNumber),
156             '0124' => q(MessageImplementationGuidelineReleaseNumber),
157             '0127' => q(ScenarioIdentification),
158             '0128' => q(ScenarioVersionNumber),
159             '0130' => q(ScenarioReleaseNumber),
160             '0133' => q(CharacterEncodingCoded),
161             '0135' => q(ServiceSegmentTagCoded),
162             '0136' => q(ErroneousDataElementOccurrence),
163             '0138' => q(SecuritySegmentPosition),
164             '0300' => q(InitiatorControlReference),
165             '0303' => q(InitiatorReferenceIdentification),
166             '0304' => q(ResponderControlReference),
167             '0306' => q(TransactionControlReference),
168             '0311' => q(DialogueIdentification),
169             '0314' => q(EventTime),
170             '0320' => q(SenderSequenceNumber),
171             '0323' => q(TransferPositionCoded),
172             '0325' => q(DuplicateIndicator),
173             '0331' => q(ReportFunctionCoded),
174             '0332' => q(Status),
175             '0333' => q(StatusCoded),
176             '0335' => q(LanguageCoded),
177             '0336' => q(TimeOffset),
178             '0338' => q(EventDate),
179             '0340' => q(InteractiveMessageReferenceNumber),
180             '0342' => q(DialogueVersionNumber),
181             '0344' => q(DialogueReleaseNumber),
182             '0501' => q(SecurityServiceCoded),
183             '0503' => q(ResponseTypeCoded),
184             '0505' => q(FilterFunctionCoded),
185             '0507' => q(OriginalCharacterSetEncodingCoded),
186             '0509' => q(RoleOfSecurityProviderCoded),
187             '0511' => q(SecurityPartyIdentification),
188             '0513' => q(SecurityPartyCodeListQualifier),
189             '0515' => q(SecurityPartyCodeListResponsibleAgencyCoded),
190             '0517' => q(DateAndTimeQualifier),
191             '0518' => q(EncryptionReferenceNumber),
192             '0520' => q(SecuritySequenceNumber),
193             '0523' => q(UseOfAlgorithmCoded),
194             '0525' => q(CryptographicModeOfOperationCoded),
195             '0527' => q(AlgorithmCoded),
196             '0529' => q(AlgorithmCodeListIdentifier),
197             '0531' => q(AlgorithmParameterQualifier),
198             '0533' => q(ModeOfOperationCodeListIdentifier),
199             '0534' => q(SecurityReferenceNumber),
200             '0536' => q(CertificateReference),
201             '0538' => q(KeyName),
202             '0541' => q(ScopeOfSecurityApplicationCoded),
203             '0543' => q(CertificateOriginalCharacterSetRepertoireCoded),
204             '0545' => q(CertificateSyntaxAndVersionCoded),
205             '0546' => q(UserAuthorisationLevel),
206             '0548' => q(ServiceCharacterForSignature),
207             '0551' => q(ServiceCharacterForSignatureQualifier),
208             '0554' => q(AlgorithmParameterValue),
209             '0556' => q(LengthOfDataInOctetsOfBits),
210             '0558' => q(ListParameter),
211             '0560' => q(ValidationValue),
212             '0563' => q(ValidationValueQualifier),
213             '0565' => q(MessageRelationCoded),
214             '0567' => q(SecurityStatusCoded),
215             '0569' => q(RevocationReasonCoded),
216             '0571' => q(SecurityErrorCoded),
217             '0572' => q(CertificateSequenceNumber),
218             '0575' => q(ListParameterQualifier),
219             '0577' => q(SecurityPartyQualifier),
220             '0579' => q(KeyManagementFunctionQualifier),
221             '0582' => q(NumberOfPaddingBytes),
222             '0586' => q(SecurityPartyName),
223             '0588' => q(NumberOfSecuritySegments),
224             '0591' => q(PaddingMechanismCoded),
225             '0601' => q(PaddingMechanismCodeListIdentifier),
226             '0800' => q(PackageReferenceNumber),
227             '0802' => q(ReferenceIdentificationNumber),
228             '0805' => q(ObjectTypeQualifier),
229             '0808' => q(ObjectTypeAttribute),
230             '0809' => q(ObjectTypeAttributeIdentification),
231             '0810' => q(LengthOfObjectInOctetsOfBits),
232             '0813' => q(ReferenceQualifier),
233             '0814' => q(NumberOfSegmentsBeforeObject),
234              
235             # The rest are from regular EDI spec
236             1001 => "DocumentNameCode",
237             1049 => "MessageSectionCode",
238             1073 => "DocumentLineActionCode",
239             1153 => "ReferenceCodeQualifier",
240             1159 => "SequenceIdentifierSourceCode",
241             1225 => "MessageFunctionCode",
242             1227 => "CalculationSequenceCode",
243             1229 => "ActionCode",
244             1373 => "DocumentStatusCode",
245             1501 => "ComputerEnvironmentDetailsCodeQualifier",
246             1503 => "DataFormatDescriptionCode",
247             1505 => "ValueListTypeCode",
248             1507 => "DesignatedClassCode",
249             2005 => "DateOrTimeOrPeriodFunctionCodeQualifier",
250             2009 => "TermsTimeRelationCode",
251             2013 => "FrequencyCode",
252             2015 => "DespatchPatternCode",
253             2017 => "DespatchPatternTimingCode",
254             2023 => "PeriodTypeCodeQualifier",
255             2151 => "PeriodTypeCode",
256             2155 => "ChargePeriodTypeCode",
257             2379 => "DateOrTimeOrPeriodFormatCode",
258             2475 => "TimeReferenceCode",
259             3035 => "PartyFunctionCodeQualifier",
260             3045 => "PartyNameFormatCode",
261             3055 => "CodeListResponsibleAgencyCode",
262             3077 => "TestMediumCode",
263             3079 => "OrganisationClassificationCode",
264             3083 => "OrganisationalClassNameCode",
265             3131 => "AddressTypeCode",
266             3139 => "ContactFunctionCode",
267             3153 => "CommunicationMediumTypeCode",
268             3155 => "CommunicationAddressCodeQualifier",
269             3227 => "LocationFunctionCodeQualifier",
270             3237 => "SampleLocationDescriptionCode",
271             3279 => "GeographicAreaCode",
272             3285 => "InstructionReceivingPartyIdentifier",
273             3289 => "PersonCharacteristicCodeQualifier",
274             3295 => "NameOriginalAlphabetCode",
275             3299 => "AddressPurposeCode",
276             3301 => "EnactingPartyIdentifier",
277             3397 => "NameStatusCode",
278             3401 => "NameComponentUsageCode",
279             3403 => "NameTypeCode",
280             3405 => "NameComponentTypeCodeQualifier",
281             3455 => "LanguageCodeQualifier",
282             3457 => "OriginatorTypeCode",
283             3475 => "AddressStatusCode",
284             3477 => "AddressFormatCode",
285             3479 => "MaritalStatusDescriptionCode",
286             3493 => "NationalityCodeQualifier",
287             4017 => "DeliveryPlanCommitmentLevelCode",
288             4025 => "BusinessFunctionCode",
289             4027 => "BusinessFunctionTypeCodeQualifier",
290             4035 => "PriorityTypeCodeQualifier",
291             4037 => "PriorityDescriptionCode",
292             4043 => "TradeClassCode",
293             4049 => "CertaintyDescriptionCode",
294             4051 => "CharacteristicRelevanceCode",
295             4053 => "DeliveryOrTransportTermsDescriptionCode",
296             4055 => "DeliveryOrTransportTermsFunctionCode",
297             4059 => "ClauseCodeQualifier",
298             4065 => "ContractAndCarriageConditionCode",
299             4071 => "ProvisoCodeQualifier",
300             4079 => "HandlingInstructionDescriptionCode",
301             4183 => "SpecialConditionCode",
302             4215 => "TransportChargesPaymentMethodCode",
303             4219 => "TransportServicePriorityCode",
304             4221 => "DiscrepancyNatureIdentificationCode",
305             4233 => "MarkingInstructionsCode",
306             4237 => "PaymentArrangementCode",
307             4277 => "PaymentTermsDescriptionIdentifier",
308             4279 => "PaymentTermsTypeCodeQualifier",
309             4295 => "ChangeReasonDescriptionCode",
310             4343 => "ResponseTypeCode",
311             4347 => "ProductIdentifierCodeQualifier",
312             4383 => "BankOperationCode",
313             4401 => "InstructionDescriptionCode",
314             4403 => "InstructionTypeCodeQualifier",
315             4405 => "StatusDescriptionCode",
316             4407 => "SampleProcessStepCode",
317             4419 => "TestAdministrationMethodCode",
318             4431 => "PaymentGuaranteeMeansCode",
319             4435 => "PaymentChannelCode",
320             4437 => "AccountTypeCodeQualifier",
321             4439 => "PaymentConditionsCode",
322             4447 => "FreeTextFormatCode",
323             4451 => "TextSubjectCodeQualifier",
324             4453 => "FreeTextFunctionCode",
325             4455 => "BackOrderArrangementTypeCode",
326             4457 => "SubstitutionConditionCode",
327             4461 => "PaymentMeansCode",
328             4463 => "IntracompanyPaymentIndicatorCode",
329             4465 => "AdjustmentReasonDescriptionCode",
330             4471 => "SettlementMeansCode",
331             4475 => "AccountingEntryTypeNameCode",
332             4487 => "FinancialTransactionTypeCode",
333             4493 => "DeliveryInstructionCode",
334             4499 => "InventoryMovementReasonCode",
335             4501 => "InventoryMovementDirectionCode",
336             4503 => "InventoryBalanceMethodCode",
337             4505 => "CreditCoverRequestTypeCode",
338             4507 => "CreditCoverResponseTypeCode",
339             4509 => "CreditCoverResponseReasonCode",
340             4511 => "RequestedInformationDescriptionCode",
341             4513 => "MaintenanceOperationCode",
342             4517 => "SealConditionCode",
343             5007 => "MonetaryAmountFunctionDescriptionCode",
344             5013 => "IndexCodeQualifier",
345             5025 => "MonetaryAmountTypeCodeQualifier",
346             5027 => "IndexTypeIdentifier",
347             5039 => "IndexRepresentationCode",
348             5047 => "ContributionCodeQualifier",
349             5049 => "ContributionTypeDescriptionCode",
350             5125 => "PriceCodeQualifier",
351             5153 => "DutyOrTaxOrFeeTypeNameCode",
352             5189 => "AllowanceOrChargeIdentificationCode",
353             5213 => "SublineItemPriceChangeOperationCode",
354             5237 => "ChargeCategoryCode",
355             5243 => "RateOrTariffClassDescriptionCode",
356             5245 => "PercentageTypeCodeQualifier",
357             5249 => "PercentageBasisIdentificationCode",
358             5261 => "ChargeUnitCode",
359             5267 => "ServiceTypeCode",
360             5273 => "DutyOrTaxOrFeeRateBasisCode",
361             5283 => "DutyOrTaxOrFeeFunctionCodeQualifier",
362             5305 => "DutyOrTaxOrFeeCategoryCode",
363             5315 => "RemunerationTypeNameCode",
364             5375 => "PriceTypeCode",
365             5379 => "ProductGroupTypeCode",
366             5387 => "PriceSpecificationCode",
367             5393 => "PriceMultiplierTypeCodeQualifier",
368             5419 => "RateTypeCodeQualifier",
369             5463 => "AllowanceOrChargeCodeQualifier",
370             5495 => "SublineIndicatorCode",
371             5501 => "RatePlanCode",
372             6029 => "GeographicalPositionCodeQualifier",
373             6063 => "QuantityTypeCodeQualifier",
374             6069 => "ControlTotalTypeCodeQualifier",
375             6071 => "FrequencyCodeQualifier",
376             6077 => "ResultRepresentationCode",
377             6079 => "ResultNormalcyCode",
378             6085 => "DosageAdministrationCodeQualifier",
379             6087 => "ResultValueTypeCodeQualifier",
380             6145 => "DimensionTypeCodeQualifier",
381             6155 => "NondiscreteMeasurementNameCode",
382             6167 => "RangeTypeCodeQualifier",
383             6173 => "SizeTypeCodeQualifier",
384             6245 => "TemperatureTypeCodeQualifier",
385             6311 => "MeasurementPurposeCodeQualifier",
386             6313 => "MeasuredAttributeCode",
387             6321 => "MeasurementSignificanceCode",
388             6331 => "StatisticTypeCodeQualifier",
389             6341 => "ExchangeRateCurrencyMarketIdentifier",
390             6343 => "CurrencyTypeCodeQualifier",
391             6347 => "CurrencyUsageCodeQualifier",
392             6353 => "UnitTypeCodeQualifier",
393             6415 => "ClinicalInformationTypeCodeQualifier",
394             7001 => "PhysicalOrLogicalStateTypeCodeQualifier",
395             7007 => "PhysicalOrLogicalStateDescriptionCode",
396             7009 => "ItemDescriptionCode",
397             7011 => "ItemAvailabilityCode",
398             7039 => "SampleSelectionMethodCode",
399             7045 => "SampleStateCode",
400             7047 => "SampleDirectionCode",
401             7059 => "ClassTypeCode",
402             7073 => "PackagingTermsAndConditionsCode",
403             7075 => "PackagingLevelCode",
404             7077 => "DescriptionFormatCode",
405             7081 => "ItemCharacteristicCode",
406             7083 => "ConfigurationOperationCode",
407             7085 => "CargoTypeClassificationCode",
408             7133 => "ProductDetailsTypeCodeQualifier",
409             7143 => "ItemTypeIdentificationCode",
410             7161 => "SpecialServiceDescriptionCode",
411             7171 => "HierarchicalStructureRelationshipCode",
412             7173 => "HierarchyObjectCodeQualifier",
413             7187 => "ProcessTypeDescriptionCode",
414             7233 => "PackagingRelatedDescriptionCode",
415             7273 => "ServiceRequirementCode",
416             7293 => "SectorAreaIdentificationCodeQualifier",
417             7295 => "RequirementOrConditionDescriptionIdentifier",
418             7297 => "SetTypeCodeQualifier",
419             7299 => "RequirementDesignatorCode",
420             7365 => "ProcessingIndicatorDescriptionCode",
421             7383 => "SurfaceOrLayerCode",
422             7405 => "ObjectIdentificationCodeQualifier",
423             7429 => "IndexingStructureCodeQualifier",
424             7431 => "AgreementTypeCodeQualifier",
425             7433 => "AgreementTypeDescriptionCode",
426             7449 => "MembershipTypeCodeQualifier",
427             7451 => "MembershipCategoryDescriptionCode",
428             7455 => "MembershipLevelCodeQualifier",
429             7459 => "AttendeeCategoryDescriptionCode",
430             7491 => "InventoryTypeCode",
431             7493 => "DamageDetailsCodeQualifier",
432             7495 => "ObjectTypeCodeQualifier",
433             7497 => "StructureComponentFunctionCodeQualifier",
434             7511 => "MarkingTypeCode",
435             7515 => "StructureTypeCode",
436             8015 => "TrafficRestrictionCode",
437             8025 => "ConveyanceCallPurposeDescriptionCode",
438             8035 => "TrafficRestrictionTypeCodeQualifier",
439             8051 => "TransportStageCodeQualifier",
440             8053 => "EquipmentTypeCodeQualifier",
441             8077 => "EquipmentSupplierCode",
442             8101 => "TransitDirectionIndicatorCode",
443             8155 => "EquipmentSizeAndTypeDescriptionCode",
444             8169 => "FullOrEmptyIndicatorCode",
445             8179 => "TransportMeansDescriptionCode",
446             8249 => "EquipmentStatusCode",
447             8273 => "DangerousGoodsRegulationsCode",
448             8275 => "ContainerOrPackageContentsIndicatorCode",
449             8281 => "TransportMeansOwnershipIndicatorCode",
450             8323 => "TransportMovementCode",
451             8335 => "MovementTypeDescriptionCode",
452             8339 => "PackagingDangerLevelCode",
453             8341 => "HaulageArrangementsCode",
454             8393 => "ReturnablePackageLoadContentsCode",
455             8395 => "ReturnablePackageFreightPaymentResponsibilityCode",
456             8457 => "ExcessTransportationReasonCode",
457             8459 => "ExcessTransportationResponsibilityCode",
458             9003 => "EmploymentDetailsCodeQualifier",
459             9013 => "StatusReasonDescriptionCode",
460             9015 => "StatusCategoryCode",
461             9017 => "AttributeFunctionCodeQualifier",
462             9023 => "DefinitionFunctionCode",
463             9025 => "DefinitionExtentCode",
464             9029 => "ValueDefinitionCodeQualifier",
465             9031 => "EditMaskRepresentationCode",
466             9035 => "QualificationApplicationAreaCode",
467             9037 => "QualificationTypeCodeQualifier",
468             9039 => "FacilityTypeDescriptionCode",
469             9043 => "ReservationIdentifierCodeQualifier",
470             9045 => "BasisCodeQualifier",
471             9051 => "ApplicabilityCodeQualifier",
472             9141 => "RelationshipTypeCodeQualifier",
473             9143 => "RelationshipDescriptionCode",
474             9153 => "SimpleDataElementCharacterRepresentationCode",
475             9155 => "LengthTypeCode",
476             9161 => "CodeSetIndicatorCode",
477             9169 => "DataRepresentationTypeCode",
478             9175 => "DataElementUsageTypeCode",
479             9213 => "DutyRegimeTypeCode",
480             9285 => "ValidationCriteriaCode",
481             9303 => "SealingPartyNameCode",
482             9353 => "GovernmentProcedureCode",
483             9411 => "GovernmentInvolvementCode",
484             9415 => "GovernmentAgencyIdentificationCode",
485             9417 => "GovernmentActionCode",
486             9421 => "ProcessStageCodeQualifier",
487             9437 => "ClinicalInterventionDescriptionCode",
488             9441 => "ClinicalInterventionTypeCodeQualifier",
489             9443 => "AttendanceTypeCodeQualifier",
490             9447 => "DischargeTypeDescriptionCode",
491             9453 => "CodeValueSourceCode",
492             9501 => "FormulaTypeCodeQualifier",
493             9507 => "FormulaSequenceCodeQualifier",
494             9509 => "FormulaSequenceOperandCode",
495             9601 => "InformationCategoryCode",
496             9623 => "DiagnosisTypeCode",
497             9625 => "RelatedCauseCode",
498             9633 => "InformationDetailsCodeQualifier",
499             9635 => "EventDetailsCodeQualifier",
500             9641 => "ServiceBasisCodeQualifier",
501             9643 => "SupportingEvidenceTypeCodeQualifier",
502             9645 => "PayerResponsibilityLevelCode",
503             9649 => "ProcessingInformationCodeQualifier",
504             );
505 2968         6158 return \%codemap;
506             }
507              
508             1;
509             __END__