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

PXRMCWH1.m

Go to the documentation of this file.
  1. PXRMCWH1 ;ISP/RFR - COMPUTED FINDINGS FOR TERATOGENIC DRUGS;Dec 17, 2020@14:27
  1. ;;2.0;CLINICAL REMINDERS;**45,71**;Feb 4, 2005;Build 43
  1. Q
  1. DEFGRACE() ;Return default grace period when none is specified
  1. Q "4W"
  1. DOCSTAT(DFN,NGET,BDT,EDT,NFOUND,TEST,DATE,DATA,TEXT) ;Computed finding for
  1. ;documentation on file
  1. N WHTYPE,WHSDIR,IDX,ELEMENTS,ELEMENT,WHGRACE,WHDOCDT,SOURCE
  1. S WHSDIR=$S($G(NGET)<0:1,1:-1)
  1. S NGET=$S($G(NGET)<0:-NGET,1:$G(NGET))
  1. S TEST=$S($G(TEST)'="":$$UP^XLFSTR(TEST),1:"PREGNANCIES")
  1. S WHTYPE("PREGNANCIES")="P"_U_"Pregnancy"_U_"pregnancy"_U_"PREGNANCY STATE"_U_"PREGNANCY STATUS"
  1. S WHTYPE("LACTATIONS")="L"_U_"Lactation"_U_"lactation"_U_"LACTATION STATE"_U_"LACTATION STATUS"
  1. I $P(TEST,U,2)="DATA" S DATA(1,"DIALOG")=1,DATA(1,"PACKAGE")="WOMEN'S HEALTH",DATA(1,"PACKAGE PREFIX")="WV"
  1. S WHGRACE=$$GETGRACE(TEST)
  1. S TEST=$P(TEST,U)
  1. S WHTYPE=$P(WHTYPE(TEST),U)
  1. S ELEMENTS("DOCUMENTATION STATUS")=2
  1. S ELEMENTS($P(WHTYPE(TEST),U,4))=2
  1. I TEST="PREGNANCIES" D
  1. .S ELEMENTS("MEDICALLY UNABLE TO CONCEIVE")=2
  1. .S ELEMENTS("MEDICAL REASON")=1
  1. .S ELEMENTS("TRYING TO BECOME PREGNANT")=2
  1. .S ELEMENTS("CONTRACEPTIVE METHOD USED")=2
  1. .S ELEMENTS("LAST MENSTRUAL PERIOD DATE")=1
  1. .S ELEMENTS("EDD")=1
  1. .S ELEMENTS("PREGNANCY END DATE")=1
  1. .S ELEMENTS("PREGNANCY LIKELIHOOD")=2
  1. .S ELEMENTS("REASON PREGNANCY ENDED")=1
  1. .S ELEMENTS("OVERRIDE CALCULATED EDD REASON")=1
  1. I TEST="LACTATIONS" D
  1. .S ELEMENTS("END DATE")=1
  1. S DATE(1)=$P($$NOW^PXRMDATE,"."),TEST(1)=1
  1. S TEXT(1)=$S($G(DATA(1,"DIALOG"))=1:" ",1:"")_"No documented "_$P(WHTYPE(TEST),U,3)_" status."
  1. D GETDATA^WVRPCPT("PXRMWHDATA",DFN,WHTYPE,$G(BDT),$G(EDT),NGET,WHSDIR,DATE(1))
  1. F IDX=1:1:$G(^TMP("PXRMWHDATA",$J)) D
  1. .S TEST(IDX)=1,DATA(IDX,"DATE/TIME")=$P($G(^TMP("PXRMWHDATA",$J,IDX,$P(WHTYPE(TEST),U,5)_" D/T ENTERED")),U)
  1. .S DATE(IDX)=$P(DATA(IDX,"DATE/TIME"),".")
  1. .S WHDOCDT=$P($G(^TMP("PXRMWHDATA",$J,IDX,$P(WHTYPE(TEST),U,5)_" D/T ENTERED")),U,2)
  1. .S DATA(IDX,$$UP^XLFSTR($P(WHTYPE(TEST),U,2))_" DAS")=$G(^TMP("PXRMWHDATA",$J,IDX,"RECORD ID"))
  1. .S DATA(IDX,$$UP^XLFSTR($P(WHTYPE(TEST),U,2))_" DATA SOURCE")=$P($G(^TMP("PXRMWHDATA",$J,IDX,"DATA SOURCE")),U,2)
  1. .S DATA(IDX,"VISIT")=$G(^TMP("PXRMWHDATA",$J,IDX,"VISIT STRING"))
  1. .S ELEMENT="" F S ELEMENT=$O(ELEMENTS(ELEMENT)) Q:ELEMENT="" D
  1. ..I $D(^TMP("PXRMWHDATA",$J,IDX,ELEMENT))>9 D Q
  1. ...S ELEMENT(1)=0 F S ELEMENT(1)=$O(^TMP("PXRMWHDATA",$J,IDX,ELEMENT,ELEMENT(1))) Q:'ELEMENT(1) D
  1. ....S DATA(IDX,ELEMENT,ELEMENT(1))=$P($G(^TMP("PXRMWHDATA",$J,IDX,ELEMENT,ELEMENT(1))),U,ELEMENTS(ELEMENT))
  1. ..I $D(^TMP("PXRMWHDATA",$J,IDX,ELEMENT))=1 D
  1. ...S DATA(IDX,ELEMENT)=$P($G(^TMP("PXRMWHDATA",$J,IDX,ELEMENT)),U,ELEMENTS(ELEMENT))
  1. ...I ELEMENT="EDD" D
  1. ....S DATA(IDX,(ELEMENT_"-GRACE"))=$$NEWDATE^PXRMDATE($G(DATA(IDX,ELEMENT)),"+",WHGRACE)
  1. ....S DATA(IDX,"TWENTY-EIGHT WEEKS' GESTATION")=$$NEWDATE^PXRMDATE($G(DATA(IDX,ELEMENT)),"-","12W")
  1. .I $P($G(^TMP("PXRMWHDATA",$J,IDX,"MEDICALLY UNABLE TO CONCEIVE")),U) D
  1. ..S TEXT(IDX)="Medically unable to conceive "
  1. ..N SUBTEXT S SUBTEXT=$P($G(^TMP("PXRMWHDATA",$J,IDX,"MEDICAL REASON")),U,ELEMENTS("MEDICAL REASON"))
  1. ..I SUBTEXT'="" S TEXT(IDX)=TEXT(IDX)_"("_SUBTEXT_") "
  1. ..S TEXT(IDX)=TEXT(IDX)_"documented on "_WHDOCDT
  1. .E S TEXT(IDX)=$P(WHTYPE(TEST),U,2)_" status "_$G(DATA(IDX,$P(WHTYPE(TEST),U,4)))_" documented on "_WHDOCDT
  1. .I $G(DATA(IDX,"DOCUMENTATION STATUS"))="INCOMPLETE" D
  1. ..I $G(DATA(IDX,$$UP^XLFSTR($P(WHTYPE(TEST),U,2))_" DATA SOURCE"))="ORDER ENTRY/RESULTS REPORTING" D
  1. ...S SOURCE="on the Cover Sheet"
  1. ..E S SOURCE="via the "_$$TITLE^XLFSTR($G(DATA(IDX,$$UP^XLFSTR($P(WHTYPE(TEST),U,2))_" DATA SOURCE")))_" software package"
  1. ..S TEXT(IDX)=TEXT(IDX)_" was entered "_SOURCE_" but the clinical reminder dialog was not completed"
  1. .S TEXT(IDX)=TEXT(IDX)_"."
  1. .I $P($G(^TMP("PXRMWHDATA",$J,IDX,$P(WHTYPE(TEST),U,4))),U)=1,TEST="PREGNANCIES" D
  1. ..S TEXT(IDX)=TEXT(IDX)_"\\LAST MENSTRUAL PERIOD: "_$P($G(^TMP("PXRMWHDATA",$J,IDX,"LAST MENSTRUAL PERIOD DATE")),U,2)
  1. ..I $P($G(^TMP("PXRMWHDATA",$J,IDX,"PREGNANCY END DATE")),U)>0 D
  1. ...S TEXT(IDX)=TEXT(IDX)_"\\PREGNANCY ENDED: "_$P($G(^TMP("PXRMWHDATA",$J,IDX,"PREGNANCY END DATE")),U,2)
  1. ..E S TEXT(IDX)=TEXT(IDX)_"\\EDD: "_$P($G(^TMP("PXRMWHDATA",$J,IDX,"EDD")),U,2)
  1. .I $P($G(^TMP("PXRMWHDATA",$J,IDX,$P(WHTYPE(TEST),U,4))),U)=0,TEST="LACTATIONS",$P($G(^TMP("PXRMWHDATA",$J,IDX,"END DATE")),U)>0 D
  1. ..S TEXT(IDX)=TEXT(IDX)_"\\END DATE: "_$P($G(^TMP("PXRMWHDATA",$J,IDX,"END DATE")),U,2)
  1. .I $G(DATA(1,"DIALOG"))=1 S TEXT(IDX)=" "_TEXT(IDX)
  1. I +$G(^TMP("PXRMWHDATA",$J))<0 D
  1. .S TEXT(1)=$S($G(DATA(1,"DIALOG"))=1:" ",1:"")_"Unable to retrieve documentation due to a Women's Health package "
  1. .S TEXT(1)=TEXT(1)_"error; "_$P(^TMP("PXRMWHDATA",$J),U,2)
  1. .S DATA(1,"DOCUMENTATION STATUS")="NO DOCUMENTATION"
  1. I +$G(^TMP("PXRMWHDATA",$J))=0 D
  1. .S DATA(1,"DOCUMENTATION STATUS")="NO DOCUMENTATION"
  1. S NFOUND=$S(+$G(^TMP("PXRMWHDATA",$J))>0:+$G(^TMP("PXRMWHDATA",$J)),1:1)
  1. K ^TMP("PXRMWHDATA",$J)
  1. Q
  1. GETGRACE(TEST) ;Return the EDD grace period
  1. S TEST=$G(TEST)
  1. Q $S($P(TEST,U,3)'="":$P(TEST,U,3),1:$$DEFGRACE)
  1. GETGRACD() ;Return number of days in the EDD grace period
  1. N CFIEN,RDIEN,PERIOD,CDT
  1. S CFIEN=+$O(^PXRMD(811.4,"B","VA-WH PATIENT DOCUMENTATION",0)) Q:'CFIEN 0
  1. S CFIEN=CFIEN_";PXRMD(811.4,"
  1. S RDIEN=+$O(^PXD(811.9,"B","VA-WH UPDATE PREGNANCY STATUS",0)) Q:'RDIEN 0
  1. S CFIEN("SUB")=+$O(^PXD(811.9,RDIEN,20,"B",CFIEN,0)) Q:'CFIEN("SUB") 0
  1. S PERIOD=$$GETGRACE($G(^PXD(811.9,RDIEN,20,CFIEN("SUB"),15)))
  1. S CDT=$$NEWDATE^PXRMDATE(DT,"+",PERIOD)
  1. Q $$FMDIFF^XLFDT(CDT,DT)
  1. ORDERCNT(DFN,NGET,BDT,EDT,NFOUND,TEST,DATE,DATA,TEXT) ;Computed finding for
  1. ;number of unsafe orders returned by GETORDRS^WVRPCPT1 (TIU object driver)
  1. N RETURN,TYPE
  1. S TYPE=$$UP^XLFSTR($E($G(TEST),1))
  1. I "^P^L^"'[(U_TYPE_U) S NFOUND=0 Q
  1. ;BRANCHING LOGIC EXECUTES BEFORE TIU OBJECT
  1. I '$D(^TMP("WVGETORDERS",$J,TYPE)) S RETURN=$$GETORDRS^WVRPCPT1(DFN,TYPE,1)
  1. S NFOUND=1,DATA(NFOUND,"COUNT")=+$G(^TMP("WVGETORDERS",$J,TYPE))
  1. S TEST(NFOUND)=$S(DATA(NFOUND,"COUNT")>0:1,1:0),DATE(NFOUND)=$P($$NOW^PXRMDATE,".")
  1. S TEXT(NFOUND)=$S(TEST(NFOUND):DATA(NFOUND,"COUNT"),1:"No")_" unsafe order"_$S(DATA(NFOUND,"COUNT")=1:" was",1:"s were")_" returned."
  1. K ^TMP("WVGETORDERS",$J,TYPE)
  1. I $D(RETURN) K @($P(RETURN,"@",2))
  1. Q
  1. PATIS(DFN,NGET,BDT,EDT,NFOUND,TEST,DATE,DATA,TEXT) ;Computed finding for
  1. ;determining if the patient is documented as pregnant or lactating on a
  1. ;date or within a date range
  1. N RETURN,DATES,ISWAS,EXTRA,CALEND
  1. S DATES("START")=$P($G(BDT),"."),DATES("END")=$P($G(EDT),".")
  1. I +DATES("START")<1 D
  1. .I +DATES("END")>1 S DATES("START")=+DATES("END"),DATES("END")=""
  1. .E S DATES("START")=$$TODAY^PXRMDATE
  1. S TEST=$S($G(TEST)'="":$$UP^XLFSTR(TEST),1:"PREGNANT"),NFOUND=1,RETURN=0
  1. S CALEND=$S(TEST="PREGNANT^DIALOG":1,1:0)
  1. I $P(TEST,U)="PREGNANT" D
  1. .S RETURN=$$ISPREG^WVUTL11(DFN,DATES("START"),DATES("END"),CALEND)
  1. .S DATA(NFOUND,"STATUS")=$S(RETURN=1:"PREGNANT",1:"NOT PREGNANT OR UNKNOWN")
  1. I $P(TEST,U)="LACTATING" D
  1. .S RETURN=$$ISLACT^WVUTL11(DFN,DATES("START"),DATES("END"),CALEND)
  1. .S DATA(NFOUND,"STATUS")=$S(RETURN=1:"LACTATING",1:"NOT LACTATING OR UNKNOWN")
  1. S TEST(NFOUND)=RETURN,DATE(NFOUND)=DATES("START")
  1. I +DATES("END")>1 S TEXT(NFOUND)="For the date range "_$$FMTE^XLFDT(DATES("START"))_" to "_$$FMTE^XLFDT(DATES("END"))_", ",ISWAS="was",EXTRA=$S(RETURN=1:" on at least one of those days",1:"")
  1. I +DATES("END")<1 S TEXT(NFOUND)="On "_$$FMTE^XLFDT(DATES("START"))_", ",ISWAS=$S(DATES("START")=DT:"is",1:"was")
  1. S TEXT(NFOUND)=TEXT(NFOUND)_"the patient "_ISWAS_" "_DATA(NFOUND,"STATUS")_$G(EXTRA)_"."
  1. Q
  1. ROCTEXT(DFN) ;TIU object that returns reminder evaluation information for
  1. ;inclusion in the text for a reminder order check
  1. N OUTPUT,RIEN,RNAME,NUM,CNT
  1. S OUTPUT=$NA(^TMP("PXRM ROC TEXT",$J))
  1. K @OUTPUT
  1. I '$D(^TMP("PXRM BL DATA",$J,"PXRHM")) S @OUTPUT@(1,0)="This object can only be used in the text for a reminder order check." Q "~@"_OUTPUT
  1. S RIEN=$G(^TMP("PXRM BL DATA",$J,"REMINDER IEN")),RNAME=$G(^TMP("PXRM BL DATA",$J,"REMINDER NAME")),CNT=0
  1. S NUM=0 F S NUM=+$O(^TMP("PXRM BL DATA",$J,"PXRHM",RIEN,RNAME,"TXT",NUM)) Q:NUM'>0 D
  1. .S CNT=CNT+1
  1. .S @OUTPUT@(CNT,0)="\\"_$G(^TMP("PXRM BL DATA",$J,"PXRHM",RIEN,RNAME,"TXT",NUM))
  1. K ^TMP("PXRM BL DATA",$J)
  1. I 'CNT S @OUTPUT@(1,0)="The reminder evaluation text is not available."
  1. Q "~@"_OUTPUT
  1. GETPREGT(DFN) ;TIU object that returns a summary for the most recent lab
  1. ;pregnancy test
  1. N OUTPUT,TERMIEN,TERMARR,FIEVAL,PXRMPID,TYPE,CNT,FIND,STATE,DATE,ERROR
  1. S OUTPUT=$NA(^TMP("PXRM PREGNANCY TEST",$J))
  1. K @OUTPUT
  1. S TERMIEN=+$O(^PXRMD(811.5,"B","VA-WH PREGNANCY TEST ORDERED",0))
  1. I 'TERMIEN D Q "~@"_OUTPUT
  1. .S @OUTPUT@(1,0)="ERROR: Could not find the VA-WH PREGNANCY TEST ORDERED reminder term."
  1. .S @OUTPUT@(2,0)=""
  1. D GETDATA^WVRPCPT("PXRMWHDATA",DFN,"P",,,1)
  1. S STATE=$P($G(^TMP("PXRMWHDATA",$J,1,"PREGNANCY STATE")),U,2)
  1. S DATE=$P($P($G(^TMP("PXRMWHDATA",$J,1,"PREGNANCY STATUS D/T ENTERED")),U),".")
  1. K ^TMP("PXRMWHDATA",$J)
  1. I STATE'="DO NOT KNOW" S @OUTPUT@(1,0)="" Q "~@"_OUTPUT
  1. S PXRMPID="PXRM"_TERMIEN_$H
  1. D TERM^PXRMLDR(TERMIEN,.TERMARR)
  1. S $P(TERMARR(20,1,0),U,8)=DATE,$P(TERMARR(20,1,0),U,11)=DT
  1. D IEVALTER^PXRMTERM(DFN,.TERMARR,.TERMARR,1,.FIEVAL)
  1. I $D(^TMP(PXRMPID,$J,TERMIEN)) D
  1. .S CNT=1
  1. .S TYPE="" F S TYPE=$O(^TMP(PXRMPID,$J,TERMIEN,TYPE)) Q:TYPE="" D
  1. ..S ERROR="" F S ERROR=$O(^TMP(PXRMPID,$J,TERMIEN,TYPE,ERROR)) Q:ERROR="" D
  1. ...S @OUTPUT@(CNT,0)=$G(^TMP(PXRMPID,$J,TERMIEN,TYPE,ERROR,TERMIEN))
  1. ...S CNT=CNT+1
  1. .K ^TMP(PXRMPID,$J,TERMIEN)
  1. I '$D(^TMP(PXRMPID,$J,TERMIEN)) D
  1. .S CNT=4
  1. .S FIND=0 F S FIND=$O(FIEVAL(FIND)) Q:'+FIND D
  1. ..I FIEVAL(FIND)=0 S CNT=1 Q
  1. ..S @OUTPUT@(CNT,0)=$$LJ^XLFSTR($P($G(FIEVAL(FIND,"ORDER")),U,2),42)
  1. ..S @OUTPUT@(CNT,0)=@OUTPUT@(CNT,0)_$$FMTE^XLFDT($P($G(FIEVAL(FIND,"START DATE")),"."))
  1. ..S @OUTPUT@(CNT,0)=@OUTPUT@(CNT,0)_" "_$$TITLE^XLFSTR($G(FIEVAL(FIND,"STATUS")))
  1. ..S CNT=CNT+1
  1. .Q:CNT=1
  1. .S @OUTPUT@(1,0)="The following laboratory test"_$S(CNT>5:"s were",1:" was")_" found:"
  1. .S @OUTPUT@(2,0)="TEST NAME START DATE STATUS"
  1. .S @OUTPUT@(3,0)=$$REPEAT^XLFSTR("=",65)
  1. S @OUTPUT@(CNT,0)=""
  1. Q "~@"_OUTPUT