PSSPGX1 ;BIR/MV - PHARMACOGENOMICS API CONTINUE ;09/20/07
;;1.0;PHARMACY DATA MANAGEMENT;**262**;9/30/97;Build 66
;
; Reference to ^MXMLDOM is supported by DBIA #3561
;
PGXMAIN(PSSBASE,PSSGENES,PSSDRUGS,PSSRSLT) ;
;PSSBASE = Name of subscript(ex: PSSPGX) [require]
;PSSGENES = Genetic test array for PGX order checks.
; PSSGENES(GENE,"GENE")="" [require]
; PSSGENES(GENE,"GENOTYPE")=VINCI_Genotype - ex: PSSGENES(CYP2D6,"GENOTYPE")="*>*9/*10"
; PSSGENES(GENE,"PHENOTYPE")=VINCI_Phenotype - ex: PSSGENES(CYP2D6,"PHENOTYPE")="INTERMEDIATE/NORMAL/ULTRARAPID METABOLIZER"
; PSSGENES(GENE,"ACTIVITY_SCORE")=VINCI_ActivityScore - ex: PSSGENES(CYP2D6,"ACTIVITY_SCORE")="1-3"
;PSSDRUGS = Drugs array for PGX order checks.
; PSSDRUGS(IEN,"DRUGNAME")=Drug name [require]; IEN of file 50
; PSSDRUGS(PSSIEN,"GCN")=GCNSEQNO [require]
; PSSDRUGS(PSSIEN,"VUID")=VUID [require]
;PSSRSLT = 1 for successful; results are stored in ^TMP($J,"PSSPGX")
; -1^error message (ex: -1^ERROR #6059: Unable to open TCP/IP socket...
NEW PSSXML,PSSRSLT,PSSOUT,PSSWS,PSSDOC
;PSSFDBFG=1 (VENDOR DOWN) PSSFDBFG=2 (exception. ex: PSSXML has incorrected path or API name).
I $G(PSSBASE)="" S PSSBASE="PSS"
K ^TMP($J,"OUT","EXCEPTION"),^TMP($J,"OUT XML"),^TMP("MXMLDOM",$J)
K PSSFDBFG
S PSSXML=$$BLDXML(.PSSGENES,.PSSDRUGS)
D SETWEBS(.PSSWS)
S PSSRSLT=$$POST^PSSPGX2(.PSSDOC,PSSXML,.PSSWS) ;cloned from ^PSSHRQ2
I +PSSRSLT=-1 S PSSRSLT="-1^An exception has occurred",PSSFDBFG=2
;I +PSSRSLT'=1 S PSSRSLT="-1^An exception has occurred",PSSFDBFG=2
I +$G(PSSDOC),$$NAME^MXMLDOM(PSSDOC,1)="exception" S PSSRSLT="-1^An exception has occurred",PSSFDBFG=2
I $G(^TMP("MXMLDOM",$J,1,1))'="PEPSResponse" S PSSFDBFG=1
I $G(^TMP("MXMLDOM",$J,1,1))="exception" S PSSFDBFG=2
K ^TMP("PSSPGXBS",$J),^TMP($J,"PSSXWARN")
M ^TMP("PSSPGXBS",$J)=^TMP("MXMLDOM",$J)
D:'+$G(PSSOPTFG) CHECK^PSSPGXPR ;PSSOPTFG is set when calling from the Test option (PGXOPT^PSSGPX)
D:+$G(PSSDOC) DELETE^MXMLDOM(+PSSDOC)
K:'+$G(PSSOPTFG) ^TMP("PSSPGXBS",$J) ;^TMP($J,"PSSXWARN")
Q
BLDXML(PSSGENES,PSSDRUGS) ;
; @DRIVER
; @DESC Builds the PEPSRequest PSSXML element
; @PSSDRUGS drug list
; @RETURNS An xml string representing an entire PGX WARNING.
;
;PSSGENES - array consists of Genotype, Phenotype, ACTIVITY_SCORE
;PSSGENES(GENE,"GENOTYPE")=VINCI_Genotype - ex: PSSGENES(CYP2D6,"GENOTYPE")="*>*9/*10"
;PSSGENES(GENE,"PHENOTYPE")=VINCI_Phenotype - ex: PSSGENES(CYP2D6,"PHENOTYPE")="INTERMEDIATE/NORMAL/ULTRARAPID METABOLIZER"
;PSSGENES(GENE,"ACTIVITY_SCORE")=VINCI_ActivityScore - ex: PSSGENES(CYP2D6,"ACTIVITY_SCORE")="1-3"
;PSSDRUGS - array of Drugs
; PSSDRUGS(IEN)=IEN file 50
; PSSDRUGS(IEN,"DRUGNAME")=drug name (DD, OI, additive, or solution name)
; PSSDRUGS(IEN,"GCN")=GCN sequence number
;
NEW PSS,PSSXML
;
S PSS("PSSXMLHeader")=$$XMLHDR^MXMLUTL
S PSS("xmlns")=$$ATRIBUTE^PSSHRCOM("xmlns","gov/va/med/pharmacy/peps/external/common/preencapsulation/vo/drug/check/request")
S PSS("xmlnsxsi")=$$ATRIBUTE^PSSHRCOM("xmlns:xsi","http://www.w3.org/2001/XMLSchema-instance")
;
S PSSXML=PSS("PSSXMLHeader")
S PSSXML=PSSXML_"<PEPSRequest"
S PSSXML=PSSXML_" "_PSS("xmlns")
S PSSXML=PSSXML_" "_PSS("xmlnsxsi")
S PSSXML=PSSXML_">"
S PSSXML=PSSXML_$$HEADER
S PSSXML=PSSXML_$$BODY(.PSSGENES,.PSSDRUGS)
S PSSXML=PSSXML_"</PEPSRequest>"
;
Q PSSXML
; @DESC Builds the Header PSSXML element. A header is the section of the PSSXML
; that includes time, server, and user. This item holds no business logic, it
; only records debugging information.
; @RETURNS A the PSSXML string representing the header element.
;
NEW PSSXML
S PSSXML="<Header>"
S PSSXML=PSSXML_$$HDRTIME^PSSHREQ
S PSSXML=PSSXML_$$HDRSERVR^PSSHREQ
S PSSXML=PSSXML_$$HDRMUSER^PSSHREQ
S PSSXML=PSSXML_"</Header>"
;
; Return composed header
Q PSSXML
;
BODY(PSSGENES,PSSDRUGS) ;
; @DESC Builds the Body PSSXML element
; @PSSDRUGS drug list
; @RETURNS An PSSXML string representing the body element.
;
NEW PSSXML,PSSDIEN
;
S PSSXML="<Body><drugCheck>"
;
S PSSXML=PSSXML_$$ATRIBUTE^PSSHRCOM("<checks prospectiveOnly","true")_" "_$$ATRIBUTE^PSSHRCOM("useCustomTables","false")_">"
S PSSXML=PSSXML_"<pgxDrugCheck>"
S PSSXML=PSSXML_$$GENES(.PSSGENES)
S PSSXML=PSSXML_"</pgxDrugCheck></checks>"
;
I +$O(PSSDRUGS(0)) D
. S PSSXML=PSSXML_"<prospectiveDrugs>"
. ;get drug info
. S PSSXML=PSSXML_$$DRUGS(.PSSDRUGS)
. S PSSXML=PSSXML_"</prospectiveDrugs>"
;
S PSSXML=PSSXML_"</drugCheck></Body>"
Q PSSXML
;;
GENES(PSSGENES) ;
;PSSGENES(GENE,"GENOTYPE")=VINCI_Genotype - ex: PSSGENES(CYP2D6,"GENOTYPE")="*>*9/*10"
;PSSGENES(GENE,"PHENOTYPE")=VINCI_Phenotype - ex: PSSGENES(CYP2D6,"PHENOTYPE")="INTERMEDIATE/NORMAL/ULTRARAPID METABOLIZER"
;PSSGENES(GENE,"ACTIVITY_SCORE")=VINCI_ActivityScore - ex: PSSGENES(CYP2D6,"ACTIVITY_SCORE")="1-3"
;
NEW PSSXML,PSSGENE,PSSGENO,PSSPHENO,PSSASCRE,PSSGTEST
S (PSSXML,PSSGENO,PSSPHENO,PSSASCRE)=""
S PSSGENE="" F S PSSGENE=$O(PSSGENES(PSSGENE)) Q:PSSGENE="" D
. S PSSGENO=$G(PSSGENES(PSSGENE,"GENOTYPE"))
. S PSSPHENO=$G(PSSGENES(PSSGENE,"PHENOTYPE"))
. S PSSASCRE=$G(PSSGENES(PSSGENE,"ACTIVITY_SCORE"))
. S PSSGTEST=$S(PSSGENO]"":"true",PSSPHENO]"":"true",PSSASCRE]"":"true",1:"false")
. S PSSXML=PSSXML_"<genomicFinding>"
. S PSSXML=PSSXML_"<gene>"_$$VNGENE(PSSGENE)_"</gene>"
. S:PSSPHENO]"" PSSXML=PSSXML_"<phenoType>"_$$VNPHEN(PSSPHENO)_"</phenoType>"
. S:PSSGENO]"" PSSXML=PSSXML_"<genoType>"_PSSGENO_"</genoType>"
. S:PSSASCRE]"" PSSXML=PSSXML_"<activityScore>"_PSSASCRE_"</activityScore>"
. S PSSXML=PSSXML_"<geneTested>"_PSSGTEST_"</geneTested>"
. S PSSXML=PSSXML_"<testResultPending>"_"false"_"</testResultPending><tag/>"
. S PSSXML=PSSXML_"</genomicFinding>"
Q PSSXML
;
DRUGS(PSSDRUGS) ;constructing XML for drug info
NEW PSSGCN,PSSDNM,PSSXML,PSSADNM,PSSAGCN,PSSIEN,PSSAIEN,PSSVUID,PSSAVUID,PSSON
S PSSXML=""
F PSSIEN=0:0 S PSSIEN=$O(PSSDRUGS(PSSIEN)) Q:'PSSIEN D
. S (PSSAGCN,PSSAIEN,PSSDNM)=""
. S PSSGCN=+$G(PSSDRUGS(PSSIEN,"GCN")) Q:'PSSGCN
. S PSSDNM=$G(PSSDRUGS(PSSIEN,"DRUGNAME"))
. S PSSVUID=$G(PSSDRUGS(PSSIEN,"VUID"))
. I +PSSGCN S PSSAGCN=$$ATRIBUTE^PSSHRCOM("gcnSeqNo",PSSGCN)
. I PSSDNM]"" S PSSADNM=$$ATRIBUTE^PSSHRCOM("drugName",PSSDNM)
. S PSSAIEN=$$ATRIBUTE^PSSHRCOM("ien",PSSIEN)
. S PSSAVUID=$$ATRIBUTE^PSSHRCOM("vuid",PSSVUID)
. S PSSON=$$ATRIBUTE^PSSHRCOM("orderNumber","Z;1;Prospect")
. S PSSXML=PSSXML_"<drug "_PSSADNM_" "_PSSAGCN_" "_PSSAVUID_" "_PSSAIEN_" "_PSSON_" "_"/>"
Q PSSXML
;
SETWEBS(PSSWS) ;Define server name and path
S PSSWS("SERVICE_NAME")="ORDER_CHECKS"
S PSSWS("PATH")="ordercheck"
S PSSWS("SERVER")="PEPS"
Q
;
VNGENE(PSSVNG) ;Find Vendor Gene
N PSSVNL,PSSVNGX,PSSVNIEN,PSSVNRS
S PSSVNIEN=0
S PSSVNGX=$$UP^XLFSTR(PSSVNG)
F PSSVNL="C","B","D" Q:PSSVNIEN S PSSVNIEN=$O(^PS(51.26,PSSVNL,PSSVNGX,0))
I 'PSSVNIEN Q PSSVNG
S PSSVNRS=$P($G(^PS(51.26,PSSVNIEN,0)),"^",2) I PSSVNRS="" Q PSSVNG
Q PSSVNRS
;
VNPHEN(PSSVNP) ;Find Vendor Phenotype
N PSSVNL,PSSVNPX,PSSVNIEN,PSSVNRS
S PSSVNIEN=0
S PSSVNPX=$$UP^XLFSTR(PSSVNP)
F PSSVNL="C","B","D" Q:PSSVNIEN S PSSVNIEN=$O(^PS(51.28,PSSVNL,PSSVNPX,0))
I 'PSSVNIEN Q PSSVNP
S PSSVNRS=$P($G(^PS(51.28,PSSVNIEN,0)),"^",2) I PSSVNRS="" Q PSSVNP
Q PSSVNRS
--- Routine Detail --- with STRUCTURED ROUTINE LISTING ---[H[J[2J[HPSSPGX1 7399 printed Mar 25, 2026@15:58:10 Page 2
PSSPGX1 ;BIR/MV - PHARMACOGENOMICS API CONTINUE ;09/20/07
+1 ;;1.0;PHARMACY DATA MANAGEMENT;**262**;9/30/97;Build 66
+2 ;
+3 ; Reference to ^MXMLDOM is supported by DBIA #3561
+4 ;
PGXMAIN(PSSBASE,PSSGENES,PSSDRUGS,PSSRSLT) ;
+1 ;PSSBASE = Name of subscript(ex: PSSPGX) [require]
+2 ;PSSGENES = Genetic test array for PGX order checks.
+3 ; PSSGENES(GENE,"GENE")="" [require]
+4 ; PSSGENES(GENE,"GENOTYPE")=VINCI_Genotype - ex: PSSGENES(CYP2D6,"GENOTYPE")="*>*9/*10"
+5 ; PSSGENES(GENE,"PHENOTYPE")=VINCI_Phenotype - ex: PSSGENES(CYP2D6,"PHENOTYPE")="INTERMEDIATE/NORMAL/ULTRARAPID METABOLIZER"
+6 ; PSSGENES(GENE,"ACTIVITY_SCORE")=VINCI_ActivityScore - ex: PSSGENES(CYP2D6,"ACTIVITY_SCORE")="1-3"
+7 ;PSSDRUGS = Drugs array for PGX order checks.
+8 ; PSSDRUGS(IEN,"DRUGNAME")=Drug name [require]; IEN of file 50
+9 ; PSSDRUGS(PSSIEN,"GCN")=GCNSEQNO [require]
+10 ; PSSDRUGS(PSSIEN,"VUID")=VUID [require]
+11 ;PSSRSLT = 1 for successful; results are stored in ^TMP($J,"PSSPGX")
+12 ; -1^error message (ex: -1^ERROR #6059: Unable to open TCP/IP socket...
+13 NEW PSSXML,PSSRSLT,PSSOUT,PSSWS,PSSDOC
+14 ;PSSFDBFG=1 (VENDOR DOWN) PSSFDBFG=2 (exception. ex: PSSXML has incorrected path or API name).
+15 IF $GET(PSSBASE)=""
SET PSSBASE="PSS"
+16 KILL ^TMP($JOB,"OUT","EXCEPTION"),^TMP($JOB,"OUT XML"),^TMP("MXMLDOM",$JOB)
+17 KILL PSSFDBFG
+18 SET PSSXML=$$BLDXML(.PSSGENES,.PSSDRUGS)
+19 DO SETWEBS(.PSSWS)
+20 ;cloned from ^PSSHRQ2
SET PSSRSLT=$$POST^PSSPGX2(.PSSDOC,PSSXML,.PSSWS)
+21 IF +PSSRSLT=-1
SET PSSRSLT="-1^An exception has occurred"
SET PSSFDBFG=2
+22 ;I +PSSRSLT'=1 S PSSRSLT="-1^An exception has occurred",PSSFDBFG=2
+23 IF +$GET(PSSDOC)
IF $$NAME^MXMLDOM(PSSDOC,1)="exception"
SET PSSRSLT="-1^An exception has occurred"
SET PSSFDBFG=2
+24 IF $GET(^TMP("MXMLDOM",$JOB,1,1))'="PEPSResponse"
SET PSSFDBFG=1
+25 IF $GET(^TMP("MXMLDOM",$JOB,1,1))="exception"
SET PSSFDBFG=2
+26 KILL ^TMP("PSSPGXBS",$JOB),^TMP($JOB,"PSSXWARN")
+27 MERGE ^TMP("PSSPGXBS",$JOB)=^TMP("MXMLDOM",$JOB)
+28 ;PSSOPTFG is set when calling from the Test option (PGXOPT^PSSGPX)
if '+$GET(PSSOPTFG)
DO CHECK^PSSPGXPR
+29 if +$GET(PSSDOC)
DO DELETE^MXMLDOM(+PSSDOC)
+30 ;^TMP($J,"PSSXWARN")
if '+$GET(PSSOPTFG)
KILL ^TMP("PSSPGXBS",$JOB)
+31 QUIT
BLDXML(PSSGENES,PSSDRUGS) ;
+1 ; @DRIVER
+2 ; @DESC Builds the PEPSRequest PSSXML element
+3 ; @PSSDRUGS drug list
+4 ; @RETURNS An xml string representing an entire PGX WARNING.
+5 ;
+6 ;PSSGENES - array consists of Genotype, Phenotype, ACTIVITY_SCORE
+7 ;PSSGENES(GENE,"GENOTYPE")=VINCI_Genotype - ex: PSSGENES(CYP2D6,"GENOTYPE")="*>*9/*10"
+8 ;PSSGENES(GENE,"PHENOTYPE")=VINCI_Phenotype - ex: PSSGENES(CYP2D6,"PHENOTYPE")="INTERMEDIATE/NORMAL/ULTRARAPID METABOLIZER"
+9 ;PSSGENES(GENE,"ACTIVITY_SCORE")=VINCI_ActivityScore - ex: PSSGENES(CYP2D6,"ACTIVITY_SCORE")="1-3"
+10 ;PSSDRUGS - array of Drugs
+11 ; PSSDRUGS(IEN)=IEN file 50
+12 ; PSSDRUGS(IEN,"DRUGNAME")=drug name (DD, OI, additive, or solution name)
+13 ; PSSDRUGS(IEN,"GCN")=GCN sequence number
+14 ;
+15 NEW PSS,PSSXML
+16 ;
+17 SET PSS("PSSXMLHeader")=$$XMLHDR^MXMLUTL
+18 SET PSS("xmlns")=$$ATRIBUTE^PSSHRCOM("xmlns","gov/va/med/pharmacy/peps/external/common/preencapsulation/vo/drug/check/request")
+19 SET PSS("xmlnsxsi")=$$ATRIBUTE^PSSHRCOM("xmlns:xsi","http://www.w3.org/2001/XMLSchema-instance")
+20 ;
+21 SET PSSXML=PSS("PSSXMLHeader")
+22 SET PSSXML=PSSXML_"<PEPSRequest"
+23 SET PSSXML=PSSXML_" "_PSS("xmlns")
+24 SET PSSXML=PSSXML_" "_PSS("xmlnsxsi")
+25 SET PSSXML=PSSXML_">"
+26 SET PSSXML=PSSXML_$$HEADER
+27 SET PSSXML=PSSXML_$$BODY(.PSSGENES,.PSSDRUGS)
+28 SET PSSXML=PSSXML_"</PEPSRequest>"
+29 ;
+30 QUIT PSSXML
+1 ; @DESC Builds the Header PSSXML element. A header is the section of the PSSXML
+2 ; that includes time, server, and user. This item holds no business logic, it
+3 ; only records debugging information.
+4 ; @RETURNS A the PSSXML string representing the header element.
+5 ;
+6 NEW PSSXML
+7 SET PSSXML="<Header>"
+8 SET PSSXML=PSSXML_$$HDRTIME^PSSHREQ
+9 SET PSSXML=PSSXML_$$HDRSERVR^PSSHREQ
+10 SET PSSXML=PSSXML_$$HDRMUSER^PSSHREQ
+11 SET PSSXML=PSSXML_"</Header>"
+12 ;
+13 ; Return composed header
+14 QUIT PSSXML
+15 ;
BODY(PSSGENES,PSSDRUGS) ;
+1 ; @DESC Builds the Body PSSXML element
+2 ; @PSSDRUGS drug list
+3 ; @RETURNS An PSSXML string representing the body element.
+4 ;
+5 NEW PSSXML,PSSDIEN
+6 ;
+7 SET PSSXML="<Body><drugCheck>"
+8 ;
+9 SET PSSXML=PSSXML_$$ATRIBUTE^PSSHRCOM("<checks prospectiveOnly","true")_" "_$$ATRIBUTE^PSSHRCOM("useCustomTables","false")_">"
+10 SET PSSXML=PSSXML_"<pgxDrugCheck>"
+11 SET PSSXML=PSSXML_$$GENES(.PSSGENES)
+12 SET PSSXML=PSSXML_"</pgxDrugCheck></checks>"
+13 ;
+14 IF +$ORDER(PSSDRUGS(0))
Begin DoDot:1
+15 SET PSSXML=PSSXML_"<prospectiveDrugs>"
+16 ;get drug info
+17 SET PSSXML=PSSXML_$$DRUGS(.PSSDRUGS)
+18 SET PSSXML=PSSXML_"</prospectiveDrugs>"
End DoDot:1
+19 ;
+20 SET PSSXML=PSSXML_"</drugCheck></Body>"
+21 QUIT PSSXML
+22 ;;
GENES(PSSGENES) ;
+1 ;PSSGENES(GENE,"GENOTYPE")=VINCI_Genotype - ex: PSSGENES(CYP2D6,"GENOTYPE")="*>*9/*10"
+2 ;PSSGENES(GENE,"PHENOTYPE")=VINCI_Phenotype - ex: PSSGENES(CYP2D6,"PHENOTYPE")="INTERMEDIATE/NORMAL/ULTRARAPID METABOLIZER"
+3 ;PSSGENES(GENE,"ACTIVITY_SCORE")=VINCI_ActivityScore - ex: PSSGENES(CYP2D6,"ACTIVITY_SCORE")="1-3"
+4 ;
+5 NEW PSSXML,PSSGENE,PSSGENO,PSSPHENO,PSSASCRE,PSSGTEST
+6 SET (PSSXML,PSSGENO,PSSPHENO,PSSASCRE)=""
+7 SET PSSGENE=""
FOR
SET PSSGENE=$ORDER(PSSGENES(PSSGENE))
if PSSGENE=""
QUIT
Begin DoDot:1
+8 SET PSSGENO=$GET(PSSGENES(PSSGENE,"GENOTYPE"))
+9 SET PSSPHENO=$GET(PSSGENES(PSSGENE,"PHENOTYPE"))
+10 SET PSSASCRE=$GET(PSSGENES(PSSGENE,"ACTIVITY_SCORE"))
+11 SET PSSGTEST=$SELECT(PSSGENO]"":"true",PSSPHENO]"":"true",PSSASCRE]"":"true",1:"false")
+12 SET PSSXML=PSSXML_"<genomicFinding>"
+13 SET PSSXML=PSSXML_"<gene>"_$$VNGENE(PSSGENE)_"</gene>"
+14 if PSSPHENO]""
SET PSSXML=PSSXML_"<phenoType>"_$$VNPHEN(PSSPHENO)_"</phenoType>"
+15 if PSSGENO]""
SET PSSXML=PSSXML_"<genoType>"_PSSGENO_"</genoType>"
+16 if PSSASCRE]""
SET PSSXML=PSSXML_"<activityScore>"_PSSASCRE_"</activityScore>"
+17 SET PSSXML=PSSXML_"<geneTested>"_PSSGTEST_"</geneTested>"
+18 SET PSSXML=PSSXML_"<testResultPending>"_"false"_"</testResultPending><tag/>"
+19 SET PSSXML=PSSXML_"</genomicFinding>"
End DoDot:1
+20 QUIT PSSXML
+21 ;
DRUGS(PSSDRUGS) ;constructing XML for drug info
+1 NEW PSSGCN,PSSDNM,PSSXML,PSSADNM,PSSAGCN,PSSIEN,PSSAIEN,PSSVUID,PSSAVUID,PSSON
+2 SET PSSXML=""
+3 FOR PSSIEN=0:0
SET PSSIEN=$ORDER(PSSDRUGS(PSSIEN))
if 'PSSIEN
QUIT
Begin DoDot:1
+4 SET (PSSAGCN,PSSAIEN,PSSDNM)=""
+5 SET PSSGCN=+$GET(PSSDRUGS(PSSIEN,"GCN"))
if 'PSSGCN
QUIT
+6 SET PSSDNM=$GET(PSSDRUGS(PSSIEN,"DRUGNAME"))
+7 SET PSSVUID=$GET(PSSDRUGS(PSSIEN,"VUID"))
+8 IF +PSSGCN
SET PSSAGCN=$$ATRIBUTE^PSSHRCOM("gcnSeqNo",PSSGCN)
+9 IF PSSDNM]""
SET PSSADNM=$$ATRIBUTE^PSSHRCOM("drugName",PSSDNM)
+10 SET PSSAIEN=$$ATRIBUTE^PSSHRCOM("ien",PSSIEN)
+11 SET PSSAVUID=$$ATRIBUTE^PSSHRCOM("vuid",PSSVUID)
+12 SET PSSON=$$ATRIBUTE^PSSHRCOM("orderNumber","Z;1;Prospect")
+13 SET PSSXML=PSSXML_"<drug "_PSSADNM_" "_PSSAGCN_" "_PSSAVUID_" "_PSSAIEN_" "_PSSON_" "_"/>"
End DoDot:1
+14 QUIT PSSXML
+15 ;
SETWEBS(PSSWS) ;Define server name and path
+1 SET PSSWS("SERVICE_NAME")="ORDER_CHECKS"
+2 SET PSSWS("PATH")="ordercheck"
+3 SET PSSWS("SERVER")="PEPS"
+4 QUIT
+5 ;
VNGENE(PSSVNG) ;Find Vendor Gene
+1 NEW PSSVNL,PSSVNGX,PSSVNIEN,PSSVNRS
+2 SET PSSVNIEN=0
+3 SET PSSVNGX=$$UP^XLFSTR(PSSVNG)
+4 FOR PSSVNL="C","B","D"
if PSSVNIEN
QUIT
SET PSSVNIEN=$ORDER(^PS(51.26,PSSVNL,PSSVNGX,0))
+5 IF 'PSSVNIEN
QUIT PSSVNG
+6 SET PSSVNRS=$PIECE($GET(^PS(51.26,PSSVNIEN,0)),"^",2)
IF PSSVNRS=""
QUIT PSSVNG
+7 QUIT PSSVNRS
+8 ;
VNPHEN(PSSVNP) ;Find Vendor Phenotype
+1 NEW PSSVNL,PSSVNPX,PSSVNIEN,PSSVNRS
+2 SET PSSVNIEN=0
+3 SET PSSVNPX=$$UP^XLFSTR(PSSVNP)
+4 FOR PSSVNL="C","B","D"
if PSSVNIEN
QUIT
SET PSSVNIEN=$ORDER(^PS(51.28,PSSVNL,PSSVNPX,0))
+5 IF 'PSSVNIEN
QUIT PSSVNP
+6 SET PSSVNRS=$PIECE($GET(^PS(51.28,PSSVNIEN,0)),"^",2)
IF PSSVNRS=""
QUIT PSSVNP
+7 QUIT PSSVNRS