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

AMERERS.m

Go to the documentation of this file.
  1. AMERERS ; IHS/OIT/SCR - ROUTINES TO SUPPORT MERGE OF PCC DATA TO ERS DATA ;
  1. ;;3.0;ER VISIT SYSTEM;**1,2,6,7**;MAR 03, 2009;Build 5
  1. SYNCHERA(AMERDA,AMERPCC) ;
  1. ;IHS/OIT/SCR 12/31/08
  1. ;This routine is called when it is determined that PCC admission data needs to replace shared ERS Visit
  1. ;file admission information
  1. ; Compare ER "Presenting Complaint" to VISIT "Chief Complaint"
  1. ;N AMERVVAL,AMEREVAL,AMERDUZ,AMERSTRG,AMEREDTS
  1. N AMERVVAL,AMEREVAL,AMERDUZ,AMERSTRG,AMEREDTS,AMERDR ;IHS/OIT/SCR 071509
  1. ;S AMERDUZ=DUZ
  1. S AMEREVAL=$G(^AMERVSIT(AMERDA,1))
  1. S AMERVVAL=$G(^AUPNVSIT(AMERPCC,14))
  1. S AMERVVAL=$TR(AMERVVAL,";","~") ;IHS/OIT/SCR 05/07/09 patch 1 - don't try to save ";"
  1. ;S AMERAIEN=$$CREATAUD^AMEREDAU(AMERDA,AMERDUZ) Q:AMERAIEN<0 ;CREATE AN AUDIT FILE RECORD
  1. I (AMEREVAL'=AMERVVAL) D
  1. .Q:AMERVVAL=""
  1. .;KEEP THE PCC VISIT INFO - PUT IT INTO THE AMER VISIT
  1. .NEW AMUPD
  1. .S AMUPD(9009080,AMERDA_",",1)=AMERVVAL
  1. .D FILE^DIE("","AMUPD","ERROR")
  1. .;S AMERDR="1////"_AMERVVAL
  1. .;D DIE^AMEREDIT(AMERDA,AMERDR)
  1. .;D NOW^%DTC
  1. .;S AMERSTRG="1;"_X_";"_AMEREVAL_";"_AMERVVAL_";Other;CHIEF COMPLAINT;Silent PCC SYNCH"
  1. .;S AMEREDTS=AMERSTRG
  1. .;D:AMEREDTS'="" MULTAUDT^AMEREDAU(AMEREDTS,AMERAIEN)
  1. .Q
  1. ; GET THE DEPARTURE OUT TIME FROM VISIT AND COMPARE TO CHECK OUT TIME IN ER VISIT
  1. S AMEREVAL=$P($G(^AMERVSIT(AMERDA,6)),U,2) ; AMERDEPT IS DEPARTURE TIME
  1. ;S AMERVVAL=$$CODT^APCLV(AMERPCC,"I")
  1. S AMERVVAL=$P(^AUPNVSIT(AMERPCC,0),"^",18) ;CHECKOUT TIME
  1. I (AMEREVAL'=AMERVVAL) D
  1. .Q:AMERVVAL=""
  1. .;KEEP THE PCC VISIT INFO - PUT IT INTO THE AMER VISIT
  1. .S AMERDR="6.2////"_AMERVVAL
  1. .D DIE^AMEREDIT(AMERDA,AMERDR)
  1. .;D NOW^%DTC
  1. .;S AMERSTRG="1;"_X_";"_$$EDDISPL^AMEREDAU(AMEREVAL,"D")_";"_$$EDDISPL^AMEREDAU(AMERVVAL,"D")_";Other;CHECK OUT TIME;Silent PCC SYNCH"
  1. .;S AMEREDTS=AMERSTRG
  1. .;D:AMEREDTS'="" MULTAUDT^AMEREDAU(AMEREDTS,AMERAIEN)
  1. .Q
  1. Q
  1. SYNCHERX(AMERDA,AMERPCC) ;EP from AMEREDIT and AMERPCC2
  1. ;IHS/OIT/SCR 12/29/08
  1. ;This routine is called when it is determined that PCC DX need to replace the ER VISIT file DXs.
  1. ;0. REMOVE ALL DX FROM ERS SO DX GO BACK IN SAME INDEX AS PCC ARRA
  1. ;1. GET ALL DX FROM PCC
  1. ;2. REPLACE THE PRIMARY DX INFO WITH THE FIRST DX
  1. ;3. REPLACE EACH DX NODE IN ERS WITH THAT PCC DX NODE
  1. N AMERDXS,AMERINDX,AMERVERR,AMERDR,AMERONAR,AMERODX,AMEROLD,AMERNEW,AMERPDX,AMERNNAR,AMERSTRG,AMERAIEN,AMERDUZ
  1. N AMEREDNM,AMEREDTS,AMERDIE,AMERERR,DA,DIC,X,Y,DIK,AMEROFST
  1. N AMERPOV
  1. ;
  1. S AMEREDTS=""
  1. ;S AMEROFST=0
  1. S AMERERR=0
  1. ;S AMEREDNM=1
  1. ;S AMERDUZ=DUZ ;WHO EVER IS USING THIS APPLICATION WHEN THIS ROUTINE IS CALLED
  1. ;S AMERAIEN=$$CREATAUD^AMEREDAU(AMERDA,AMERDUZ) Q:AMERAIEN<0 ;CREATE AN AUDIT FILE RECORD
  1. ;
  1. ;Clear out exisiting AMER VISIT POV entries
  1. S AMERINDX=0
  1. F S AMERINDX=$O(^AMERVSIT(AMERDA,5,AMERINDX)) Q:(AMERINDX="") D
  1. .S DA(1)=AMERDA,DA=AMERINDX
  1. .S DIK="^AMERVSIT(DA(1),5,"
  1. .D ^DIK,EN^DIK ; Delete identified entry and re-index diagnosis field
  1. .Q
  1. ;
  1. ;Clear out primary Dx and Narrative
  1. D
  1. . NEW DIE,DA,DR
  1. . S DIE="^AMERVSIT("
  1. . S DA=AMERDA
  1. . S DR="5.2////@;5.3////@"
  1. . L +^AMERVSIT(DA):0 I $T D ^DIE L -^AMERVSIT(DA)
  1. ;
  1. ;AMER*3*6;Pull POV information using new call
  1. ;$$POV^AMERUTIL Returns
  1. ;AMERPOV(CNT)=[1]^[2]^[3]^[4]^[5]
  1. ;[1] - ICD code
  1. ;[2] - P-Primary, S-Secondary
  1. ;[3] - Provider Narrative
  1. ;[4] - IEN Pointer to file 80
  1. ;[5] - ICD Description Value
  1. ;[6] - V POV IEN
  1. S AMERVERR=$$POV^AMERUTIL("",AMERPCC,.AMERPOV)
  1. ;
  1. ;Now update AMERVSIT
  1. S AMERINDX="" F S AMERINDX=$O(AMERPOV(AMERINDX)) Q:AMERINDX="" D
  1. . NEW DXNAR,DXIEN,DXPRM,DA,DIC,DIE,X,Y,DLAYGO,DR
  1. . ;
  1. . ;Retrieve values
  1. . S DXNAR=$P(AMERPOV(AMERINDX),U,3) ;Provider Narrative
  1. . S DXIEN=$P(AMERPOV(AMERINDX),U,4) ;POV IEN
  1. . S DXPRM=$P(AMERPOV(AMERINDX),U,2) ;P/S
  1. . ;
  1. . ;If primary save special fields
  1. . I DXPRM="P" D
  1. .. ;AMER*3.0*7;Changes to handle special characters in narrative
  1. .. NEW AMUPD
  1. .. S AMUPD(9009080,AMERDA_",",5.2)=DXIEN
  1. .. I DXNAR]"" S AMUPD(9009080,AMERDA_",",5.3)=DXNAR
  1. .. D FILE^DIE("","AMUPD","ERROR")
  1. .. ;S DIE="^AMERVSIT("
  1. .. ;S DA=AMERDA
  1. .. ;S DR="5.2////"_DXIEN
  1. .. ;I DXNAR]"" S DR=DR_";5.3////"_DXNAR
  1. .. ;L +^AMERVSIT(DA):0 I $T D ^DIE L -^AMERVSIT(DA)
  1. . ;
  1. . ;Save entry
  1. . S DA(1)=AMERDA,DIC="^AMERVSIT("_DA(1)_",5,",DIC(0)="L"
  1. . S DLAYGO=9009080.05
  1. . S X=DXIEN
  1. . K DO,DD D FILE^DICN
  1. . Q:DXNAR="" ;Quit if no narrative
  1. . Q:+Y<0
  1. . ;AMER*3.0*7;Changes to handle special characters in narrative
  1. . ;S DIE=DIC,DA(1)=AMERDA,DA=+Y,DR="1////"_DXNAR
  1. . ;D ^DIE
  1. . NEW IENS,AMUPD
  1. . S DA(1)=AMERDA,DA=+Y,IENS=$$IENS^DILF(.DA)
  1. . S AMUPD(9009080.05,IENS,1)=DXNAR
  1. . D FILE^DIE("","AMUPD","ERROR")
  1. ;
  1. Q
  1. ;
  1. SYNCHERD(AMERDA,AMERPCC) ;EP from AMEREDIT and AMERPCC1
  1. ;IHS/OIT/SCR 12/30/08
  1. ;This routine is called when it is determined that PCC PROVIDERS need to replace the ER VISIT file PROVIDERS.
  1. ;1. GET ALL PROVIDERS FROM PCC
  1. ;2. REPLACE THE ERS DISCHARGE PROVIDER INFO WITH THE INFO IN THE PCC PRIMARY PROVIDER IF THEY ARE DIFFERENT
  1. N AMERVINT,AMEREINT,AMERVERR,AMERDR,AMERSTRG,AMERAIEN,AMERDUZ,AMEREDTS
  1. S AMEREDTS=""
  1. ;S AMERDUZ=DUZ ;WHO EVER IS USING THIS APPLICATION WHEN THIS ROUTINE IS CALLED
  1. ;S AMERAIEN=$$CREATAUD^AMEREDAU(AMERDA,AMERDUZ) Q:AMERAIEN<0 ;CREATE AN AUDIT FILE RECORD
  1. S AMERVINT=$$PRIMPROV^APCLV(AMERPCC,"I") ;RETURNS ONE PCC PRIMARY PROVIDER
  1. S AMEREINT=$P($G(^AMERVSIT(AMERDA,6)),U,3) ; DISCHARGE PROVIDER
  1. I AMERVINT'=AMEREINT D
  1. .Q:AMERVINT=""
  1. .;UPDATE ERS DISCHARGE PROVIDER WITH THE PCC PRIMARY PROVIDER
  1. .S AMERDR=""
  1. .S AMERDR="6.3////"_AMERVINT
  1. .D:AMERDR'="" DIE^AMEREDIT(AMERDA,AMERDR)
  1. .;D NOW^%DTC
  1. .;S AMERSTRG="6.3;"_X_";"_$$EDDISPL^AMEREDAU(AMEREINT,"N")_";"_$$EDDISPL^AMEREDAU(AMERVINT,"N")_";Other;DISCHARGE PROVIDER;Silent PCC SYNCH"
  1. .;S AMEREDTS=AMERSTRG
  1. .;D:AMEREDTS'="" MULTAUDT^AMEREDAU(AMEREDTS,AMERAIEN)
  1. .Q
  1. Q
  1. SYNCHERS(AMERSTRT,AMEREND) ;EP from ERS reporting routines to synch a range of records
  1. ;IHS/OIT/SCR 12/29/08
  1. ;This routine is called to check all ER VISITS in a date range and update them with PCC DATA when
  1. ;the 'last edited' date on the PCC VISIT is more recent than the 'last edited' 'date in the ERS VISIT
  1. ; 1. CREATE AN ARRAY OF ERS IEN, PCC VISIT IEN AND ERS LAST UPDATE INFO FOR ERS VISITS IN THE DATE RANGE
  1. ; 2. FOR EACH ENTRY IN THAT ARRAY, GET THE PCC 'LAST UPDATE DATE'
  1. ; COMPARE PCC 'LAST UPDATE' TO ERS 'LAST UPDATE'
  1. ; IF PCC LAST UPDATE IS MORE CURRENTCALL SYNCHER ROUTINES TO UPDATE ERS VISIT
  1. N AMEREMOD,AMERPMOD,AMERPCC,AMERDA,AMERFRST,AMERLST,X,Y,X1,X2,AMERPAT
  1. S %DT=""
  1. S X=AMERSTRT
  1. D ^%DT
  1. S AMERFRST=Y
  1. S X=AMEREND
  1. D ^%DT
  1. S AMERLST=Y
  1. ;S AMERIDX1=AMERFRST
  1. S AMERIDX1=AMERFRST-1 ;IHS/OIT/SCR 2/27/09 not synching all entries when reports are run
  1. F S AMERIDX1=$O(^AMERVSIT("B",AMERIDX1)) Q:($P(AMERIDX1,".",1)>AMERLST)!(AMERIDX1="") D
  1. .I AMERIDX1<AMERFRST Q ;GET TO STARTING POINT
  1. .S AMERDA=$O(^AMERVSIT("B",AMERIDX1,""))
  1. .S AMEREMOD=$P($G(^AMERVSIT(AMERDA,12)),"^",6) ;DATE LAST MODIFIED IN ERS VISIT
  1. .S AMERPCC=$P($G(^AMERVSIT(AMERDA,0)),"^",3) ;PCC IEN FOR THIS VISIT
  1. .I AMERPCC<1 D Q ;IHS/OIT/SCR 05/07/09
  1. ..D EN^DDIOL("No PCC VISIT found for ERS VISIT IEN "_AMERDA_"!!","","!?5")
  1. ..D EN^DDIOL("Skipping this record","","!?10")
  1. ..Q
  1. .S AMERPMOD=$$DLM^APCLV(AMERPCC,"I")
  1. .I AMERPMOD>=$P(AMEREMOD,".",1) D
  1. ..D SYNCHERA(AMERDA,AMERPCC) ;SYNCH ADMISSION IFO
  1. ..D SYNCHERX(AMERDA,AMERPCC) ;SYNCH DIAG INFO
  1. ..D SYNCHERD(AMERDA,AMERPCC) ;SYNCH PRIMARY PROVIDER INFO
  1. ..;IHS/OIT/SCR 12/15/08 - update ER VISIT FILE with DATE LAST SYNCHED (NOW)
  1. ..D TIMESTMP^AMERSAV1(AMERDA)
  1. ..Q
  1. .S AMERPAT=$P($G(^AMERVSIT(AMERDA,0)),U,2)
  1. .D:AMERPAT>0 SYNCHERP(AMERPAT,AMERDA)
  1. .Q
  1. W !,"FINISHED SYNCHING ERS WITH CURRENT PCC DATA FROM "_AMERSTRT_" TO "_AMEREND
  1. Q
  1. SYNCHERP(AMERPAT,AMERDA) ; EP from AMER0, AMEREDIT AND AMERPCC
  1. ;SYNCHS MOST CURRENT PATIENT INFORMATION FOR DUPLICATED FIELDS HRN AND DOB
  1. N AMERDOB,AMERHRN,AMERDR ;IHS/OIT/SCR 071509 patch 2
  1. S AMERDOB=$$DOB^AUPNPAT(AMERPAT)
  1. S AMERHRN=$$HRN^AUPNPAT(AMERPAT,DUZ(2))
  1. I $P($G(^AMERVSIT(AMERDA,0)),U,12)'=AMERDOB D
  1. .S AMERDR=".12////"_AMERDOB
  1. .D DIE^AMEREDIT(AMERDA,AMERDR)
  1. .Q
  1. I $P($G(^AMERVSIT(AMERDA,0)),U,13)'=AMERHRN D
  1. .S AMERDR=".13////"_AMERHRN
  1. .D DIE^AMEREDIT(AMERDA,AMERDR)
  1. .Q
  1. Q