PSOERXOC ;ALB/BWF - eRx parsing Utilities ; 11/14/2019 3:46pm
;;7.0;OUTPATIENT PHARMACY;**581**;DEC 1997;Build 126
;
Q
PATIENT(GBL,CNT,PSOSITE,IEN) ;
N F,PATREL,LNAME,FNAME,MNAME,SUFF,PREF,GENDER,DOB,ADDL1,ADDL2,CITY,STATE,ZIP,PLQ,CUNIT,BED,ROOM,PSDAT,ILOOP
N ITYP,IVAL,CLOOP,CNUM,CQUAL,PIEN,PIENS,PSSN,LANGNC,GESTAGE,HOSPIND,ACLN,ACFN,ACMN,ACSUFF,ACPREF,ACRELAT,ACFLN
N ACFFN,ACFMN,ACFSUFF,ACFPREF,ACADL1,ACADL2,ACCITY,ACSTATE,ACPOSTAL,ACCC,DIRADD,ALDIRADD,MEDICARE,MEDICAID,MEDICAL,ACCNUM,MUTDEF,REMS
N ASGBL,CC,FOFN,FOLN,FOMN,FOPREF,FOSUFF,SGBL
S F=52.46
S PIEN=$$GET1^DIQ(52.49,IEN,.04,"I") Q:'PIEN
S PIENS=PIEN_","
D GETS^DIQ(F,PIENS,"**","IE","PSDAT")
D CONVXML^PSOERXX1("PSDAT")
S PATREL=$G(PSDAT(F,PIENS,1.7,"I"))
S LNAME=$G(PSDAT(F,PIENS,.02,"E"))
S FNAME=$G(PSDAT(F,PIENS,.03,"E"))
S MNAME=$G(PSDAT(F,PIENS,.04,"E"))
S SUFF=$G(PSDAT(F,PIENS,.05,"E"))
S PREF=$G(PSDAT(F,PIENS,.06,"E"))
S GENDER=$G(PSDAT(F,PIENS,.07,"I"))
S DOB=$G(PSDAT(F,PIENS,.08,"I")) I $G(DOB) S DOB=$P($$EXTIME^PSOERXO1(DOB),"T")
S ADDL1=$G(PSDAT(F,PIENS,3.1,"E"))
S ADDL2=$G(PSDAT(F,PIENS,3.2,"E"))
S CITY=$G(PSDAT(F,PIENS,3.3,"E"))
S STATE=$G(PSDAT(F,PIENS,3.4,"I"))
S ZIP=$G(PSDAT(F,PIENS,3.5,"E"))
S CC=$G(PSDAT(F,PIENS,1.6,"E"))
S PSSN=$G(PSDAT(F,PIENS,18.2,"E"))
; FUTURE ENHANCEMENT, GRAB CUNIT/BED/ROOM FROM CORRECT LOCATIONS. THIS LOGIC IS NOT ACTIVE WITH VERSION 2
S CUNIT=$G(PSDAT(F,PIENS,8.1,"E")) ; 8.1
S BED=$G(PSDAT(F,PIENS,8.2,"E")) ; 8.3
S ROOM=$G(PSDAT(F,PIENS,8.3,"E")) ; 8.2
;
;start grabbing 2017 variables
;
S FOLN=$G(PSDAT(F,PIENS,7.1,"E"))
S FOFN=$G(PSDAT(F,PIENS,7.2,"E"))
S FOMN=$G(PSDAT(F,PIENS,7.3,"E"))
S FOSUFF=$G(PSDAT(F,PIENS,7.4,"E"))
S FOPREF=$G(PSDAT(F,PIENS,7.5,"E"))
S LANGNC=$G(PSDAT(F,PIENS,8.4,"E"))
S GESTAGE=$G(PSDAT(F,PIENS,8.5,"E"))
S HOSPIND=$G(PSDAT(F,PIENS,8.6,"I"))
S ACLN=$G(PSDAT(F,PIENS,9.1,"E"))
S ACFN=$G(PSDAT(F,PIENS,9.2,"E"))
S ACMN=$G(PSDAT(F,PIENS,9.3,"E"))
S ACSUFF=$G(PSDAT(F,PIENS,9.4,"E"))
S ACPREF=$G(PSDAT(F,PIENS,9.5,"E"))
S ACRELAT=$G(PSDAT(F,PIENS,9.6,"I")),ACRELAT=$$GET1^DIQ(52.45,ACRELAT,.01,"E")
S ACFLN=$G(PSDAT(F,PIENS,10.1,"E"))
S ACFFN=$G(PSDAT(F,PIENS,10.2,"E"))
S ACFMN=$G(PSDAT(F,PIENS,10.3,"E"))
S ACFSUFF=$G(PSDAT(F,PIENS,10.4,"E"))
S ACFPREF=$G(PSDAT(F,PIENS,10.5,"E"))
S ACADL1=$G(PSDAT(F,PIENS,11.1,"E"))
S ACADL2=$G(PSDAT(F,PIENS,11.2,"E"))
S ACCITY=$G(PSDAT(F,PIENS,11.3,"E"))
S ACSTATE=$G(PSDAT(F,PIENS,11.4,"I"))
S ACPOSTAL=$G(PSDAT(F,PIENS,11.5,"E"))
S ACCC=$G(PSDAT(F,PIENS,11.6,"E"))
;alternate communication
S ASGBL=$NA(^PS(52.46,IEN,15))
S ALDIRADD=$G(PSDAT(F,PIENS,16,"E"))
S MEDICARE=$G(PSDAT(F,PIENS,17.1,"E"))
S MEDICAID=$G(PSDAT(F,PIENS,17.2,"E"))
S MEDICAL=$G(PSDAT(F,PIENS,17.3,"E"))
S ACCNUM=$G(PSDAT(F,PIENS,18.1,"E"))
S MUTDEF=$G(PSDAT(F,PIENS,18.3,"E"))
S REMS=$G(PSDAT(F,PIENS,18.4,"E"))
;end 2017 variables
;
;new outbound building - 12/9/19
;
D C S @GBL@(CNT,0)="<Patient>"
D C S @GBL@(CNT,0)="<HumanPatient>"
I $L(MEDICARE_MEDICAID_MEDICAL_ACCNUM_PSSN_MUTDEF_REMS) D
.D C S @GBL@(CNT,0)="<Identification>"
.D BL(GBL,.CNT,"MedicareNumber",MEDICARE)
.D BL(GBL,.CNT,"MedicaidNumber",MEDICAID)
.D BL(GBL,.CNT,"MedicalRecordIdentificationNumberEHR",MEDICAL)
.D BL(GBL,.CNT,"PatientAccountNumber",ACCNUM)
.D BL(GBL,.CNT,"SocialSecurity",PSSN)
.D BL(GBL,.CNT,"MutuallyDefined",MUTDEF)
.D BL(GBL,.CNT,"REMSPatientID",REMS)
.D C S @GBL@(CNT,0)="</Identification>"
D ONAME^PSOERXOU(GBL,.CNT,"Name",LNAME,FNAME,MNAME,SUFF,PREF)
I $L(FOLN) D
.D ONAME^PSOERXOU(GBL,.CNT,"FormerName",FOLN,FOFN,FOMN,FOSUFF,FOPREF)
D BL(GBL,.CNT,"Gender",GENDER)
D C S @GBL@(CNT,0)="<DateOfBirth>"
D BL(GBL,.CNT,"Date",DOB)
D C S @GBL@(CNT,0)="</DateOfBirth>"
D OADD^PSOERXOU(GBL,.CNT,ADDL1,ADDL2,CITY,STATE,ZIP,CC)
S SGBL=$NA(^PS(52.46,PIEN,13))
D OCOMM^PSOERXOU(GBL,SGBL,.CNT,PIEN_",",52.4613,52.46,14,PIEN_",")
I $L(CUNIT_BED_ROOM) D
.D C S @GBL@(CNT,0)="<PatientLocation>"
.D BL(GBL,.CNT,"FacilityUnit",CUNIT)
.D BL(GBL,.CNT,"BED",BED)
.D BL(GBL,.CNT,"Room",ROOM)
.D C S @GBL@(CNT,0)="</PatientLocation>"
.D BL(GBL,.CNT,"LanguageNameCode",LANGNC)
D SUBSTNCE(PIEN,52.4619,GBL)
I $L(ACLN) D
.D C S @GBL@(CNT,0)="<AlternateContact>"
.D ONAME^PSOERXOU(GBL,.CNT,"Name",ACLN,ACFN,ACMN,ACSUFF,ACPREF)
.I $L(ACFLN) D
..D ONAME^PSOERXOU(GBL,.CNT,"FormerName",ACFLN,ACFFN,ACFMN,ACFPREF,ACFSUFF)
.D OADD^PSOERXOU(GBL,.CNT,ACADL1,ACADL2,ACCITY,ACSTATE,ACPOSTAL,ACCC)
.S SGBL=$NA(^PS(52.46,PIEN,15))
.D OCOMM^PSOERXOU(GBL,SGBL,.CNT,PIEN_",",52.4615,52.46,16,PIEN_",")
.D BL(GBL,.CNT,"AlternateContactRelationship",ACRELAT)
.D C S @GBL@(CNT,0)="</AlternateContact>"
.D BL(GBL,.CNT,"GestationalAge",GESTAGE)
.D BL(GBL,.CNT,"HospiceIndicator",HOSPIND)
;end new outbound building
D C S @GBL@(CNT,0)="</HumanPatient>"
D C S @GBL@(CNT,0)="</Patient>"
Q
SUBSTNCE(PIEN,SFILE,GBL) ; patient substance (52.4619)
N SFIEN,SUBIENS,TYPETEXT,TYPEQUAL,TYPECODE,LEVTEXT
N LEVQUAL,LEVCODE,ROATEXT,ROAQUAL,ROACODE,SUBDAT
S SFIEN=0,IEN=5531,SFILE=52.4619
Q:'$O(^PS(52.46,PIEN,19,0))
F S SFIEN=$O(^PS(52.46,PIEN,19,SFIEN)) Q:'SFIEN D
.S SUBIENS=SFIEN_","_PIEN_","
.D GETS^DIQ(52.4619,SUBIENS,"**","E","SUBDAT")
.S TYPETEXT=$G(SUBDAT(SFILE,SUBIENS,1,"E"))
.S TYPEQUAL=$G(SUBDAT(SFILE,SUBIENS,2,"E"))
.S TYPECODE=$G(SUBDAT(SFILE,SUBIENS,3,"E"))
.S LEVTEXT=$G(SUBDAT(SFILE,SUBIENS,4,"E"))
.S LEVQUAL=$G(SUBDAT(SFILE,SUBIENS,5,"E"))
.S LEVCODE=$G(SUBDAT(SFILE,SUBIENS,6,"E"))
.S ROATEXT=$G(SUBDAT(SFILE,SUBIENS,7,"E"))
.S ROAQUAL=$G(SUBDAT(SFILE,SUBIENS,8,"E"))
.S ROACODE=$G(SUBDAT(SFILE,SUBIENS,9,"E"))
.I $L(TYPETEXT_TYPEQUAL_TYPECODE_LEVTEXT_LEVQUAL_LEVCODE_ROATEXT_ROAQUAL_ROACODE) D
..D C S @GBL@(CNT,0)="<SubstanceUse>"
..D C S @GBL@(CNT,0)="<Substance>"
..D C S @GBL@(CNT,0)="<Type>"
..D BL(GBL,.CNT,"Text",TYPETEXT)
..D BL(GBL,.CNT,"Qualifier",TYPEQUAL)
..D BL(GBL,.CNT,"Code",TYPECODE)
..D C S @GBL@(CNT,0)="</Type>"
..I $L(LEVTEXT_LEVQUAL_LEVCODE) D
...D C S @GBL@(CNT,0)="<Level>"
...D BL(GBL,.CNT,"Text",LEVTEXT)
...D BL(GBL,.CNT,"Qualifier",LEVQUAL)
...D BL(GBL,.CNT,"Code",LEVCODE)
...D C S @GBL@(CNT,0)="</Level>"
..I $L(ROATEXT_ROAQUAL_ROACODE) D
...D C S @GBL@(CNT,0)="<RouteOfAdministration>"
...D BL(GBL,.CNT,"Text",ROATEXT)
...D BL(GBL,.CNT,"Qualifier",ROAQUAL)
...D BL(GBL,.CNT,"Code",ROACODE)
...D C S @GBL@(CNT,0)="</RouteOfAdministration>"
..D C S @GBL@(CNT,0)="</Substance>"
..D C S @GBL@(CNT,0)="</SubstanceUse>"
Q
BL(GBL,CNT,TAG,VAR) ;
Q:VAR=""
D C S @GBL@(CNT,0)="<"_TAG_">"_$$SYMENC^MXMLUTL(VAR)_"</"_TAG_">"
Q
C ;
S CNT=$G(CNT)+1
Q
--- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HPSOERXOC 6717 printed Dec 13, 2024@02:28:48 Page 2
PSOERXOC ;ALB/BWF - eRx parsing Utilities ; 11/14/2019 3:46pm
+1 ;;7.0;OUTPATIENT PHARMACY;**581**;DEC 1997;Build 126
+2 ;
+3 QUIT
PATIENT(GBL,CNT,PSOSITE,IEN) ;
+1 NEW F,PATREL,LNAME,FNAME,MNAME,SUFF,PREF,GENDER,DOB,ADDL1,ADDL2,CITY,STATE,ZIP,PLQ,CUNIT,BED,ROOM,PSDAT,ILOOP
+2 NEW ITYP,IVAL,CLOOP,CNUM,CQUAL,PIEN,PIENS,PSSN,LANGNC,GESTAGE,HOSPIND,ACLN,ACFN,ACMN,ACSUFF,ACPREF,ACRELAT,ACFLN
+3 NEW ACFFN,ACFMN,ACFSUFF,ACFPREF,ACADL1,ACADL2,ACCITY,ACSTATE,ACPOSTAL,ACCC,DIRADD,ALDIRADD,MEDICARE,MEDICAID,MEDICAL,ACCNUM,MUTDEF,REMS
+4 NEW ASGBL,CC,FOFN,FOLN,FOMN,FOPREF,FOSUFF,SGBL
+5 SET F=52.46
+6 SET PIEN=$$GET1^DIQ(52.49,IEN,.04,"I")
if 'PIEN
QUIT
+7 SET PIENS=PIEN_","
+8 DO GETS^DIQ(F,PIENS,"**","IE","PSDAT")
+9 DO CONVXML^PSOERXX1("PSDAT")
+10 SET PATREL=$GET(PSDAT(F,PIENS,1.7,"I"))
+11 SET LNAME=$GET(PSDAT(F,PIENS,.02,"E"))
+12 SET FNAME=$GET(PSDAT(F,PIENS,.03,"E"))
+13 SET MNAME=$GET(PSDAT(F,PIENS,.04,"E"))
+14 SET SUFF=$GET(PSDAT(F,PIENS,.05,"E"))
+15 SET PREF=$GET(PSDAT(F,PIENS,.06,"E"))
+16 SET GENDER=$GET(PSDAT(F,PIENS,.07,"I"))
+17 SET DOB=$GET(PSDAT(F,PIENS,.08,"I"))
IF $GET(DOB)
SET DOB=$PIECE($$EXTIME^PSOERXO1(DOB),"T")
+18 SET ADDL1=$GET(PSDAT(F,PIENS,3.1,"E"))
+19 SET ADDL2=$GET(PSDAT(F,PIENS,3.2,"E"))
+20 SET CITY=$GET(PSDAT(F,PIENS,3.3,"E"))
+21 SET STATE=$GET(PSDAT(F,PIENS,3.4,"I"))
+22 SET ZIP=$GET(PSDAT(F,PIENS,3.5,"E"))
+23 SET CC=$GET(PSDAT(F,PIENS,1.6,"E"))
+24 SET PSSN=$GET(PSDAT(F,PIENS,18.2,"E"))
+25 ; FUTURE ENHANCEMENT, GRAB CUNIT/BED/ROOM FROM CORRECT LOCATIONS. THIS LOGIC IS NOT ACTIVE WITH VERSION 2
+26 ; 8.1
SET CUNIT=$GET(PSDAT(F,PIENS,8.1,"E"))
+27 ; 8.3
SET BED=$GET(PSDAT(F,PIENS,8.2,"E"))
+28 ; 8.2
SET ROOM=$GET(PSDAT(F,PIENS,8.3,"E"))
+29 ;
+30 ;start grabbing 2017 variables
+31 ;
+32 SET FOLN=$GET(PSDAT(F,PIENS,7.1,"E"))
+33 SET FOFN=$GET(PSDAT(F,PIENS,7.2,"E"))
+34 SET FOMN=$GET(PSDAT(F,PIENS,7.3,"E"))
+35 SET FOSUFF=$GET(PSDAT(F,PIENS,7.4,"E"))
+36 SET FOPREF=$GET(PSDAT(F,PIENS,7.5,"E"))
+37 SET LANGNC=$GET(PSDAT(F,PIENS,8.4,"E"))
+38 SET GESTAGE=$GET(PSDAT(F,PIENS,8.5,"E"))
+39 SET HOSPIND=$GET(PSDAT(F,PIENS,8.6,"I"))
+40 SET ACLN=$GET(PSDAT(F,PIENS,9.1,"E"))
+41 SET ACFN=$GET(PSDAT(F,PIENS,9.2,"E"))
+42 SET ACMN=$GET(PSDAT(F,PIENS,9.3,"E"))
+43 SET ACSUFF=$GET(PSDAT(F,PIENS,9.4,"E"))
+44 SET ACPREF=$GET(PSDAT(F,PIENS,9.5,"E"))
+45 SET ACRELAT=$GET(PSDAT(F,PIENS,9.6,"I"))
SET ACRELAT=$$GET1^DIQ(52.45,ACRELAT,.01,"E")
+46 SET ACFLN=$GET(PSDAT(F,PIENS,10.1,"E"))
+47 SET ACFFN=$GET(PSDAT(F,PIENS,10.2,"E"))
+48 SET ACFMN=$GET(PSDAT(F,PIENS,10.3,"E"))
+49 SET ACFSUFF=$GET(PSDAT(F,PIENS,10.4,"E"))
+50 SET ACFPREF=$GET(PSDAT(F,PIENS,10.5,"E"))
+51 SET ACADL1=$GET(PSDAT(F,PIENS,11.1,"E"))
+52 SET ACADL2=$GET(PSDAT(F,PIENS,11.2,"E"))
+53 SET ACCITY=$GET(PSDAT(F,PIENS,11.3,"E"))
+54 SET ACSTATE=$GET(PSDAT(F,PIENS,11.4,"I"))
+55 SET ACPOSTAL=$GET(PSDAT(F,PIENS,11.5,"E"))
+56 SET ACCC=$GET(PSDAT(F,PIENS,11.6,"E"))
+57 ;alternate communication
+58 SET ASGBL=$NAME(^PS(52.46,IEN,15))
+59 SET ALDIRADD=$GET(PSDAT(F,PIENS,16,"E"))
+60 SET MEDICARE=$GET(PSDAT(F,PIENS,17.1,"E"))
+61 SET MEDICAID=$GET(PSDAT(F,PIENS,17.2,"E"))
+62 SET MEDICAL=$GET(PSDAT(F,PIENS,17.3,"E"))
+63 SET ACCNUM=$GET(PSDAT(F,PIENS,18.1,"E"))
+64 SET MUTDEF=$GET(PSDAT(F,PIENS,18.3,"E"))
+65 SET REMS=$GET(PSDAT(F,PIENS,18.4,"E"))
+66 ;end 2017 variables
+67 ;
+68 ;new outbound building - 12/9/19
+69 ;
+70 DO C
SET @GBL@(CNT,0)="<Patient>"
+71 DO C
SET @GBL@(CNT,0)="<HumanPatient>"
+72 IF $LENGTH(MEDICARE_MEDICAID_MEDICAL_ACCNUM_PSSN_MUTDEF_REMS)
Begin DoDot:1
+73 DO C
SET @GBL@(CNT,0)="<Identification>"
+74 DO BL(GBL,.CNT,"MedicareNumber",MEDICARE)
+75 DO BL(GBL,.CNT,"MedicaidNumber",MEDICAID)
+76 DO BL(GBL,.CNT,"MedicalRecordIdentificationNumberEHR",MEDICAL)
+77 DO BL(GBL,.CNT,"PatientAccountNumber",ACCNUM)
+78 DO BL(GBL,.CNT,"SocialSecurity",PSSN)
+79 DO BL(GBL,.CNT,"MutuallyDefined",MUTDEF)
+80 DO BL(GBL,.CNT,"REMSPatientID",REMS)
+81 DO C
SET @GBL@(CNT,0)="</Identification>"
End DoDot:1
+82 DO ONAME^PSOERXOU(GBL,.CNT,"Name",LNAME,FNAME,MNAME,SUFF,PREF)
+83 IF $LENGTH(FOLN)
Begin DoDot:1
+84 DO ONAME^PSOERXOU(GBL,.CNT,"FormerName",FOLN,FOFN,FOMN,FOSUFF,FOPREF)
End DoDot:1
+85 DO BL(GBL,.CNT,"Gender",GENDER)
+86 DO C
SET @GBL@(CNT,0)="<DateOfBirth>"
+87 DO BL(GBL,.CNT,"Date",DOB)
+88 DO C
SET @GBL@(CNT,0)="</DateOfBirth>"
+89 DO OADD^PSOERXOU(GBL,.CNT,ADDL1,ADDL2,CITY,STATE,ZIP,CC)
+90 SET SGBL=$NAME(^PS(52.46,PIEN,13))
+91 DO OCOMM^PSOERXOU(GBL,SGBL,.CNT,PIEN_",",52.4613,52.46,14,PIEN_",")
+92 IF $LENGTH(CUNIT_BED_ROOM)
Begin DoDot:1
+93 DO C
SET @GBL@(CNT,0)="<PatientLocation>"
+94 DO BL(GBL,.CNT,"FacilityUnit",CUNIT)
+95 DO BL(GBL,.CNT,"BED",BED)
+96 DO BL(GBL,.CNT,"Room",ROOM)
+97 DO C
SET @GBL@(CNT,0)="</PatientLocation>"
+98 DO BL(GBL,.CNT,"LanguageNameCode",LANGNC)
End DoDot:1
+99 DO SUBSTNCE(PIEN,52.4619,GBL)
+100 IF $LENGTH(ACLN)
Begin DoDot:1
+101 DO C
SET @GBL@(CNT,0)="<AlternateContact>"
+102 DO ONAME^PSOERXOU(GBL,.CNT,"Name",ACLN,ACFN,ACMN,ACSUFF,ACPREF)
+103 IF $LENGTH(ACFLN)
Begin DoDot:2
+104 DO ONAME^PSOERXOU(GBL,.CNT,"FormerName",ACFLN,ACFFN,ACFMN,ACFPREF,ACFSUFF)
End DoDot:2
+105 DO OADD^PSOERXOU(GBL,.CNT,ACADL1,ACADL2,ACCITY,ACSTATE,ACPOSTAL,ACCC)
+106 SET SGBL=$NAME(^PS(52.46,PIEN,15))
+107 DO OCOMM^PSOERXOU(GBL,SGBL,.CNT,PIEN_",",52.4615,52.46,16,PIEN_",")
+108 DO BL(GBL,.CNT,"AlternateContactRelationship",ACRELAT)
+109 DO C
SET @GBL@(CNT,0)="</AlternateContact>"
+110 DO BL(GBL,.CNT,"GestationalAge",GESTAGE)
+111 DO BL(GBL,.CNT,"HospiceIndicator",HOSPIND)
End DoDot:1
+112 ;end new outbound building
+113 DO C
SET @GBL@(CNT,0)="</HumanPatient>"
+114 DO C
SET @GBL@(CNT,0)="</Patient>"
+115 QUIT
SUBSTNCE(PIEN,SFILE,GBL) ; patient substance (52.4619)
+1 NEW SFIEN,SUBIENS,TYPETEXT,TYPEQUAL,TYPECODE,LEVTEXT
+2 NEW LEVQUAL,LEVCODE,ROATEXT,ROAQUAL,ROACODE,SUBDAT
+3 SET SFIEN=0
SET IEN=5531
SET SFILE=52.4619
+4 if '$ORDER(^PS(52.46,PIEN,19,0))
QUIT
+5 FOR
SET SFIEN=$ORDER(^PS(52.46,PIEN,19,SFIEN))
if 'SFIEN
QUIT
Begin DoDot:1
+6 SET SUBIENS=SFIEN_","_PIEN_","
+7 DO GETS^DIQ(52.4619,SUBIENS,"**","E","SUBDAT")
+8 SET TYPETEXT=$GET(SUBDAT(SFILE,SUBIENS,1,"E"))
+9 SET TYPEQUAL=$GET(SUBDAT(SFILE,SUBIENS,2,"E"))
+10 SET TYPECODE=$GET(SUBDAT(SFILE,SUBIENS,3,"E"))
+11 SET LEVTEXT=$GET(SUBDAT(SFILE,SUBIENS,4,"E"))
+12 SET LEVQUAL=$GET(SUBDAT(SFILE,SUBIENS,5,"E"))
+13 SET LEVCODE=$GET(SUBDAT(SFILE,SUBIENS,6,"E"))
+14 SET ROATEXT=$GET(SUBDAT(SFILE,SUBIENS,7,"E"))
+15 SET ROAQUAL=$GET(SUBDAT(SFILE,SUBIENS,8,"E"))
+16 SET ROACODE=$GET(SUBDAT(SFILE,SUBIENS,9,"E"))
+17 IF $LENGTH(TYPETEXT_TYPEQUAL_TYPECODE_LEVTEXT_LEVQUAL_LEVCODE_ROATEXT_ROAQUAL_ROACODE)
Begin DoDot:2
+18 DO C
SET @GBL@(CNT,0)="<SubstanceUse>"
+19 DO C
SET @GBL@(CNT,0)="<Substance>"
+20 DO C
SET @GBL@(CNT,0)="<Type>"
+21 DO BL(GBL,.CNT,"Text",TYPETEXT)
+22 DO BL(GBL,.CNT,"Qualifier",TYPEQUAL)
+23 DO BL(GBL,.CNT,"Code",TYPECODE)
+24 DO C
SET @GBL@(CNT,0)="</Type>"
+25 IF $LENGTH(LEVTEXT_LEVQUAL_LEVCODE)
Begin DoDot:3
+26 DO C
SET @GBL@(CNT,0)="<Level>"
+27 DO BL(GBL,.CNT,"Text",LEVTEXT)
+28 DO BL(GBL,.CNT,"Qualifier",LEVQUAL)
+29 DO BL(GBL,.CNT,"Code",LEVCODE)
+30 DO C
SET @GBL@(CNT,0)="</Level>"
End DoDot:3
+31 IF $LENGTH(ROATEXT_ROAQUAL_ROACODE)
Begin DoDot:3
+32 DO C
SET @GBL@(CNT,0)="<RouteOfAdministration>"
+33 DO BL(GBL,.CNT,"Text",ROATEXT)
+34 DO BL(GBL,.CNT,"Qualifier",ROAQUAL)
+35 DO BL(GBL,.CNT,"Code",ROACODE)
+36 DO C
SET @GBL@(CNT,0)="</RouteOfAdministration>"
End DoDot:3
+37 DO C
SET @GBL@(CNT,0)="</Substance>"
+38 DO C
SET @GBL@(CNT,0)="</SubstanceUse>"
End DoDot:2
End DoDot:1
+39 QUIT
BL(GBL,CNT,TAG,VAR) ;
+1 if VAR=""
QUIT
+2 DO C
SET @GBL@(CNT,0)="<"_TAG_">"_$$SYMENC^MXMLUTL(VAR)_"</"_TAG_">"
+3 QUIT
C ;
+1 SET CNT=$GET(CNT)+1
+2 QUIT