Home   Package List   Routine Alphabetical List   Global Alphabetical List   FileMan Files List   FileMan Sub-Files List   Package Component Lists   Package-Namespace Mapping  
Routine: BSTSAPIB

BSTSAPIB.m

Go to the documentation of this file.
  1. BSTSAPIB ;GDIT/HS/BEE-Standard Terminology API Program ; 5 Nov 2012 9:53 AM
  1. ;;2.0;IHS STANDARD TERMINOLOGY;;Dec 01, 2016;Build 62
  1. ;
  1. Q
  1. ;
  1. VALTERM(OUT,IN) ;PEP - Returns whether a given term is a valid
  1. ;
  1. ;Input
  1. ; OUT - Output variable/global to return information in (VAR)
  1. ; IN - P1 - The exact term to lookup
  1. ; - P2 (Optional) - The code set Id or Name (default SNOMED US EXT '36')
  1. ; ID NAME
  1. ; 32770 ECLIPS
  1. ; 5180 FDA UNII
  1. ; 32773 GMRA Allergies with Maps
  1. ; 32772 GMRA Signs Symptoms
  1. ; 32771 IHS VANDF
  1. ; 32774 IHS Med Route
  1. ; 1552 RxNorm R
  1. ; 36 SNOMED CT US Extension
  1. ;
  1. ; - P3 (Optional) - Snapshot Date to check (default DT)
  1. ; - P4 (Optional) - LOCAL - Pass 1 or blank to perform local listing,
  1. ; Pass 2 for remote DTS listing
  1. ; - P5 (Optional) - DEBUG - Pass 1 to display debug information
  1. ; - P6 (Optional) - Mapping Parameters - Ex. EPI=288527008;VST=2087394;AF=With;PRB=50239
  1. ;
  1. ;Output
  1. ; Function returns - [1]^[2]^[3]
  1. ; [1] - 2:Remote information returned
  1. ; 1:Local information returned
  1. ; 0:No Information Returned
  1. ; [2] - Primary Remote Error Message
  1. ; [3] - Secondary Remote Error Message (if applicable)
  1. ;
  1. ; VAR(#) record(s) returned for any exact match
  1. ; Please see routine BSTSCDET, tag DETAIL for a detailed description of the
  1. ; information being returned by this API.
  1. ;
  1. NEW $ESTACK,$ETRAP S $ETRAP="D ERR^BSTSAPIB D UNWIND^%ZTER" ; SAC 2009 2.2.3.17
  1. ;
  1. N SEARCH,NMID,SNAPDT,MAX,LOCAL,NMIEN,RLIST,I,NSEARCH,C,%D
  1. N RESULT,DEBUG,BSTSR,BSTSI,BSTSWS,RES,BSTSD,X,%,%H,UPSRCH,INDATE
  1. K @OUT,STS
  1. ;
  1. I $G(DT)="" D DT^DICRW
  1. S IN=$G(IN,"")
  1. S SEARCH=$P(IN,U) I $TR(SEARCH," ")="" Q "0^Invalid Search String"
  1. S UPSRCH=$$UP^XLFSTR(SEARCH)
  1. S NMID=$P(IN,U,2) S:NMID="" NMID=36 S:NMID=30 NMID=36
  1. ;
  1. ;Convert namespace to number if needed
  1. I NMID'?1N.N D I NMID="" Q "0^Invalid Namespace"
  1. . S NMID=$O(^BSTS(9002318.1,"D",NMID,"")) Q:NMID=""
  1. . S NMID=$$GET1^DIQ(9002318.1,NMID_",",".01","I")
  1. ;
  1. S SNAPDT=$P(IN,U,3) S:SNAPDT]"" SNAPDT=$$DATE^BSTSUTIL(SNAPDT)
  1. S:SNAPDT="" SNAPDT=DT_".0001"
  1. S INDATE=$P(SNAPDT,".")
  1. S SNAPDT=$$FMTE^BSTSUTIL(SNAPDT)
  1. S MAX=50
  1. S LOCAL=$P(IN,U,4),LOCAL=$S(LOCAL=2:"",1:"1")
  1. S DEBUG=$P(IN,U,5),DEBUG=$S(DEBUG=1:"1",1:"")
  1. ;
  1. ;Handle strings with "'"
  1. S NSEARCH="" F I=1:1:$L(SEARCH) S C=$E(SEARCH,I),NSEARCH=NSEARCH_$S(C="'":"'",1:"")_C
  1. S BSTSWS("SEARCH")=NSEARCH
  1. S BSTSWS("STYPE")="S"
  1. S BSTSWS("NAMESPACEID")=NMID
  1. S BSTSWS("SUBSET")=""
  1. S BSTSWS("SNAPDT")=SNAPDT
  1. S BSTSWS("INDATE")=INDATE
  1. S BSTSWS("MAXRECS")=MAX
  1. S BSTSWS("BCTCHRC")=""
  1. S BSTSWS("BCTCHCT")=""
  1. S BSTSWS("RET")="PSCBIXAV"
  1. S BSTSWS("DAT")=""
  1. S BSTSWS("EXACTMATCH")="T"
  1. S BSTSWS("MPPRM")=$P(IN,U,7) ;BSTS*1.0*6;Mapping parameters
  1. ;
  1. ;Check for new version
  1. D CHECK^BSTSVRSN
  1. ;
  1. ;Make DTS Lookup call
  1. S BSTSR=1
  1. I LOCAL'=1 S BSTSR=$$SEARCH^BSTSWSV("RESULT",.BSTSWS,DEBUG) S:+BSTSR $P(BSTSR,U)=2
  1. ;
  1. ;If no results, try performing local search
  1. I $D(RESULT)<10 S BSTSD=$$SRC^BSTSSRCH("RESULT",.BSTSWS)
  1. ;
  1. ;If local search and no record try DTS Lookup
  1. I $D(RESULT)<10,LOCAL S BSTSR=$$SEARCH^BSTSWSV("RESULT",.BSTSWS,DEBUG) S:+BSTSR $P(BSTSR,U)=2
  1. ;
  1. ;Now loop through and find exact term - Combine like terms
  1. ;
  1. S NMIEN=$O(^BSTS(9002318.1,"B",NMID,""))
  1. S RES="" F S RES=$O(RESULT(RES)) Q:RES="" D
  1. . N REC,DIEN,TIEN,TERM,MATCH
  1. . S MATCH=0
  1. . S REC=RESULT(RES)
  1. . S DIEN=$P(REC,U,3) Q:DIEN=""
  1. . S TIEN=$O(^BSTS(9002318.3,"D",NMIEN,DIEN,"")) Q:TIEN=""
  1. . S TERM=$$GET1^DIQ(9002318.3,TIEN_",",1,"E") Q:TERM=""
  1. . ;
  1. . ;Perform regular match
  1. . I UPSRCH=($$UP^XLFSTR(TERM)) S MATCH=1
  1. . ;
  1. . ;Perform special concept search for UNII
  1. . I MATCH=0,NMID=5180 D
  1. .. N FSN,CIEN,DSC,CON
  1. .. S CIEN=$$GET1^DIQ(9002318.3,TIEN_",",.03,"I") Q:CIEN=""
  1. .. S FSN=$$GET1^DIQ(9002318.4,CIEN_",",1,"I") Q:FSN=""
  1. .. I UPSRCH'=($$UP^XLFSTR(FSN)) Q
  1. .. S CON=$$GET1^DIQ(9002318.4,CIEN_",",.02,"I") Q:CON=""
  1. .. S DSC=$P($$CONC^BSTSAPI(CON_"^5180"),"^") Q:DSC=""
  1. .. S $P(RESULT(RES),U,3)=DSC
  1. .. S MATCH=1
  1. . ;
  1. . I MATCH=0 K RESULT(RES) Q
  1. . ;
  1. . Q:$D(RLIST($P(RESULT(RES),U,1,2)))
  1. . S RLIST($P(RESULT(RES),U,1,2))=$P(RESULT(RES),U,3)
  1. K RESULT S RES="" F I=1:1 S RES=$O(RLIST(RES)) Q:RES="" S RESULT(I)=RES_U_RLIST(RES)
  1. ;
  1. ;Get the detail for the record
  1. S BSTSD=0
  1. I $D(RESULT)>1 D
  1. . S BSTSWS("STYPE")="S"
  1. . S BSTSD=$$DETAIL^BSTSSRCH(OUT,.BSTSWS,.RESULT)
  1. S $P(BSTSR,U)=$S(BSTSD=0:0,(+BSTSR)>0:+BSTSR,1:1)
  1. Q BSTSR
  1. ;
  1. DSCLKP(OUT,IN) ;EP - Returns detail information for a specified Description Id
  1. ;
  1. ;Input
  1. ; OUT - Output variable/global to return information in (VAR)
  1. ; IN - P1 - The Description Id to look up
  1. ; - P2 (Optional) - The code set Id (default SNOMED US EXT '36')
  1. ; - P3 (Optional) - LOCAL - Pass 1 or blank to perform local listing,
  1. ; Pass 2 for remote DTS listing
  1. ; - P4 (Optional) - DEBUG - Pass 1 to display debug information
  1. ; - P5 (Optional) - Snapshot Date to check (default DT)
  1. ; - P6 (Optional) - Mapping Parameters - Ex. EPI=288527008;VST=2087394;AF=With;PRB=50239
  1. ;
  1. ;Output
  1. ; Function returns - [1]^[2]^[3]
  1. ; [1] - 2:Remote information returned
  1. ; 1:Local information returned
  1. ; 0:No Information Returned
  1. ; [2] - Primary Remote Error Message
  1. ; [3] - Secondary Remote Error Message (if applicable)
  1. ;
  1. ; VAR(#) record is returned for any exact match
  1. ; Information returned is in the same (full detail) format
  1. ; as the detail returned for each record in the
  1. ; search API
  1. ;
  1. NEW $ESTACK,$ETRAP S $ETRAP="D ERR^BSTSAPIB D UNWIND^%ZTER" ; SAC 2009 2.2.3.17
  1. ;
  1. K @OUT
  1. ;
  1. N RESULT,SEARCH,NMID,SNAPDT,MAX,LOCAL,DEBUG,BSTSWS,BSTSR,BSTSD,X,%,%H,DIFILE,%D,INDATE
  1. ;
  1. I $G(DT)="" D DT^DICRW
  1. S IN=$G(IN,"")
  1. S SEARCH=$P(IN,U) I SEARCH="" Q "0^Invalid Description Id"
  1. S NMID=$P(IN,U,2) S:NMID="" NMID=36 S:NMID=30 NMID=36
  1. S SNAPDT=$P(IN,U,5)
  1. S:SNAPDT="" SNAPDT=DT
  1. S SNAPDT=SNAPDT_".2400"
  1. S INDATE=$P(SNAPDT,".")
  1. S SNAPDT=$$FMDT2XML^BSTSUTIL(SNAPDT)
  1. S MAX=100
  1. S LOCAL=$P(IN,U,3),LOCAL=$S(LOCAL=2:"",1:"1")
  1. S DEBUG=$P(IN,U,4),DEBUG=$S(DEBUG=1:"1",1:"")
  1. ;
  1. S BSTSWS("SEARCH")=SEARCH
  1. S BSTSWS("STYPE")="S"
  1. S BSTSWS("NAMESPACEID")=NMID
  1. S BSTSWS("SUBSET")=""
  1. S BSTSWS("SNAPDT")=SNAPDT
  1. S BSTSWS("INDATE")=INDATE
  1. S BSTSWS("MAXRECS")=MAX
  1. S BSTSWS("BCTCHRC")=""
  1. S BSTSWS("BCTCHCT")=""
  1. S BSTSWS("RET")="PSCBIXAV"
  1. S BSTSWS("DAT")=""
  1. S BSTSWS("MPPRM")=$P(IN,U,6) ;BSTS*1.0*6;Mapping parameters
  1. ;
  1. ;Make DTS Lookup call
  1. S BSTSR=1
  1. I LOCAL'=1 S BSTSR=$$DSCLKP^BSTSWSV("RESULT",.BSTSWS,DEBUG) S:+BSTSR $P(BSTSR,U)=2
  1. ;
  1. ;If no results, try performing local search
  1. I $D(RESULT)<10 S BSTSD=$$DSC^BSTSLKP("RESULT",.BSTSWS)
  1. ;
  1. ;If local search and no record try DTS Lookup
  1. I $D(RESULT)<10,LOCAL S BSTSR=$$DSCLKP^BSTSWSV("RESULT",.BSTSWS,DEBUG) S:+BSTSR $P(BSTSR,U)=2
  1. ;
  1. ;Get the detail for the record
  1. S BSTSD=0
  1. I $D(RESULT)>1 D
  1. . S BSTSD=$$DETAIL^BSTSSRCH(OUT,.BSTSWS,.RESULT)
  1. S $P(BSTSR,U)=$S(BSTSD=0:0,(+BSTSR)>0:+BSTSR,1:1)
  1. Q BSTSR
  1. ;
  1. DTSLKP(OUT,IN) ;EP - Returns detail information for a specified DTS Id
  1. ;
  1. ;Input
  1. ; OUT - Output variable/global to return information in (VAR)
  1. ; IN - P1 - The DTS Id to look up
  1. ; - P2 (Optional) - The code set Id (default SNOMED US EXT '36')
  1. ; - P3 (Optional) - Snapshot Date to check (default DT)
  1. ; - P4 (Optional) - LOCAL - Pass 1 to perform local listing, otherwise leave
  1. ; blank for remote listing
  1. ; - P5 (Optional) - DEBUG - Pass 1 to display debug information
  1. ; - P6 (System Use Only) - TBYPASS - Pass 1 to bypass server timeout checks, otherwise
  1. ; leave blank. Do not use for regular calls
  1. ; - P7 (Optional) - Mapping Parameters - Ex. EPI=288527008;VST=2087394;AF=With;PRB=50239
  1. ;
  1. ;Output
  1. ; Function returns - [1]^[2]^[3]
  1. ; [1] - 2:Remote information returned
  1. ; 1:Local information returned
  1. ; 0:No Information Returned
  1. ; [2] - Primary Remote Error Message
  1. ; [3] - Secondary Remote Error Message (if applicable)
  1. ;
  1. ; VAR(#) record is returned for a match
  1. ; Information returned is in the same (full detail) format
  1. ; as the detail returned for each record in the
  1. ; search API
  1. ;
  1. NEW $ESTACK,$ETRAP S $ETRAP="D ERR^BSTSAPIB D UNWIND^%ZTER" ; SAC 2009 2.2.3.17
  1. ;
  1. K @OUT
  1. ;
  1. N RESULT,SEARCH,NMID,SNAPDT,MAX,LOCAL,DEBUG,BSTSWS,BSTSR,BSTSD,X,%,%H
  1. N DIFILE,%D,INDATE,TBYPASS
  1. ;
  1. I $G(DT)="" D DT^DICRW
  1. S IN=$G(IN,"")
  1. S SEARCH=$P(IN,U) I 'SEARCH Q "0^Invalid DTS Id"
  1. S NMID=$P(IN,U,2) S:NMID="" NMID=36 S:NMID=30 NMID=36
  1. S SNAPDT=$P(IN,U,3) S:SNAPDT]"" SNAPDT=$$DATE^BSTSUTIL(SNAPDT)
  1. ;BSTS*1.0*6;Default snapshot date to one day in the future
  1. ;S:SNAPDT="" SNAPDT=DT_".0001"
  1. I SNAPDT="" D
  1. . NEW X1,X2,X
  1. . S X1=DT,X2=1
  1. . D C^%DTC
  1. . S SNAPDT=X_".0001"
  1. S INDATE=$P(SNAPDT,".")
  1. S SNAPDT=$$FMTE^BSTSUTIL(SNAPDT)
  1. S MAX=100
  1. S LOCAL=$P(IN,U,4),LOCAL=$S(LOCAL=1:"1",1:"")
  1. S DEBUG=$P(IN,U,5),DEBUG=$S(DEBUG=1:"1",1:"")
  1. S TBYPASS=$P(IN,U,6),TBYPASS=$S(TBYPASS=1:"1",1:"")
  1. ;
  1. S BSTSWS("SEARCH")=SEARCH
  1. S BSTSWS("STYPE")="F"
  1. S BSTSWS("NAMESPACEID")=NMID
  1. S BSTSWS("SUBSET")=""
  1. S BSTSWS("SNAPDT")=SNAPDT
  1. S BSTSWS("INDATE")=INDATE
  1. S BSTSWS("MAXRECS")=MAX
  1. S BSTSWS("BCTCHRC")=""
  1. S BSTSWS("BCTCHCT")=""
  1. S BSTSWS("RET")="PSCBIXAV"
  1. S BSTSWS("DAT")=""
  1. S BSTSWS("TBYPASS")=TBYPASS
  1. S BSTSWS("MPPRM")=$P(IN,U,7) ;BSTS*1.0*6;Mapping parameters
  1. ;
  1. ;Make DTS Lookup call
  1. S BSTSR=1
  1. ;
  1. I LOCAL'=1 S BSTSR=$$DTSSR^BSTSWSV("RESULT",.BSTSWS,DEBUG) S:+BSTSR $P(BSTSR,U)=2
  1. ;
  1. ;If no results, try performing local search
  1. I $D(RESULT)<10 S BSTSD=$$DTS^BSTSLKP("RESULT",.BSTSWS)
  1. ;
  1. ;If no results and local, make DTS call
  1. I $D(RESULT)<10,LOCAL S BSTSR=$$DTSSR^BSTSWSV("RESULT",.BSTSWS,DEBUG) S:+BSTSR $P(BSTSR,U)=2
  1. ;
  1. ;Get the detail for the record
  1. S BSTSD=0
  1. I $D(RESULT)>1 D
  1. . S BSTSWS("STYPE")="F"
  1. . S BSTSD=$$DETAIL^BSTSSRCH(OUT,.BSTSWS,.RESULT)
  1. S $P(BSTSR,U)=$S(BSTSD=0:0,(+BSTSR)>0:+BSTSR,1:1)
  1. Q BSTSR
  1. ;
  1. CNCLKP(OUT,IN) ;EP - Returns detail information for a specified Concept Id
  1. ;
  1. ;Input
  1. ; OUT - Output variable/global to return information in (VAR)
  1. ; IN - P1 - The Concept Id to look up
  1. ; - P2 (Optional) - The code set Id (default SNOMED US EXT '36')
  1. ; - P3 (Optional) - Snapshot Date to check (default DT)
  1. ; - P4 (Optional) - LOCAL - Pass 1 or blank to perform local listing,
  1. ; Pass 2 for remote DTS listing
  1. ; - P5 (Optional) - DEBUG - Pass 1 to display debug information
  1. ; - P6 (Optional) - Mapping Parameters - Ex. EPI=288527008;VST=2087394;AF=With;PRB=50239
  1. ;
  1. ;Output
  1. ; Function returns - [1]^[2]^[3]
  1. ; [1] - 2:Remote information returned
  1. ; 1:Local information returned
  1. ; 0:No Information Returned
  1. ; [2] - Primary Remote Error Message
  1. ; [3] - Secondary Remote Error Message (if applicable)
  1. ;
  1. ; VAR(#) record is returned for a match
  1. ; Information returned is in the same (full detail) format
  1. ; as the detail returned for each record in the
  1. ; search API
  1. ;
  1. NEW $ESTACK,$ETRAP S $ETRAP="D ERR^BSTSAPIB D UNWIND^%ZTER" ; SAC 2009 2.2.3.17
  1. ;
  1. K @OUT
  1. ;
  1. N RESULT,SEARCH,NMID,SNAPDT,MAX,LOCAL,DEBUG,BSTSWS,BSTSR,BSTSD,X,%,%H,DIFILE,%D,INDATE
  1. ;
  1. I $G(DT)="" D DT^DICRW
  1. S IN=$G(IN,"")
  1. S SEARCH=$P(IN,U) I SEARCH="" Q "0^Invalid Concept Id"
  1. S NMID=$P(IN,U,2) S:NMID="" NMID=36 S:NMID=30 NMID=36
  1. S SNAPDT=$P(IN,U,3) S:SNAPDT="" SNAPDT=DT
  1. S INDATE=$P(SNAPDT,".")
  1. S SNAPDT=SNAPDT_".2400"
  1. S SNAPDT=$$FMDT2XML^BSTSUTIL(SNAPDT)
  1. S MAX=100
  1. S LOCAL=$P(IN,U,4),LOCAL=$S(LOCAL=2:"",1:"1")
  1. S DEBUG=$P(IN,U,5),DEBUG=$S(DEBUG=1:"1",1:"")
  1. ;
  1. S BSTSWS("SEARCH")=SEARCH
  1. S BSTSWS("STYPE")="F"
  1. S BSTSWS("NAMESPACEID")=NMID
  1. S BSTSWS("SUBSET")=""
  1. S BSTSWS("SNAPDT")=SNAPDT
  1. S BSTSWS("INDATE")=INDATE
  1. S BSTSWS("MAXRECS")=MAX
  1. S BSTSWS("BCTCHRC")=""
  1. S BSTSWS("BCTCHCT")=""
  1. S BSTSWS("RET")="PSCBIXAV"
  1. S BSTSWS("DAT")=""
  1. S BSTSWS("MPPRM")=$P(IN,U,6) ;BSTS*1.0*6;Mapping parameters
  1. ;
  1. ;Make DTS Lookup call
  1. S BSTSR=1
  1. I LOCAL'=1 S BSTSR=$$CNCSR^BSTSWSV("RESULT",.BSTSWS,DEBUG) S:+BSTSR $P(BSTSR,U)=2
  1. ;
  1. ;If no results, try performing local search
  1. I $D(RESULT)<10 S BSTSD=$$CNC^BSTSLKP("RESULT",.BSTSWS)
  1. ;
  1. ;If local search and no results try doing DTS lookup
  1. I $D(RESULT)<10,LOCAL S BSTSR=$$CNCSR^BSTSWSV("RESULT",.BSTSWS,DEBUG) S:+BSTSR $P(BSTSR,U)=2
  1. ;
  1. ;Get the detail for the record
  1. S BSTSD=0
  1. I $D(RESULT)>1 D
  1. . S BSTSWS("STYPE")="F"
  1. . S BSTSD=$$DETAIL^BSTSSRCH(OUT,.BSTSWS,.RESULT)
  1. S $P(BSTSR,U)=$S(BSTSD=0:0,(+BSTSR)>0:+BSTSR,1:1)
  1. Q BSTSR
  1. ;
  1. VALSBTRM(OUT,IN) ;EP - Returns whether a given term is in a particular subset
  1. ;
  1. ;Input
  1. ; OUT - Output variable/global to return information in (VAR)
  1. ; IN - P1 - Description Id of term to check
  1. ; - P2 - The subset to look in
  1. ; - P3 (Optional) - The code set Id (default SNOMED US EXT '36')
  1. ; - P4 (Optional) - LOCAL - Pass 1 or blank to perform local listing,
  1. ; Pass 2 for remote DTS listing
  1. ; - P5 (Optional) - DEBUG - Pass 1 to display debug information
  1. ;
  1. ;Output
  1. ; Function returns - [1]^[2]^[3]
  1. ; [1] - 2:Remote information returned
  1. ; 1:Local information returned
  1. ; 0:No Information Returned
  1. ; [2] - Primary Remote Error Message
  1. ; [3] - Secondary Remote Error Message (if applicable)
  1. ;
  1. ; Single VAR record is returned
  1. ; VAR = 1:Term is in the provided subset, 0:Term is not in the provided subset
  1. ;
  1. NEW $ESTACK,$ETRAP S $ETRAP="D ERR^BSTSAPIB D UNWIND^%ZTER" ; SAC 2009 2.2.3.17
  1. ;
  1. NEW NMID,DSC,SUB,LOCAL,DEBUG,DIN,SBVAR,BSTSR,SB,%D
  1. ;
  1. K @OUT
  1. ;
  1. I $G(DT)="" D DT^DICRW
  1. S IN=$G(IN,"")
  1. S NMID=$P(IN,U,3) S:NMID="" NMID=36 S:NMID=30 NMID=36
  1. S DSC=$P(IN,U) I DSC="" S @OUT=0 Q "0^Missing Description Id"
  1. S SUB=$P(IN,U,2) I SUB="" S @OUT=0 Q "0^Missing Subset"
  1. S LOCAL=$P(IN,U,4)
  1. S DEBUG=$P(IN,U,5)
  1. S DIN=DSC_U_NMID_U_LOCAL_U_DEBUG
  1. ;
  1. ;Retrieve the detail for the term
  1. S BSTSR=$$DSCLKP^BSTSAPI("SBVAR",DIN)
  1. ;
  1. S @OUT=0
  1. ;
  1. ;Loop through subsets for a match
  1. S SB="" F S SB=$O(SBVAR(1,"SUB",SB)) Q:SB="" I $G(SBVAR(1,"SUB",SB,"SUB"))=SUB S @OUT=1 Q
  1. ;
  1. Q BSTSR
  1. ;
  1. ERR ;
  1. D ^%ZTER
  1. Q