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

AGGUL1.m

Go to the documentation of this file.
  1. AGGUL1 ;VNGT/HS/DLS - Miscellaneous AGG Utilities ; 08 Apr 2010 3:36 PM
  1. ;;1.0;PATIENT REGISTRATION GUI;;Nov 15, 2010
  1. ;
  1. ;
  1. Q
  1. ;
  1. FMTE(Y) ;EP - Convert Fileman Date/Time to 'MMM DD,CCYY HH:MM:SS' format.
  1. ;Description
  1. ; Receives Date (Y) in FileMan format and returns formatted date.
  1. ;
  1. ;Input
  1. ; Y - FileMan date/time (i.e. 3051024.123456).
  1. ;
  1. ;Output
  1. ; Date/Time in External format (i.e. OCT 24,2005 12:34:56).
  1. ;
  1. NEW DATM
  1. S DATM=$TR($$FMTE^DILIBF(Y,"5U"),"@"," ")
  1. I DATM["24:00" S DATM=$P(DATM," ",1,2)_" 00:00"
  1. Q DATM
  1. ;
  1. DATE(DATE) ;EP - Convert standard date/time to a FileMan date/time
  1. ;Input
  1. ; DATE - In a standard format
  1. ;Output
  1. ; -1 is if it couldn't convert to a FileMan date
  1. ; otherwise a standard FileMan date
  1. NEW %DT,X,Y
  1. I DATE[":" D
  1. . I DATE["/",$L(DATE," ")=3 S DATE=$P(DATE," ",1)_"@"_$P(DATE," ",2)_$P(DATE," ",3) Q
  1. . I $L(DATE," ")=3 S DATE=$P(DATE," ",1,2)_"@"_$P(DATE," ",3)
  1. . I $L(DATE," ")>3 S DATE=$P(DATE," ",1,3)_"@"_$P(DATE," ",4,99)
  1. S %DT="TS",X=DATE D ^%DT
  1. I Y=-1 S Y=""
  1. ;
  1. Q Y
  1. ;
  1. FMTMDY(DATE) ;EP - Convert fileman date to MM/DD/YYYY format
  1. ;Input
  1. ; DATE - In fileman format
  1. ;
  1. ;Output
  1. ; -1 if couldn't convert to MM/DD/YYYY format
  1. ; Otherwise, date in MM/DD/YYYY format
  1. ;
  1. Q $TR($$FMTE^XLFDT(DATE,"5Z"),"@"," ")
  1. ;
  1. TKO(STR,VAL) ;EP - Take off ending character
  1. ;
  1. ;Description
  1. ; This will take off the ending character at the end of
  1. ; a string
  1. ;Input
  1. ; STR - String of data
  1. ; VAL - Delimiter character
  1. ;Output
  1. ; same STR without the ending character
  1. ;
  1. I $G(STR)="" Q ""
  1. I $G(VAL)="" Q ""
  1. ;
  1. NEW LV
  1. S LV=$L(VAL)
  1. I $E(STR,$L(STR)-(LV-1),$L(STR))=VAL S STR=$E(STR,1,$L(STR)-LV)
  1. ;
  1. Q STR
  1. ;
  1. STRIP(STR,VAL) ;EP - Remove one or more trailing characters in a string.
  1. ;
  1. ;Description
  1. ; Removes one or more trailing characters
  1. ; at the end of a string.
  1. ;Input
  1. ; STR - String of data
  1. ; VAL - Delimiter character
  1. ;Output
  1. ; Same STR without the trailing character(s).
  1. ;
  1. I $G(STR)="" Q STR
  1. I $G(VAL)="" Q STR
  1. ;
  1. F Q:$E(STR,$L(STR))'=VAL S STR=$E(STR,1,($L(STR)-1))
  1. Q STR
  1. ;
  1. CTRL(X) ;EP - Strip out control characters
  1. I X'?.ANP F Y=1:1 I $E(X,Y)?.C Q:Y>$L(X)!(X="") S X=$E(X,1,Y-1)_$E(X,Y+1,999),Y=Y-1
  1. Q X
  1. ;
  1. TRIM(STR,VAL) ;EP - Remove one or more leading characters in a string.
  1. ;
  1. ;Description
  1. ; Removes one or more leading characters from a string.
  1. ;Input
  1. ; STR - String of data
  1. ; VAL - Delimiter character
  1. ;Output
  1. ; Same STR without the trailing character(s).
  1. ;
  1. I $G(STR)="" Q STR
  1. I $G(VAL)="" Q STR
  1. ;
  1. F Q:$E(STR,1)'=VAL S STR=$E(STR,2,($L(STR)))
  1. Q STR
  1. ;
  1. PTR(FIL,FLD,VVAL,VPEC) ;EP - Find alternate value for a pointer
  1. ;
  1. ; Input Parameters
  1. ; FIL = FileMan File #
  1. ; FLD = FileMan Field #
  1. ; VVAL = Data Value
  1. ; VPEC = Field from pointed to file, defaults to .01 if not defined
  1. ;
  1. NEW ARR1,VEDATA,VFILN,VEHDTA,VVALUE,VVVAL
  1. I $G(VPEC)="" S VPEC=.01
  1. ;
  1. I $G(VVAL)="" Q ""
  1. ; Get the Pointer Global Reference
  1. D FIELD^DID(FIL,FLD,"","POINTER","VEPAR")
  1. S VEDATA=$G(VEPAR("POINTER")),VEHDTA="^"_VEDATA_"0)"
  1. S VFILN=$P($G(@VEHDTA),U,2)
  1. S VFILN=$$STRIP^XLFSTR(VFILN,"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz")
  1. K VEPAR
  1. ;
  1. S VVVAL=$$GET1^DIQ(FIL,VVAL_",",FLD,"I") I VVVAL="" Q ""
  1. S VVALUE=$$GET1^DIQ(VFILN,VVVAL_",",VPEC,"E")
  1. ;B D FIELD^DID(VFILN,VPEC,"N","GLOBAL SUBSCRIPT LOCATION","ARR")
  1. ;S ARR1=ARR("GLOBAL SUBSCRIPT LOCATION")
  1. ;
  1. ;I VVAL'="" S VEHDTA="^"_VEDATA_VVAL_","_$P(ARR1,";",1)_")"
  1. ;
  1. ;S PEC=$P(ARR1,";",2)
  1. ;I VVAL'="" S VVALUE=$P($G(@VEHDTA),U,PEC)
  1. Q VVALUE
  1. ;
  1. STC(FIL,FLD,VAL) ; EP - Find a value for a set of codes code
  1. ; Input Parameters
  1. ; FIL = FileMan File Number
  1. ; FLD = FileMan Field Number
  1. ; VAL = Code Value
  1. ;
  1. NEW VEDATA,VEQFL,VEVL,VALUE
  1. S VEDATA=$P(^DD(FIL,FLD,0),U,3),VEQFL=0
  1. ;
  1. F I=1:1 S VEVL=$P(VEDATA,";",I) Q:VEVL="" D Q:VEQFL
  1. . S VALUE=$P(VEVL,":",2) I VAL=$P(VEVL,":",1) S VEQFL=1
  1. ;
  1. Q VALUE
  1. ;
  1. TMPFL(MODE,UID,DFN) ;EP - Open to 'R'ead, Open to 'W'rite, 'C'lose or 'D'elete
  1. ; temporary file designed for use when converting report text to RPC
  1. ; data strings. Note that UID and DFN are components of the file name.
  1. ;
  1. ; Input
  1. ; MODE(Required) - 'R'(Read),'W'(Write),'C'(Close),'D'(Delete)
  1. ; UID(Req'd for modes D,R,W) - Job identifier
  1. ; DFN(Req'd for modes D,R,W) - Patient IEN
  1. ; Output
  1. ; POP - 0 for success, 1 for failure
  1. ;
  1. N POP,HSPATH,HSFN
  1. S POP=1
  1. ;
  1. ; To close a file.
  1. I MODE="C" D CLOSE^%ZISH("AGGFILE")
  1. ;
  1. ; To Delete, Read-From, or Write-To a file.
  1. I "D/R/W"[MODE D
  1. .S HSPATH=$$DEFDIR^%ZISH("")
  1. .I HSPATH="" S HSPATH=$$PWD^%ZISH()
  1. .S HSFN=UID_"_"_$G(DFN)_".DAT"
  1. ;
  1. ; To delete a file
  1. I MODE="D" S POP=$$DEL^%ZISH(HSPATH,HSFN)
  1. ;
  1. ; To Read from or to Write to a file.
  1. I (MODE="R")!(MODE="W") D
  1. .D OPEN^%ZISH("AGGFILE",HSPATH,HSFN,MODE)
  1. Q POP
  1. ;
  1. HRN(DFN) ;EP - Patient Health Record Number
  1. ;
  1. ;Description
  1. ; Returns the patient's health record number
  1. ;Input
  1. ; DFN - Patient internal entry number
  1. ; DUZ(2) - Assumes DUZ(2) exists since it's defined by
  1. ; signing on to the system as the user's default
  1. ; facility
  1. ;Output
  1. ; HRN - Health Record number for the user's default
  1. ; facility
  1. ;
  1. I $G(DUZ(2))="" Q ""
  1. I $G(DFN)="" Q ""
  1. ;
  1. NEW HRN
  1. S HRN=$P($G(^AUPNPAT(DFN,41,DUZ(2),0)),U,2)
  1. I $P($G(^AUPNPAT(DFN,41,DUZ(2),0)),U,3)'="" S HRN="*"_HRN
  1. Q HRN
  1. ;
  1. HRNL(DFN,LOC) ;PEP - Patient's Health Record Number
  1. ; Input
  1. ; DFN - Patient's internal entry number
  1. ; LOC - Facility internal entry number (so does not depend on DUZ(2)
  1. ;
  1. I $G(LOC)="" Q ""
  1. I $G(DFN)="" Q ""
  1. NEW HRN
  1. S HRN=$P($G(^AUPNPAT(DFN,41,LOC,0)),U,2)
  1. I $P($G(^AUPNPAT(DFN,41,LOC,0)),U,3)'="" S HRN="*"_HRN
  1. Q HRN
  1. ;
  1. SENS(DFN) ;EP - Is patient sensitive flag
  1. ;Input
  1. ; DFN - Patient internal entry number
  1. NEW FLAG
  1. S FLAG=+$P($G(^DGSL(38.1,+DFN,0)),"^",2)
  1. S FLAG=$S(FLAG=1:"YES",1:"NO")
  1. Q FLAG
  1. ;
  1. CTY(DFN) ;EP - Combines city,state and zip
  1. NEW ADATA,RESULT,STN,AZIP,LZIP
  1. S ADATA=$G(^DPT(DFN,.11)) I ADATA="" Q ""
  1. S RESULT=$P(ADATA,U,4)
  1. I RESULT'="" S RESULT=RESULT_", "
  1. S STN=$P(ADATA,U,5)
  1. I STN'="" S RESULT=RESULT_$P(^DIC(5,STN,0),U,2)_" "
  1. S AZIP=$P(ADATA,U,6)
  1. S LZIP=$P(ADATA,U,12)
  1. S RESULT=RESULT_$S(LZIP'="":LZIP,1:AZIP)
  1. Q RESULT
  1. ;
  1. CHS(DFN,PAIR) ;EP - CHS Eligibility
  1. NEW C0,RESULT
  1. S C0=0,RESULT=""
  1. S C0=$O(^AUPNPAT(DFN,34,C0)) I 'C0 Q RESULT D
  1. . I $G(PAIR)=1 S RESULT=C0_$C(28)_$P($G(^AUPNELM(C0,0)),U,1) Q
  1. . S RESULT=$P($G(^AUPNELM(C0,0)),U,1)
  1. Q RESULT
  1. ;
  1. ALT(DFN) ;EP - Alternate Resources
  1. NEW RESULT,AGINSN1,AGINS,AGCAT,ISACTIVE,AGGUAR,AGSEL,AOPCOINS
  1. NEW DATEINEF,FIXLIST,INSGEND,MEDCARE,NEWSEQR,PHREC,POLH,RAILROAD
  1. NEW REC,RELPOLHO,SPECSUB,TRUEPOLH,AGINSNN,PLANNAME,PLANPTR,MAX
  1. NEW GRPNUMB,COINS,ENTDAT,EFF,END
  1. D EP^AGINS
  1. D LOADCAT^AGCAT
  1. S ISACTIVE=0
  1. S N=0
  1. F S N=$O(AGINS(N)) Q:N="" D
  1. . S EFF=$P(AGINS(N),U,5),END=$P(AGINS(N),U,6)
  1. . I $$ISACTIVE^AGINSUPD(EFF,END) S ISACTIVE=1
  1. I 'ISACTIVE S RESULT="NO"
  1. I ISACTIVE S RESULT="YES"
  1. Q RESULT
  1. ;
  1. MREC(DFN) ;EP - Status of Medical Record
  1. NEW RESULT,VAL
  1. S VAL=$P($G(^AUPNPAT(DFN,41,DUZ(2),0)),U,4)
  1. I VAL="" Q ""
  1. Q VAL_$C(28)_$P(^AUTTDIS(VAL,0),U,1)
  1. ;
  1. AOB(DFN) ;EP - Assign of Benefits
  1. NEW RESULT,DATE
  1. S DATE=""
  1. S DATE=$O(^AUPNPAT(DFN,71,"B",DATE),-1)
  1. I 'DATE Q ""
  1. Q $$FMTE^AGGUL1(DATE)
  1. ;
  1. ROI(DFN) ;EP - Release of Information
  1. NEW RESULT,DATE
  1. S DATE=""
  1. S DATE=$O(^AUPNPAT(DFN,36,"B",DATE),-1)
  1. I 'DATE Q ""
  1. Q $$FMTE^AGGUL1(DATE)
  1. ;
  1. ADR(PATDFN,FORCE) ; EP - Update PREVIOUS MAIL ADDRESSES
  1. ; Copied and modified from AGUTILS
  1. S FORCE=$G(FORCE)
  1. ; Quit if they already have a historical address
  1. I FORCE="F" Q:$O(^AUPNPAT(PATDFN,83,0))
  1. NEW ADDREC,DIE,DIC,DR,DA
  1. S DA(1)=PATDFN
  1. S DIC="^AUPNPAT("_DA(1)_",83,"
  1. S DIC(0)="L"
  1. S X=""""_DT_""""
  1. D ^DIC
  1. I Y<0 Q
  1. S ADDREC=+Y
  1. ;
  1. ;get the current ADDRESS VALUES
  1. NEW AGSTR1,AGSTR2,AGSTR3,AGCITY,AGSTATE,AGZIP,AGHPHONE
  1. S AGSTR1=$$GET1^DIQ(2,PATDFN_",",.111)
  1. S AGSTR2=$$GET1^DIQ(2,PATDFN_",",.112)
  1. S AGSTR3=$$GET1^DIQ(2,PATDFN_",",.113)
  1. S AGCITY=$$GET1^DIQ(2,PATDFN_",",.114)
  1. S AGSTATE=$$GET1^DIQ(2,PATDFN_",",.115)
  1. I $G(AGSTATE)'="" I AGSTATE'=+AGSTATE S AGSTATE=$O(^DIC(5,"B",AGSTATE,""))
  1. S AGZIP=$S($$GET1^DIQ(2,PATDFN_",",.1112,"E")'="":$$GET1^DIQ(2,PATDFN_",",.1112,"E"),1:$$GET1^DIQ(2,PATDFN_",",.116))
  1. S AGHPHONE=$$GET1^DIQ(2,PATDFN_",",.131)
  1. ;
  1. K DIE,DIC,DR,DA,DIR
  1. S DA=ADDREC,DA(1)=PATDFN,IENS=$$IENS^DILF(.DA)
  1. S DIE="^AUPNPAT("_DA(1)_",83,"
  1. I FORCE="F" D
  1. . S AGGUPD(9000001.83,IENS,.02)="AGSTR1",AGGUPD(9000001.83,IENS,.03)="AGSTR2",AGGUPD(9000001.83,IENS,.04)="AGSTR3"
  1. . S AGGUPD(9000001.83,IENS,.05)="AGCITY",AGGUPD(9000001.83,IENS,.06)="AGSTATE",AGGUPD(9000001.83,IENS,.07)="AGZIP"
  1. . S AGGUPD(9000001.83,IENS,.08)="AGHPHONE"
  1. . ;S DR=".02////AGSTR1;.03////AGSTR2;.04////AGSTR3;.05////AGCITY;.06////AGSTATE;.07////AGZIP;.08////AGHPHONE"
  1. I FORCE'="F" D
  1. . S AGGUPD(9000001.83,IENS,.02)=AGSTR1,AGGUPD(9000001.83,IENS,.03)=AGSTR2,AGGUPD(9000001.83,IENS,.04)=AGSTR3
  1. . S AGGUPD(9000001.83,IENS,.05)=AGCITY,AGGUPD(9000001.83,IENS,.06)=AGSTATE,AGGUPD(9000001.83,IENS,.07)=AGZIP
  1. . S AGGUPD(9000001.83,IENS,.08)=AGHPHONE
  1. . ;S DR=".02///^S X=AGSTR1;.03///^S X=AGSTR2;.04///^S X=AGSTR3;.05///^S X=AGCITY;.06///^S X=AGSTATE;.07///^S X=AGZIP;.08///^S X=AGHPHONE"
  1. D FILE^DIE("","AGGUPD","ERROR")
  1. Q
  1. ;
  1. EML(DFN) ; EP - Update PREVIOUS EMAIL ADDRESSES
  1. NEW ADDREC,DIE,DIC,DR,DA,AGEMAIL,AGGUPD,ERROR
  1. S DA(1)=DFN
  1. S DIC="^AUPNPAT("_DA(1)_",82,"
  1. S DIC(0)="L"
  1. S X=""""_DT_""""
  1. D ^DIC
  1. I Y<0 Q
  1. S ADDREC=+Y
  1. S AGEMAIL=$$GET1^DIQ(9000001,DFN_",",1802) I AGEMAIL="" Q
  1. S DA=ADDREC,DA(1)=DFN,IENS=$$IENS^DILF(.DA)
  1. S AGGUPD(9000001.82,IENS,.02)=AGEMAIL
  1. D FILE^DIE("","AGGUPD","ERROR")
  1. Q
  1. ;
  1. TRIB(DFN) ; EP - Get list of other tribes
  1. NEW RESULT,DA,IENS
  1. S RESULT=""
  1. S DA(1)=DFN,DA=0
  1. F S DA=$O(^AUPNPAT(DFN,43,DA)) Q:'DA D
  1. . S IENS=$$IENS^DILF(.DA)
  1. . S RESULT=RESULT_$$GET1^DIQ(9000001.43,IENS,.01,"E")_";"
  1. S RESULT=$$TKO^AGGUL1(RESULT,";")
  1. I RESULT="" S RESULT="NONE LISTED"
  1. Q RESULT